diff --git a/.eslintignore b/.eslintignore index 17e81e7daa..5f4c075bc1 100644 --- a/.eslintignore +++ b/.eslintignore @@ -43,6 +43,9 @@ packages/plasma-typo/* packages/**/jest.config.* examples/** +packages/plasma-giga/* +!packages/plasma-giga/src + packages/plasma-asdk/* !packages/plasma-asdk/src diff --git a/.github/config-ci.json b/.github/config-ci.json index 5798d48c4b..1deb1c713b 100644 --- a/.github/config-ci.json +++ b/.github/config-ci.json @@ -10,6 +10,7 @@ "sdds-dfa", "sdds-cs", "sdds-finportal", - "sdds-insol" + "sdds-insol", + "plasma-giga" ] } diff --git a/.github/meta-prod.js b/.github/meta-prod.js index f25e604924..9b12d696de 100644 --- a/.github/meta-prod.js +++ b/.github/meta-prod.js @@ -9,6 +9,9 @@ const commonScope = [ ]; module.exports = { + 'plasma-giga': { + scope: [...commonScope, 'plasma-themes', 'plasma-core'], + }, 'plasma-asdk': { scope: [...commonScope, 'plasma-tokens-b2b', 'plasma-themes', 'plasma-core'], }, diff --git a/.github/meta.js b/.github/meta.js index d6f0c98537..d303e2e268 100644 --- a/.github/meta.js +++ b/.github/meta.js @@ -8,6 +8,11 @@ const commonScope = [ ]; module.exports = { + 'plasma-giga': { + scope: [...commonScope, 'plasma-themes', 'plasma-new-hope'], + required: ['plasma-new-hope', 'plasma-core', 'core-themes'], + themes: 'plasma-themes', + }, 'plasma-asdk': { scope: [...commonScope, 'plasma-tokens-b2b', 'plasma-typo', 'plasma-themes', 'plasma-new-hope'], required: ['plasma-core'], diff --git a/.prettierignore b/.prettierignore index abec8361f2..344e2122b5 100644 --- a/.prettierignore +++ b/.prettierignore @@ -16,6 +16,7 @@ packages/sdds-dfa/api/ packages/sdds-cs/api/ packages/sdds-finportal/api/ packages/sdds-insol/api/ +packages/plasma-giga/api/ utils/plasma-cy-utils/lib diff --git a/packages/plasma-giga/.babelrc.js b/packages/plasma-giga/.babelrc.js new file mode 120000 index 0000000000..255c52aef0 --- /dev/null +++ b/packages/plasma-giga/.babelrc.js @@ -0,0 +1 @@ +../../.babelrc.js \ No newline at end of file diff --git a/packages/plasma-giga/.gitignore b/packages/plasma-giga/.gitignore new file mode 100644 index 0000000000..81f4891062 --- /dev/null +++ b/packages/plasma-giga/.gitignore @@ -0,0 +1,27 @@ +/components +/es +/cjs +/hocs +/hooks +/mixins +/node_modules +/tokens +/themes +/types +/utils +/index.* +/helpers +/_virtual +src-sc +src-linaria +src-emotion +emotion/cjs +emotion/es +styled-components/cjs +styled-components/es +linaria/cjs +linaria/es +build-sb + +css/* +!css/package.json \ No newline at end of file diff --git a/packages/plasma-giga/.npmignore b/packages/plasma-giga/.npmignore new file mode 100644 index 0000000000..158c3645fb --- /dev/null +++ b/packages/plasma-giga/.npmignore @@ -0,0 +1,9 @@ +/components/**/*.component-test* +/es/components/**/*.component-test* +src +.storybook +/package-lock.json +/index.d.ts.map +/index.js.map +/jest.config.js +/tsconfig.json diff --git a/packages/plasma-giga/.npmrc b/packages/plasma-giga/.npmrc new file mode 120000 index 0000000000..cba44bb384 --- /dev/null +++ b/packages/plasma-giga/.npmrc @@ -0,0 +1 @@ +../../.npmrc \ No newline at end of file diff --git a/packages/plasma-giga/.storybook/decoratorThemes.tsx b/packages/plasma-giga/.storybook/decoratorThemes.tsx new file mode 100644 index 0000000000..29c0053b09 --- /dev/null +++ b/packages/plasma-giga/.storybook/decoratorThemes.tsx @@ -0,0 +1,85 @@ +import React from 'react'; +import type { Decorator } from '@storybook/react'; +import { createGlobalStyle } from 'styled-components'; +import { plasma_giga__light, plasma_giga__dark } from '@salutejs/plasma-themes'; + +import { ViewContainer } from '../src/components/ViewContainer/ViewContainer'; + +const DocumentStyle = createGlobalStyle` + html:root { + min-height: 100vh; + background-color: var(--surface-solid-primary); + } + + a { + color: var(--text-primary); + text-decoration: underline; + + &:hover { + color: lighten(var(--text-primary), 30%); + } + + &:active { + color: darken(var(--text-primary), 30%); + } + } +`; +/* stylelint-enable */ + +export const PLASMA_GIGA_LIGHT_THEME = 'plasma-giga:light'; +export const PLASMA_GIGA_DARK_THEME = 'plasma-giga:dark'; +export const DEFAULT_MODE = 'default'; +export const ON_DARK_MODE = 'onDark'; +export const ON_LIGHT_MODE = 'onLight'; + +const themes = { + [PLASMA_GIGA_LIGHT_THEME]: createGlobalStyle(plasma_giga__light), + [PLASMA_GIGA_DARK_THEME]: createGlobalStyle(plasma_giga__dark), +}; + +type ViewType = { + style?: object; + view?: 'onDark' | 'onLight'; +}; + +const viewMap: Record<string, ViewType> = { + default: { + style: undefined, + view: undefined, + }, + onDark: { + style: { + background: '#1a1a1a', + color: 'white', + margin: '3rem', + 'border-radius': '1rem', + }, + view: 'onDark', + }, + onLight: { + style: { + background: '#ededed', + color: 'black', + margin: '3rem', + 'border-radius': '1rem', + }, + view: 'onLight', + }, +}; + +export const withTheme: Decorator = (Story, context) => { + const theme = context.globals.theme; + const viewContainerType = viewMap[context.globals.viewContainer]; + + const Theme = themes[theme]; + + return ( + <div style={viewContainerType.style}> + <ViewContainer view={viewContainerType.view}> + <Theme /> + <DocumentStyle /> + <Story {...context} /> + </ViewContainer> + </div> + ); +}; diff --git a/packages/plasma-giga/.storybook/decoratorToast.tsx b/packages/plasma-giga/.storybook/decoratorToast.tsx new file mode 100644 index 0000000000..ed9fc787d9 --- /dev/null +++ b/packages/plasma-giga/.storybook/decoratorToast.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import type { Decorator } from '@storybook/react'; +import { ToastProvider } from '../src/components/Toast'; + +export const withToast: Decorator = (Story) => ( + <ToastProvider> + <Story /> + </ToastProvider> +); diff --git a/packages/plasma-giga/.storybook/docsPage.tsx b/packages/plasma-giga/.storybook/docsPage.tsx new file mode 100644 index 0000000000..4c922f1adb --- /dev/null +++ b/packages/plasma-giga/.storybook/docsPage.tsx @@ -0,0 +1,11 @@ +import { Description, Primary, Subtitle, Title, Controls } from '@storybook/addon-docs'; + +export const docsPage = () => ( + <> + <Title /> + <Subtitle /> + <Description /> + <Primary /> + <Controls /> + </> +); diff --git a/packages/plasma-giga/.storybook/main.ts b/packages/plasma-giga/.storybook/main.ts new file mode 100644 index 0000000000..fa249efa64 --- /dev/null +++ b/packages/plasma-giga/.storybook/main.ts @@ -0,0 +1,50 @@ +import { mergeConfig } from 'vite'; +import type { StorybookConfig } from '@storybook/react-vite'; +import linaria from '@linaria/vite'; + +const USE_EMOTION_COMPONENTS = process.env.USE_EMOTION_COMPONENTS || false; + +const storyMap = { + 'styled-components': ['../src/**/*.stories.tsx'], + emotion: ['../src-emotion/**/*.stories.tsx'], +}; + +const stories = ['../README.stories.mdx']; + +if (USE_EMOTION_COMPONENTS) { + stories.push(...storyMap['emotion']); +} else { + // default + stories.push(...storyMap['styled-components']); +} + +const config: StorybookConfig = { + staticDirs: ['public'], + stories, + addons: ['@storybook/addon-essentials'], + framework: { + name: '@storybook/react-vite', + options: {}, + }, + core: { + disableTelemetry: true, + }, + docs: { + autodocs: true, + defaultName: 'Docs', + }, + async viteFinal(config) { + return mergeConfig(config, { + base: '', + resolve: { + dedupe: ['react', 'react-dom', 'styled-components'], + preserveSymlinks: true, + }, + build: { + sourcemap: false, + }, + }); + }, +}; + +export default config; diff --git a/packages/plasma-giga/.storybook/manager-head.html b/packages/plasma-giga/.storybook/manager-head.html new file mode 100644 index 0000000000..c0435a8f2e --- /dev/null +++ b/packages/plasma-giga/.storybook/manager-head.html @@ -0,0 +1,11 @@ +<link rel="stylesheet" href="https://cdn-app.sberdevices.ru/shared-static/0.0.0/styles/SBSansText.0.2.0.css"> +<link rel="stylesheet" href="https://cdn-app.sberdevices.ru/shared-static/0.0.0/styles/SBSansDisplay.0.2.0.css"> +<link rel="icon" href="sb-favicon.png"/> + +<style> + body { + font-family: 'SB Sans Text', Helvetica, Arial, sans-serif; + margin: 0; + padding: 0; + } +</style> diff --git a/packages/plasma-giga/.storybook/manager.js b/packages/plasma-giga/.storybook/manager.js new file mode 100644 index 0000000000..c06aed62ab --- /dev/null +++ b/packages/plasma-giga/.storybook/manager.js @@ -0,0 +1,6 @@ +import { addons } from '@storybook/addons'; +import theme from './theme'; + +addons.setConfig({ + theme, +}); diff --git a/packages/plasma-giga/.storybook/preview-head.html b/packages/plasma-giga/.storybook/preview-head.html new file mode 100644 index 0000000000..8899b6275c --- /dev/null +++ b/packages/plasma-giga/.storybook/preview-head.html @@ -0,0 +1,30 @@ +<link rel="stylesheet" href="https://cdn-app.sberdevices.ru/shared-static/0.0.0/styles/SBSansText.0.2.0.css"> +<link rel="stylesheet" href="https://cdn-app.sberdevices.ru/shared-static/0.0.0/styles/SBSansDisplay.0.2.0.css"> +<style> + /* stylelint-disable-next-line selector-nested-pattern */ + body { + margin: 0; + padding: 0 !important; + + /* stylelint-disable-next-line string-quotes */ + font-family: "SB Sans Text", Helvetica, Arial, sans-serif; + } + + .docblock-source { + box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.05) !important; + } + + .docblock-argstable tbody { + box-shadow: inset rgba(0, 0, 0, 0.16), + 0px 1px 4px rgba(0, 0, 0, 0.05) !important; + } + + .sbdocs-preview { + background: var(--background-primary) !important; + box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.05) !important; + } + + .sbdocs-table { + color: #080808; + } +</style> diff --git a/packages/plasma-giga/.storybook/preview.tsx b/packages/plasma-giga/.storybook/preview.tsx new file mode 100644 index 0000000000..4e367d8b0c --- /dev/null +++ b/packages/plasma-giga/.storybook/preview.tsx @@ -0,0 +1,87 @@ +import type { Preview } from '@storybook/react'; + +import storybookTheme from './theme'; +import { docsPage } from './docsPage'; +import { + withTheme, + PLASMA_GIGA_LIGHT_THEME, + PLASMA_GIGA_DARK_THEME, + DEFAULT_MODE, + ON_DARK_MODE, + ON_LIGHT_MODE, +} from './decoratorThemes'; +import { withToast } from './decoratorToast'; + +// Workaround: to make VoiceOver read russian text properly +if (typeof document !== 'undefined') { + document.documentElement.setAttribute('lang', 'ru'); +} + +const preview: Preview = { + decorators: [withTheme, withToast], + globalTypes: { + theme: { + description: 'Global theme for components', + defaultValue: PLASMA_GIGA_LIGHT_THEME, + toolbar: { + title: 'Theme', + items: [PLASMA_GIGA_LIGHT_THEME, PLASMA_GIGA_DARK_THEME], + }, + }, + viewContainer: { + description: 'ViewContainer mode for components', + defaultValue: DEFAULT_MODE, + toolbar: { + title: 'ViewContainer', + items: [DEFAULT_MODE, ON_DARK_MODE, ON_LIGHT_MODE], + }, + }, + }, + parameters: { + docs: { + page: docsPage, + theme: storybookTheme, + source: { type: 'code' }, + }, + options: { + storySort: { + method: 'alphabetical', + order: ['About', 'Layout', '*', 'Hooks'], + }, + }, + viewport: { + viewports: { + '375': { + name: '375x812', + styles: { + width: '375px', + height: '812px', + }, + }, + '768': { + name: '768x576', + styles: { + width: '768px', + height: '576px', + }, + }, + '1024': { + name: '1024x768', + styles: { + width: '1024px', + height: '768px', + }, + }, + '1920': { + name: '1920x1080', + styles: { + width: '1920px', + height: '1080px', + }, + }, + }, + }, + }, +}; + +export default preview; diff --git a/packages/plasma-giga/.storybook/public/images/320_320_0.jpg b/packages/plasma-giga/.storybook/public/images/320_320_0.jpg new file mode 100644 index 0000000000..430ef834dd Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/320_320_0.jpg differ diff --git a/packages/plasma-giga/.storybook/public/images/320_320_1.jpg b/packages/plasma-giga/.storybook/public/images/320_320_1.jpg new file mode 100644 index 0000000000..9c4bc766a0 Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/320_320_1.jpg differ diff --git a/packages/plasma-giga/.storybook/public/images/320_320_10.jpg b/packages/plasma-giga/.storybook/public/images/320_320_10.jpg new file mode 100644 index 0000000000..90911bc7c7 Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/320_320_10.jpg differ diff --git a/packages/plasma-giga/.storybook/public/images/320_320_11.jpg b/packages/plasma-giga/.storybook/public/images/320_320_11.jpg new file mode 100644 index 0000000000..8ab0bc0c62 Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/320_320_11.jpg differ diff --git a/packages/plasma-giga/.storybook/public/images/320_320_12.jpg b/packages/plasma-giga/.storybook/public/images/320_320_12.jpg new file mode 100644 index 0000000000..078d43e4d9 Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/320_320_12.jpg differ diff --git a/packages/plasma-giga/.storybook/public/images/320_320_2.jpg b/packages/plasma-giga/.storybook/public/images/320_320_2.jpg new file mode 100644 index 0000000000..b2597faf0c Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/320_320_2.jpg differ diff --git a/packages/plasma-giga/.storybook/public/images/320_320_3.jpg b/packages/plasma-giga/.storybook/public/images/320_320_3.jpg new file mode 100644 index 0000000000..c8c974a7ce Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/320_320_3.jpg differ diff --git a/packages/plasma-giga/.storybook/public/images/320_320_4.jpg b/packages/plasma-giga/.storybook/public/images/320_320_4.jpg new file mode 100644 index 0000000000..7f05e17c75 Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/320_320_4.jpg differ diff --git a/packages/plasma-giga/.storybook/public/images/320_320_5.jpg b/packages/plasma-giga/.storybook/public/images/320_320_5.jpg new file mode 100644 index 0000000000..56802388fa Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/320_320_5.jpg differ diff --git a/packages/plasma-giga/.storybook/public/images/320_320_6.jpg b/packages/plasma-giga/.storybook/public/images/320_320_6.jpg new file mode 100644 index 0000000000..336f18f096 Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/320_320_6.jpg differ diff --git a/packages/plasma-giga/.storybook/public/images/320_320_7.jpg b/packages/plasma-giga/.storybook/public/images/320_320_7.jpg new file mode 100644 index 0000000000..f2bdec59dc Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/320_320_7.jpg differ diff --git a/packages/plasma-giga/.storybook/public/images/320_320_8.jpg b/packages/plasma-giga/.storybook/public/images/320_320_8.jpg new file mode 100644 index 0000000000..7acdc55d91 Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/320_320_8.jpg differ diff --git a/packages/plasma-giga/.storybook/public/images/320_320_9.jpg b/packages/plasma-giga/.storybook/public/images/320_320_9.jpg new file mode 100644 index 0000000000..5ff9dc76cc Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/320_320_9.jpg differ diff --git a/packages/plasma-giga/.storybook/public/images/avocado.png b/packages/plasma-giga/.storybook/public/images/avocado.png new file mode 100644 index 0000000000..9f36ee9848 Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/avocado.png differ diff --git a/packages/plasma-giga/.storybook/public/images/favicon.png b/packages/plasma-giga/.storybook/public/images/favicon.png new file mode 100644 index 0000000000..0c08799afd Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/favicon.png differ diff --git a/packages/plasma-giga/.storybook/public/images/logo.png b/packages/plasma-giga/.storybook/public/images/logo.png new file mode 100644 index 0000000000..16326408ab Binary files /dev/null and b/packages/plasma-giga/.storybook/public/images/logo.png differ diff --git a/packages/plasma-giga/.storybook/public/sb-favicon.png b/packages/plasma-giga/.storybook/public/sb-favicon.png new file mode 100644 index 0000000000..8f236dfe9b Binary files /dev/null and b/packages/plasma-giga/.storybook/public/sb-favicon.png differ diff --git a/packages/plasma-giga/.storybook/theme.js b/packages/plasma-giga/.storybook/theme.js new file mode 100644 index 0000000000..cfc618a7ac --- /dev/null +++ b/packages/plasma-giga/.storybook/theme.js @@ -0,0 +1,26 @@ +import { create } from '@storybook/theming'; + +export default create({ + base: 'light', + + // UI + appBg: '#FFFFFF', + appContentBg: '#FFFFFF', + appBorderColor: 'rgba(0, 0, 0, 0.16)', + appBorderRadius: 4, + + colorPrimary: '#226AF1', + colorSecondary: '#226AF1', + + // Typography + fontBase: "'SB Sans Text', Helvetica, Arial, sans-serif", + + // Toolbar default and active colors + barTextColor: 'rgba(8, 8, 8, 0.56)', + barSelectedColor: '#226AF1', + barBg: '#FFFFFF', + + // Logo + brandTitle: 'PLASMA GIGA UI Kit', + brandUrl: 'https://plasma.sberdevices.ru', +}); diff --git a/packages/plasma-giga/LICENSE.txt b/packages/plasma-giga/LICENSE.txt new file mode 100644 index 0000000000..4ac192b87f --- /dev/null +++ b/packages/plasma-giga/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Salute Devices + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/plasma-giga/README.md b/packages/plasma-giga/README.md new file mode 100644 index 0000000000..52342c5f98 --- /dev/null +++ b/packages/plasma-giga/README.md @@ -0,0 +1,121 @@ +# Библиотека компонентов PLASMA GIGA + +Реализация компонентов для создания веб-приложений. + +## Использование + +Компоненты реализованы на [typescript](https://www.typescriptlang.org/) с помощью [react](https://reactjs.org/) , [styled-components](https://styled-components.com/) и [emotion](https://emotion.sh/); + +Использование данного пакета предполагает установку зависимостей: `react` & `react-dom`; + +Использование `styled-components` и `emotion` на проекте необязательно, так же как и использование `typescript`. + +**Но** для того чтобы компоненты работали корректно необходимо установить `styled-components` или `emotion`. + +### Установка пакета + +```bash +$ npm install --save react react-dom +$ npm install --save @salutejs/plasma-giga @salutejs/plasma-typo @salutejs/plasma-themes +``` + +Так же надо установить пакет styled-components + +```bash +$ npm install --save styled-components@5.3.1 +``` + +Или, если вы используете пакет @emotion + +```bash +$ npm install --save @emotion/styled @emotion/react @emotion/css +``` + +## Настройка при работе с пакетом `styled-components` + +Создайте компонент для подключения глобальных стилей: + +```jsx title="GlobalStyle.tsx" +import { createGlobalStyle } from 'styled-components'; +import { standard } from '@salutejs/plasma-typo'; +import { plasma_giga__light } from '@salutejs/plasma-themes'; + +const ThemeStyle = createGlobalStyle(plasma_giga__light); +const TypoStyle = createGlobalStyle(standard); + +export const GlobalStyle = () => ( + <> + <ThemeStyle /> + <TypoStyle /> + </> +); +``` + +## Настройка при работе с пакетом `@emotion` + +Создайте компонент для подключения глобальных стилей: + +```jsx title="GlobalStyle.tsx" +import { Global, css } from '@emotion/react'; +import { standard } from '@salutejs/plasma-typo'; +import { plasma_giga__light } from '@salutejs/plasma-themes'; + +const themeStyle = css(plasma_giga__light); +const typoStyle = css(standard); + +export const GlobalStyle = () => ( + <> + <Global styles={themeStyle} /> + <Global styles={typoStyle} /> + </> +); +``` + +### Корень приложения + +В корне приложения вызовите компонент глобальных стилей `GlobalStyle`: + +- Если вы используете [Create React App](https://create-react-app.dev), делайте вызов внутри `src/index.tsx`. +- Если вы используете [Next.js](https://nextjs.org/), создайте файл `pages/_app.tsx` и подключите стили в нем. + +Для корректной работы server side rendering приложение нужно обернуть `SSRProvider` (доступен в plasma-giga); + +### Использование компонентов + +Все компоненты styled-components доступны из директории `components` или напрямую из пакета: + +```jsx +// App.tsx +import { Button } from '@salutejs/plasma-giga'; +import { textAccent } from '@salutejs/plasma-themes/tokens/plasma-giga'; + +export const App = () => { + return ( + <Button>Hello, Plasma Giga!</Button> + + <p style={{color: textAccent}}> + Token usage example + </p> + ); +}; +``` + +#### `@emotion` + +Все компоненты `@emotion` доступны из директории `emotion`: + +```jsx +// App.tsx +import { Button } from '@salutejs/plasma-giga/emotion'; +import { textAccent } from '@salutejs/plasma-tokens/brands/plasma-giga'; + +export const App = () => { + return ( + <> + <Button>Hello, Plasma Giga!</Button> + + <p style={{ color: textAccent }}>Token usage example</p> + </> + ); +}; +``` diff --git a/packages/plasma-giga/README.stories.mdx b/packages/plasma-giga/README.stories.mdx new file mode 100644 index 0000000000..de68d4b2b8 --- /dev/null +++ b/packages/plasma-giga/README.stories.mdx @@ -0,0 +1,128 @@ +import { Meta } from "@storybook/addon-docs"; + +<Meta title="About" /> + +# Библиотека компонентов PLASMA GIGA + +Реализация компонентов для создания веб-приложений. + + +## Использование + +Компоненты реализованы на [typescript](https://www.typescriptlang.org/) с помощью [react](https://reactjs.org/) , [styled-components](https://styled-components.com/) и [emotion](https://emotion.sh/); + +Использование данного пакета предполагает установку зависимостей: `react` & `react-dom`; + +Использование `styled-components` и `emotion` на проекте необязательно, так же как и использование `typescript`. + +**Но** для того чтобы компоненты работали корректно необходимо установить `styled-components` или `emotion`. + +### Установка пакета + +```bash +$ npm install --save react react-dom +$ npm install --save @salutejs/plasma-giga @salutejs/plasma-typo @salutejs/plasma-themes +``` + +Так же надо установить пакет styled-components + +```bash +$ npm install --save styled-components@5.3.1 +``` + +Или, если вы используете пакет @emotion + +```bash +$ npm install --save @emotion/styled @emotion/react @emotion/css +``` + +## Настройка при работе с пакетом `styled-components` + +Создайте компонент для подключения глобальных стилей: + +```jsx title="GlobalStyle.tsx" +import { createGlobalStyle } from 'styled-components'; +import { standard } from '@salutejs/plasma-typo'; +import { plasma_giga__light } from '@salutejs/plasma-themes'; + +const ThemeStyle = createGlobalStyle(plasma_giga__light); +const TypoStyle = createGlobalStyle(standard); + +export const GlobalStyle = () => ( + <> + <ThemeStyle /> + <TypoStyle /> + </> +); +``` + +## Настройка при работе с пакетом `@emotion` + +Создайте компонент для подключения глобальных стилей: + +```jsx title="GlobalStyle.tsx" +import { Global, css } from '@emotion/react'; +import { standard } from '@salutejs/plasma-typo'; +import { plasma_giga__light } from '@salutejs/plasma-themes'; + +const themeStyle = css(plasma_giga__light); +const typoStyle = css(standard); + +export const GlobalStyle = () => ( + <> + <Global styles={themeStyle} /> + <Global styles={typoStyle} /> + </> +); +``` + +### Корень приложения + +В корне приложения вызовите компонент глобальных стилей `GlobalStyle`: + +- Если вы используете [Create React App](https://create-react-app.dev), делайте вызов внутри `src/index.tsx`. +- Если вы используете [Next.js](https://nextjs.org/), создайте файл `pages/_app.tsx` и подключите стили в нем. + +Для корректной работы server side rendering приложение нужно обернуть `SSRProvider` (доступен в plasma-giga); + +### Использование компонентов + +Все компоненты доступны из папки `components` или напрямую из пакета: + +```jsx +// App.tsx +import { Button } from '@salutejs/plasma-giga'; +import { textAccent } from '@salutejs/plasma-themes/tokens/plasma-giga'; + +export const App = () => { + return ( + <Button>Hello, Plasma Giga!</Button> + + <p style={{color: textAccent}}> + Token usage example + </p> + ); +}; +``` + +#### `@emotion` + +Все компоненты `@emotion` доступны из директории `emotion`: + +```jsx +// App.tsx +import { Button } from '@salutejs/plasma-giga/emotion'; +import { textAccent } from '@salutejs/plasma-tokens/brands/plasma-giga'; + +export const App = () => { + return ( + <> + <Button>Hello, Plasma Giga!</Button> + + <p style={{ color: textAccent }}> + Token usage example + </p> + </> + ); +}; +``` diff --git a/packages/plasma-giga/api-extractor.json b/packages/plasma-giga/api-extractor.json new file mode 100644 index 0000000000..c2b6c4e9cc --- /dev/null +++ b/packages/plasma-giga/api-extractor.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + "extends": "../../api-extractor.json", + "projectFolder": "." +} diff --git a/packages/plasma-giga/api/plasma-giga.api.md b/packages/plasma-giga/api/plasma-giga.api.md new file mode 100644 index 0000000000..c511878639 --- /dev/null +++ b/packages/plasma-giga/api/plasma-giga.api.md @@ -0,0 +1,4275 @@ +## API Report File for "@salutejs/plasma-giga" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +/// <reference types="react" /> + +import { AccordionItem } from '@salutejs/plasma-new-hope/styled-components'; +import { addFocus } from '@salutejs/plasma-new-hope/styled-components'; +import { addNotification } from '@salutejs/plasma-new-hope/styled-components'; +import { AlignProp } from '@salutejs/plasma-new-hope/types/components/Cell/Cell.types'; +import { AnchorHTMLAttributes } from 'react'; +import { AsProps } from '@salutejs/plasma-new-hope/styled-components'; +import { AvatarGroupProps } from '@salutejs/plasma-new-hope/styled-components'; +import { AvatarProps } from '@salutejs/plasma-new-hope/styled-components'; +import { BadgeProps } from '@salutejs/plasma-new-hope/styled-components'; +import { BaseAttachProps } from '@salutejs/plasma-new-hope/types/components/Attach/Attach.types'; +import { BaseboxProps } from '@salutejs/plasma-new-hope/styled-components'; +import { BaseCallbackChangeInstance } from '@salutejs/plasma-new-hope/types/components/Range/Range.types'; +import { BaseCallbackKeyboardInstance } from '@salutejs/plasma-new-hope/types/components/Range/Range.types'; +import { BaseProps } from '@salutejs/plasma-new-hope/types/components/Autocomplete/Autocomplete.types'; +import { BaseTabItemProps } from '@salutejs/plasma-new-hope/styled-components'; +import { BaseTabsProps } from '@salutejs/plasma-new-hope/styled-components'; +import { bodyL } from '@salutejs/plasma-themes/tokens'; +import { bodyLBold } from '@salutejs/plasma-themes/tokens'; +import { bodyM } from '@salutejs/plasma-themes/tokens'; +import { bodyMBold } from '@salutejs/plasma-themes/tokens'; +import { bodyS } from '@salutejs/plasma-themes/tokens'; +import { bodySBold } from '@salutejs/plasma-themes/tokens'; +import { bodyXS } from '@salutejs/plasma-themes/tokens'; +import { bodyXSBold } from '@salutejs/plasma-themes/tokens'; +import { bodyXXS } from '@salutejs/plasma-themes/tokens'; +import { bodyXXSBold } from '@salutejs/plasma-themes/tokens'; +import { BoldProps } from '@salutejs/plasma-new-hope/types/components/Typography/Typography.types'; +import { BreadcrumbsItem } from '@salutejs/plasma-new-hope/types/components/Breadcrumbs/Breadcrumbs.types'; +import { BreadcrumbsProps } from '@salutejs/plasma-new-hope/styled-components'; +import { ButtonBase } from '@salutejs/plasma-new-hope/styled-components'; +import { ButtonGroupProps } from '@salutejs/plasma-new-hope/styled-components'; +import { ButtonHTMLAttributes } from 'react'; +import { Calendar as Calendar_2 } from '@salutejs/plasma-new-hope/types/components/Calendar/Calendar.types'; +import { CalendarBaseProps } from '@salutejs/plasma-new-hope/styled-components'; +import { CalendarConfigProps } from '@salutejs/plasma-new-hope/types/components/Calendar/Calendar.types'; +import { CalendarDoubleProps } from '@salutejs/plasma-new-hope/styled-components'; +import { CalendarProps } from '@salutejs/plasma-new-hope/styled-components'; +import { CalendarRange } from '@salutejs/plasma-new-hope/types/components/Calendar/Calendar.types'; +import { CalendarStateType } from '@salutejs/plasma-new-hope/styled-components'; +import { CellProps } from '@salutejs/plasma-new-hope/styled-components'; +import { CellTextbox } from '@salutejs/plasma-new-hope/styled-components'; +import { CellTextboxLabel } from '@salutejs/plasma-new-hope/styled-components'; +import { CellTextboxSubtitle } from '@salutejs/plasma-new-hope/styled-components'; +import { CellTextboxTitle } from '@salutejs/plasma-new-hope/styled-components'; +import { ChangeEvent } from 'react'; +import { ChangeInstanceCallback } from '@salutejs/plasma-new-hope/types/components/DatePicker/RangeDate/RangeDate.types'; +import { CheckboxProps as CheckboxProps_2 } from '@salutejs/plasma-new-hope/types/components/Checkbox/Checkbox.types'; +import { ChipGroupProps } from '@salutejs/plasma-new-hope/types/components/ChipGroup/ChipGroup.types'; +import { ChipProps } from '@salutejs/plasma-new-hope/styled-components'; +import { closeNotification } from '@salutejs/plasma-new-hope/styled-components'; +import { ClosePlacementType } from '@salutejs/plasma-new-hope/styled-components'; +import { Col } from '@salutejs/plasma-new-hope/styled-components'; +import { ColCount } from '@salutejs/plasma-new-hope/styled-components'; +import { ColOffsetProps } from '@salutejs/plasma-new-hope/styled-components'; +import { ColProps } from '@salutejs/plasma-new-hope/styled-components'; +import { ColSizeProps } from '@salutejs/plasma-new-hope/styled-components'; +import type { ComboboxProps } from '@salutejs/plasma-new-hope'; +import { CommitInstanceCallback } from '@salutejs/plasma-new-hope/types/components/DatePicker/RangeDate/RangeDate.types'; +import { ComponentProps } from 'react'; +import { CounterProps } from '@salutejs/plasma-new-hope/styled-components'; +import { counterTokens } from '@salutejs/plasma-new-hope/styled-components'; +import { CustomHeaderTabsProps } from '@salutejs/plasma-new-hope/types/components/Tabs/Tabs.types'; +import { CustomHorizontalTabsProps } from '@salutejs/plasma-new-hope/types/components/Tabs/Tabs.types'; +import { CustomPopoverProps } from '@salutejs/plasma-new-hope/types/components/Popover/Popover.types'; +import { CustomToastProps } from '@salutejs/plasma-new-hope/types/components/Toast/Toast.types'; +import { CustomVerticalTabsProps } from '@salutejs/plasma-new-hope/types/components/Tabs/Tabs.types'; +import { DateInfo } from '@salutejs/plasma-new-hope/types/components/Calendar/Calendar.types'; +import { DatePickerCalendarProps } from '@salutejs/plasma-new-hope/types/components/DatePicker/DatePickerBase.types'; +import { datePickerClasses } from '@salutejs/plasma-new-hope/styled-components'; +import { DatePickerPlacement } from '@salutejs/plasma-new-hope/styled-components'; +import { DatePickerPlacementBasic } from '@salutejs/plasma-new-hope/styled-components'; +import { DatePickerPopoverProps } from '@salutejs/plasma-new-hope/types/components/DatePicker/SingleDate/SingleDate.types'; +import { DatePickerProps } from '@salutejs/plasma-new-hope/styled-components'; +import { DatePickerRangePlacement } from '@salutejs/plasma-new-hope/styled-components'; +import { DatePickerRangeProps } from '@salutejs/plasma-new-hope/styled-components'; +import { datePickerTokens } from '@salutejs/plasma-new-hope/styled-components'; +import { DatePickerVariationProps } from '@salutejs/plasma-new-hope/types/components/DatePicker/DatePickerBase.types'; +import type { DistributiveOmit } from '@salutejs/plasma-new-hope'; +import type { DistributivePick } from '@salutejs/plasma-new-hope'; +import { DividerProps } from '@salutejs/plasma-new-hope/styled-components'; +import { dividerTokens } from '@salutejs/plasma-new-hope/styled-components'; +import { DoubleSliderProps } from '@salutejs/plasma-new-hope/styled-components'; +import { DragEvent as DragEvent_2 } from 'react'; +import { DrawerContentProps } from '@salutejs/plasma-new-hope/styled-components'; +import { DrawerFooterProps } from '@salutejs/plasma-new-hope/styled-components'; +import { DrawerHeaderProps } from '@salutejs/plasma-new-hope/styled-components'; +import { DrawerProps } from '@salutejs/plasma-new-hope/styled-components'; +import type { DropdownItemOption } from '@salutejs/plasma-new-hope'; +import type { DropdownNewProps } from '@salutejs/plasma-new-hope'; +import { DropdownNodeSelect } from '@salutejs/plasma-new-hope/styled-components'; +import { DropdownPlacement } from '@salutejs/plasma-new-hope/types/components/Dropdown/Dropdown.types'; +import { DropdownTrigger } from '@salutejs/plasma-new-hope/types/components/Dropdown/Dropdown.types'; +import { dropzoneClasses } from '@salutejs/plasma-new-hope/styled-components'; +import { dropzoneTokens } from '@salutejs/plasma-new-hope/styled-components'; +import { dsplL } from '@salutejs/plasma-themes/tokens'; +import { dsplLBold } from '@salutejs/plasma-themes/tokens'; +import { dsplM } from '@salutejs/plasma-themes/tokens'; +import { dsplMBold } from '@salutejs/plasma-themes/tokens'; +import { dsplS } from '@salutejs/plasma-themes/tokens'; +import { dsplSBold } from '@salutejs/plasma-themes/tokens'; +import { FC } from 'react'; +import { FileProcessHandler } from '@salutejs/plasma-new-hope/types/components/Dropzone/Dropzone.types'; +import { Filter } from '@salutejs/plasma-new-hope/types/engines/types'; +import { FormTypeNumber } from '@salutejs/plasma-new-hope/types/types/FormType'; +import { FormTypeString } from '@salutejs/plasma-new-hope/types/types/FormType'; +import { ForwardRefExoticComponent } from 'react'; +import { FunctionComponent } from 'react'; +import { GridProps } from '@salutejs/plasma-new-hope/styled-components'; +import { h1 } from '@salutejs/plasma-themes/tokens'; +import { h1Bold } from '@salutejs/plasma-themes/tokens'; +import { h2 } from '@salutejs/plasma-themes/tokens'; +import { h2Bold } from '@salutejs/plasma-themes/tokens'; +import { h3 } from '@salutejs/plasma-themes/tokens'; +import { h3Bold } from '@salutejs/plasma-themes/tokens'; +import { h4 } from '@salutejs/plasma-themes/tokens'; +import { h4Bold } from '@salutejs/plasma-themes/tokens'; +import { h5 } from '@salutejs/plasma-themes/tokens'; +import { h5Bold } from '@salutejs/plasma-themes/tokens'; +import { HTMLAttributes } from 'react'; +import { HTMLAttributesWithoutOnChange } from '@salutejs/plasma-new-hope/types/engines/types'; +import { HTMLAttributesWithoutOnChangeAndDefaultValue } from '@salutejs/plasma-new-hope/types/engines/types'; +import { ImageProps } from '@salutejs/plasma-new-hope/styled-components'; +import { ImgHTMLAttributes } from 'react'; +import { IndicatorProps } from '@salutejs/plasma-new-hope/styled-components'; +import { InputHTMLAttributes } from '@salutejs/plasma-new-hope/styled-components'; +import { InputHTMLAttributes as InputHTMLAttributes_2 } from 'react'; +import type { ItemOption } from '@salutejs/plasma-new-hope'; +import type { ItemOptionSelect } from '@salutejs/plasma-new-hope'; +import { JSXElementConstructor } from 'react'; +import { KeyboardEvent as KeyboardEvent_2 } from 'react'; +import { LabelProps } from '@salutejs/plasma-new-hope/types/components/TextField/TextField.types'; +import { LinkCustomProps } from '@salutejs/plasma-new-hope/types/components/Link/Link'; +import { MaskProps } from '@salutejs/plasma-new-hope/types/components/Mask/Mask.types'; +import { mediaQuery } from '@salutejs/plasma-new-hope/styled-components'; +import { modalClasses } from '@salutejs/plasma-new-hope/styled-components'; +import { ModalProps } from '@salutejs/plasma-new-hope/styled-components'; +import { MouseEvent as MouseEvent_2 } from 'react'; +import { NotificationIconPlacement } from '@salutejs/plasma-new-hope/styled-components'; +import { NotificationLayout } from '@salutejs/plasma-new-hope/styled-components'; +import { NotificationPlacement } from '@salutejs/plasma-new-hope/styled-components'; +import { NotificationProps } from '@salutejs/plasma-new-hope/styled-components'; +import { numberInputClasses } from '@salutejs/plasma-new-hope/styled-components'; +import { numberInputTokens } from '@salutejs/plasma-new-hope/styled-components'; +import { Orientation } from '@salutejs/plasma-new-hope/types/components/TextFieldGroup/TextFieldGroup.types'; +import { Overlay } from '@salutejs/plasma-new-hope/styled-components'; +import { OverlayProps } from '@salutejs/plasma-new-hope/styled-components'; +import { PaginationProps } from '@salutejs/plasma-new-hope/styled-components'; +import { PanelProps } from '@salutejs/plasma-new-hope/types/components/Panel'; +import { PolymorphicClassName } from '@salutejs/plasma-new-hope/types/engines/types'; +import { PopoverPlacement } from '@salutejs/plasma-new-hope/styled-components'; +import { PopoverPlacementBasic } from '@salutejs/plasma-new-hope/styled-components'; +import { PopoverProps } from '@salutejs/plasma-new-hope/styled-components'; +import { PopoverTrigger } from '@salutejs/plasma-new-hope/styled-components'; +import { popupClasses } from '@salutejs/plasma-new-hope/styled-components'; +import { PopupInfo } from '@salutejs/plasma-new-hope/styled-components'; +import { PopupPlacement } from '@salutejs/plasma-new-hope/styled-components'; +import { PopupProps } from '@salutejs/plasma-new-hope/styled-components'; +import { PopupProvider } from '@salutejs/plasma-new-hope/styled-components'; +import { Portal } from '@salutejs/plasma-new-hope/styled-components'; +import { PortalProps } from '@salutejs/plasma-new-hope/styled-components'; +import { priceClasses } from '@salutejs/plasma-new-hope/styled-components'; +import { PriceProps } from '@salutejs/plasma-new-hope/types/components/Price/Price.types'; +import { ProgressProps } from '@salutejs/plasma-new-hope/styled-components'; +import { Property } from 'csstype'; +import { Props as Props_2 } from '@salutejs/plasma-new-hope/types/components/EmptyState/EmptyState.types'; +import { PropsType } from '@salutejs/plasma-new-hope/types/engines/types'; +import { RadioGroup } from '@salutejs/plasma-new-hope/styled-components'; +import { RangeInputRefs } from '@salutejs/plasma-new-hope/styled-components'; +import { RangeProps } from '@salutejs/plasma-new-hope/styled-components'; +import { rangeTokens } from '@salutejs/plasma-new-hope/styled-components'; +import { ratingClasses } from '@salutejs/plasma-new-hope/styled-components'; +import { ratingTokens } from '@salutejs/plasma-new-hope/styled-components'; +import { Ratio } from '@salutejs/plasma-new-hope/styled-components'; +import { default as React_2 } from 'react'; +import { ReactElement } from 'react'; +import { ReactNode } from 'react'; +import { RectSkeleton } from '@salutejs/plasma-new-hope/styled-components'; +import { RefAttributes } from 'react'; +import { RefObject } from 'react'; +import { RequiredProps } from '@salutejs/plasma-new-hope/types/components/TextField/TextField.types'; +import { Row } from '@salutejs/plasma-new-hope/styled-components'; +import { ScreenConfig } from '@salutejs/plasma-new-hope/styled-components'; +import { ScreenMap } from '@salutejs/plasma-new-hope/styled-components'; +import { ScreenVariant } from '@salutejs/plasma-new-hope/styled-components'; +import { SegmentGroupProps } from '@salutejs/plasma-new-hope/styled-components'; +import { SegmentItemProps } from '@salutejs/plasma-new-hope/styled-components'; +import { SegmentProvider } from '@salutejs/plasma-new-hope/styled-components'; +import { SegmentProviderProps } from '@salutejs/plasma-new-hope/styled-components'; +import type { SelectProps as SelectProps_2 } from '@salutejs/plasma-new-hope'; +import { sheetClasses } from '@salutejs/plasma-new-hope/styled-components'; +import { SheetProps } from '@salutejs/plasma-new-hope/styled-components'; +import { ShowToastArgs } from '@salutejs/plasma-new-hope/styled-components'; +import { SkeletonGradientProps } from '@salutejs/plasma-new-hope/styled-components'; +import { SkeletonSizeProps } from '@salutejs/plasma-new-hope/types/components/Skeleton/Skeleton.types'; +import { SliderBaseProps } from '@salutejs/plasma-new-hope/types/components/Slider/components/SliderBase/SliderBase.types'; +import { SliderInternalProps } from '@salutejs/plasma-new-hope/types/components/Slider/components'; +import { SliderProps } from '@salutejs/plasma-new-hope/styled-components'; +import { SpacingProps } from '@salutejs/plasma-new-hope/styled-components'; +import { SSRProvider } from '@salutejs/plasma-new-hope/styled-components'; +import { StatusLabels } from '@salutejs/plasma-new-hope/types/components/Avatar/Avatar.types'; +import { StepItemProps } from '@salutejs/plasma-new-hope/styled-components'; +import { StepsProps } from '@salutejs/plasma-new-hope/types/components/Steps/Steps.types'; +import { StyledComponent } from 'styled-components'; +import { SwitchProps as SwitchProps_2 } from '@salutejs/plasma-new-hope/styled-components'; +import { SyntheticEvent } from 'react'; +import { TabItemProps } from '@salutejs/plasma-new-hope/styled-components'; +import { TabItemRefs } from '@salutejs/plasma-new-hope/styled-components'; +import { TabsContext } from '@salutejs/plasma-new-hope/styled-components'; +import { TabsControllerProps } from '@salutejs/plasma-new-hope/styled-components'; +import { TabsProps } from '@salutejs/plasma-new-hope/styled-components'; +import { TextareaHTMLAttributes } from '@salutejs/plasma-new-hope/styled-components'; +import { TextFieldGroupProps } from '@salutejs/plasma-new-hope/styled-components'; +import { TextFieldPrimitiveValue } from '@salutejs/plasma-new-hope/types/components/TextField/TextField.types'; +import { TextfieldPrimitiveValue } from '@salutejs/plasma-new-hope/types/components/Range/Range.types'; +import { TextFieldProps } from '@salutejs/plasma-new-hope/styled-components'; +import { textFieldTokens } from '@salutejs/plasma-new-hope/styled-components'; +import { textL } from '@salutejs/plasma-themes/tokens'; +import { textLBold } from '@salutejs/plasma-themes/tokens'; +import { textM } from '@salutejs/plasma-themes/tokens'; +import { textMBold } from '@salutejs/plasma-themes/tokens'; +import { textS } from '@salutejs/plasma-themes/tokens'; +import { textSBold } from '@salutejs/plasma-themes/tokens'; +import { TextSkeletonBaseProps } from '@salutejs/plasma-new-hope/types/components/Skeleton/TextSkeleton/TextSkeleton.types'; +import { textXS } from '@salutejs/plasma-themes/tokens'; +import { textXSBold } from '@salutejs/plasma-themes/tokens'; +import { ToastPosition } from '@salutejs/plasma-new-hope/styled-components'; +import { ToastProps } from '@salutejs/plasma-new-hope/styled-components'; +import { ToastRole } from '@salutejs/plasma-new-hope/styled-components'; +import { ToolbarProps } from '@salutejs/plasma-new-hope/styled-components'; +import { toolbarTokens } from '@salutejs/plasma-new-hope/styled-components'; +import { TooltipProps } from '@salutejs/plasma-new-hope/styled-components'; +import { usePopupContext } from '@salutejs/plasma-new-hope/styled-components'; +import { useSegment } from '@salutejs/plasma-new-hope/styled-components'; +import { useToast } from '@salutejs/plasma-new-hope/styled-components'; +import { ValidatorReturnType } from '@salutejs/plasma-new-hope/types/components/Dropzone/Dropzone.types'; +import { Variants } from '@salutejs/plasma-new-hope/types/engines/types'; +import { ViewContainerCustomProps } from '@salutejs/plasma-new-hope/types/components/ViewContainer/ViewContainer'; +import { withSkeleton } from '@salutejs/plasma-new-hope/styled-components'; + +// @public (undocumented) +export const Accordion: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +clear: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +}> & { +view?: string | undefined; +size?: string | undefined; +singleActive?: boolean | undefined; +defaultActiveEventKey?: number[] | undefined; +disabled?: boolean | undefined; +stretching?: "filled" | "fixed" | undefined; +onChange?: ((index?: number | undefined, value?: boolean | undefined) => void) | undefined; +children?: ReactNode; +className?: string | undefined; +} & RefAttributes<HTMLDivElement>>; + +export { AccordionItem } + +export { addFocus } + +export { addNotification } + +// @public +export const Attach: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +accent: PolymorphicClassName; +secondary: PolymorphicClassName; +clear: PolymorphicClassName; +success: PolymorphicClassName; +warning: PolymorphicClassName; +critical: PolymorphicClassName; +dark: PolymorphicClassName; +black: PolymorphicClassName; +white: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +}> & ((HTMLAttributes<HTMLDivElement> & Omit<ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<AnchorHTMLAttributes<HTMLElement>, "type"> & AsProps<any> & { +text?: string | undefined; +contentLeft?: ReactNode; +contentPlacing?: ("default" | "relaxed") | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +stretch?: boolean | undefined; +stretching?: ("auto" | "filled" | "fixed") | undefined; +square?: boolean | undefined; +focused?: boolean | undefined; +disabled?: boolean | undefined; +pin?: "square-square" | "square-clear" | "clear-square" | "clear-clear" | "clear-circle" | "circle-clear" | "circle-circle" | undefined; +view?: string | undefined; +size?: string | undefined; +outlined?: boolean | undefined; +shiftLeft?: boolean | undefined; +shiftRight?: boolean | undefined; +blur?: "small" | "medium" | "large" | undefined; +} & { +value?: string | number | undefined; +contentRight?: undefined; +} & BaseAttachProps & { +buttonType?: "button" | undefined; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & Omit<ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<AnchorHTMLAttributes<HTMLElement>, "type"> & AsProps<any> & { +text?: string | undefined; +contentLeft?: ReactNode; +contentPlacing?: ("default" | "relaxed") | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +stretch?: boolean | undefined; +stretching?: ("auto" | "filled" | "fixed") | undefined; +square?: boolean | undefined; +focused?: boolean | undefined; +disabled?: boolean | undefined; +pin?: "square-square" | "square-clear" | "clear-square" | "clear-clear" | "clear-circle" | "circle-clear" | "circle-circle" | undefined; +view?: string | undefined; +size?: string | undefined; +outlined?: boolean | undefined; +shiftLeft?: boolean | undefined; +shiftRight?: boolean | undefined; +blur?: "small" | "medium" | "large" | undefined; +} & { +value?: string | number | undefined; +contentRight?: undefined; +} & BaseAttachProps & { +buttonType?: "button" | undefined; +} & { +value?: undefined; +contentRight?: ReactNode; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & Omit<ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<AnchorHTMLAttributes<HTMLElement>, "type"> & AsProps<any> & { +text?: string | undefined; +contentLeft?: ReactNode; +contentPlacing?: ("default" | "relaxed") | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +stretch?: boolean | undefined; +stretching?: ("auto" | "filled" | "fixed") | undefined; +square?: boolean | undefined; +focused?: boolean | undefined; +disabled?: boolean | undefined; +pin?: "square-square" | "square-clear" | "clear-square" | "clear-clear" | "clear-circle" | "circle-clear" | "circle-circle" | undefined; +view?: string | undefined; +size?: string | undefined; +outlined?: boolean | undefined; +shiftLeft?: boolean | undefined; +shiftRight?: boolean | undefined; +blur?: "small" | "medium" | "large" | undefined; +} & { +value?: string | number | undefined; +contentRight?: undefined; +} & BaseAttachProps & { +buttonType?: "iconButton" | undefined; +icon?: ReactNode; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & Omit<ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<AnchorHTMLAttributes<HTMLElement>, "type"> & AsProps<any> & { +text?: string | undefined; +contentLeft?: ReactNode; +contentPlacing?: ("default" | "relaxed") | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +stretch?: boolean | undefined; +stretching?: ("auto" | "filled" | "fixed") | undefined; +square?: boolean | undefined; +focused?: boolean | undefined; +disabled?: boolean | undefined; +pin?: "square-square" | "square-clear" | "clear-square" | "clear-clear" | "clear-circle" | "circle-clear" | "circle-circle" | undefined; +view?: string | undefined; +size?: string | undefined; +outlined?: boolean | undefined; +shiftLeft?: boolean | undefined; +shiftRight?: boolean | undefined; +blur?: "small" | "medium" | "large" | undefined; +} & { +value?: string | number | undefined; +contentRight?: undefined; +} & BaseAttachProps & { +buttonType?: "iconButton" | undefined; +icon?: ReactNode; +} & { +value?: undefined; +contentRight?: ReactNode; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & Omit<ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<AnchorHTMLAttributes<HTMLElement>, "type"> & AsProps<any> & { +text?: string | undefined; +contentLeft?: ReactNode; +contentPlacing?: ("default" | "relaxed") | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +stretch?: boolean | undefined; +stretching?: ("auto" | "filled" | "fixed") | undefined; +square?: boolean | undefined; +focused?: boolean | undefined; +disabled?: boolean | undefined; +pin?: "square-square" | "square-clear" | "clear-square" | "clear-clear" | "clear-circle" | "circle-clear" | "circle-circle" | undefined; +view?: string | undefined; +size?: string | undefined; +outlined?: boolean | undefined; +shiftLeft?: boolean | undefined; +shiftRight?: boolean | undefined; +blur?: "small" | "medium" | "large" | undefined; +} & { +value?: undefined; +contentRight?: ReactNode; +} & BaseAttachProps & { +buttonType?: "button" | undefined; +} & { +value?: string | number | undefined; +contentRight?: undefined; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & Omit<ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<AnchorHTMLAttributes<HTMLElement>, "type"> & AsProps<any> & { +text?: string | undefined; +contentLeft?: ReactNode; +contentPlacing?: ("default" | "relaxed") | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +stretch?: boolean | undefined; +stretching?: ("auto" | "filled" | "fixed") | undefined; +square?: boolean | undefined; +focused?: boolean | undefined; +disabled?: boolean | undefined; +pin?: "square-square" | "square-clear" | "clear-square" | "clear-clear" | "clear-circle" | "circle-clear" | "circle-circle" | undefined; +view?: string | undefined; +size?: string | undefined; +outlined?: boolean | undefined; +shiftLeft?: boolean | undefined; +shiftRight?: boolean | undefined; +blur?: "small" | "medium" | "large" | undefined; +} & { +value?: undefined; +contentRight?: ReactNode; +} & BaseAttachProps & { +buttonType?: "button" | undefined; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & Omit<ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<AnchorHTMLAttributes<HTMLElement>, "type"> & AsProps<any> & { +text?: string | undefined; +contentLeft?: ReactNode; +contentPlacing?: ("default" | "relaxed") | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +stretch?: boolean | undefined; +stretching?: ("auto" | "filled" | "fixed") | undefined; +square?: boolean | undefined; +focused?: boolean | undefined; +disabled?: boolean | undefined; +pin?: "square-square" | "square-clear" | "clear-square" | "clear-clear" | "clear-circle" | "circle-clear" | "circle-circle" | undefined; +view?: string | undefined; +size?: string | undefined; +outlined?: boolean | undefined; +shiftLeft?: boolean | undefined; +shiftRight?: boolean | undefined; +blur?: "small" | "medium" | "large" | undefined; +} & { +value?: undefined; +contentRight?: ReactNode; +} & BaseAttachProps & { +buttonType?: "iconButton" | undefined; +icon?: ReactNode; +} & { +value?: string | number | undefined; +contentRight?: undefined; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & Omit<ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<AnchorHTMLAttributes<HTMLElement>, "type"> & AsProps<any> & { +text?: string | undefined; +contentLeft?: ReactNode; +contentPlacing?: ("default" | "relaxed") | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +stretch?: boolean | undefined; +stretching?: ("auto" | "filled" | "fixed") | undefined; +square?: boolean | undefined; +focused?: boolean | undefined; +disabled?: boolean | undefined; +pin?: "square-square" | "square-clear" | "clear-square" | "clear-clear" | "clear-circle" | "circle-clear" | "circle-circle" | undefined; +view?: string | undefined; +size?: string | undefined; +outlined?: boolean | undefined; +shiftLeft?: boolean | undefined; +shiftRight?: boolean | undefined; +blur?: "small" | "medium" | "large" | undefined; +} & { +value?: undefined; +contentRight?: ReactNode; +} & BaseAttachProps & { +buttonType?: "iconButton" | undefined; +icon?: ReactNode; +} & RefAttributes<HTMLDivElement>))>; + +// @public (undocumented) +export const Autocomplete: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +labelPlacement: { +inner: PolymorphicClassName; +outer: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +readOnly: { +true: PolymorphicClassName; +}; +}> & ((BaseProps & Omit<{ +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: boolean | undefined; +hasDivider?: boolean | undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +chips?: undefined; +onChangeChips?: undefined; +enumerationType?: "plain" | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +chipType?: undefined; +chipView?: undefined; +chipValidator?: undefined; +}, "labelPlacement" | "chipView" | "chips" | "onChangeChips" | "enumerationType" | "chipType" | "chipValidator"> & Omit<InputHTMLAttributes_2<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | (BaseProps & Omit<{ +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: boolean | undefined; +hasDivider?: boolean | undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +enumerationType: "chip"; +onSearch?: undefined; +chips?: TextFieldPrimitiveValue[] | undefined; +onChangeChips?: ((value: TextFieldPrimitiveValue[]) => void) | undefined; +chipType?: "default" | "text" | undefined; +chipView?: string | undefined; +chipValidator?: ((value: string) => { +view?: string | undefined; +}) | undefined; +}, "labelPlacement" | "chipView" | "chips" | "onChangeChips" | "enumerationType" | "chipType" | "chipValidator"> & Omit<InputHTMLAttributes_2<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | (BaseProps & Omit<{ +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: boolean | undefined; +hasDivider?: boolean | undefined; +} & { +hintTrigger?: undefined; +hintText?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +chips?: undefined; +onChangeChips?: undefined; +enumerationType?: "plain" | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +chipType?: undefined; +chipView?: undefined; +chipValidator?: undefined; +}, "labelPlacement" | "chipView" | "chips" | "onChangeChips" | "enumerationType" | "chipType" | "chipValidator"> & Omit<InputHTMLAttributes_2<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | (BaseProps & Omit<{ +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: boolean | undefined; +hasDivider?: boolean | undefined; +} & { +hintTrigger?: undefined; +hintText?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +enumerationType: "chip"; +onSearch?: undefined; +chips?: TextFieldPrimitiveValue[] | undefined; +onChangeChips?: ((value: TextFieldPrimitiveValue[]) => void) | undefined; +chipType?: "default" | "text" | undefined; +chipView?: string | undefined; +chipValidator?: ((value: string) => { +view?: string | undefined; +}) | undefined; +}, "labelPlacement" | "chipView" | "chips" | "onChangeChips" | "enumerationType" | "chipType" | "chipValidator"> & Omit<InputHTMLAttributes_2<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | (BaseProps & Omit<{ +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: false | undefined; +hasDivider?: undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +chips?: undefined; +onChangeChips?: undefined; +enumerationType?: "plain" | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +chipType?: undefined; +chipView?: undefined; +chipValidator?: undefined; +}, "labelPlacement" | "chipView" | "chips" | "onChangeChips" | "enumerationType" | "chipType" | "chipValidator"> & Omit<InputHTMLAttributes_2<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | (BaseProps & Omit<{ +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: false | undefined; +hasDivider?: undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +enumerationType: "chip"; +onSearch?: undefined; +chips?: TextFieldPrimitiveValue[] | undefined; +onChangeChips?: ((value: TextFieldPrimitiveValue[]) => void) | undefined; +chipType?: "default" | "text" | undefined; +chipView?: string | undefined; +chipValidator?: ((value: string) => { +view?: string | undefined; +}) | undefined; +}, "labelPlacement" | "chipView" | "chips" | "onChangeChips" | "enumerationType" | "chipType" | "chipValidator"> & Omit<InputHTMLAttributes_2<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | (BaseProps & Omit<{ +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: false | undefined; +hasDivider?: undefined; +} & { +hintTrigger?: undefined; +hintText?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +chips?: undefined; +onChangeChips?: undefined; +enumerationType?: "plain" | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +chipType?: undefined; +chipView?: undefined; +chipValidator?: undefined; +}, "labelPlacement" | "chipView" | "chips" | "onChangeChips" | "enumerationType" | "chipType" | "chipValidator"> & Omit<InputHTMLAttributes_2<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | (BaseProps & Omit<{ +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: false | undefined; +hasDivider?: undefined; +} & { +hintTrigger?: undefined; +hintText?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +enumerationType: "chip"; +onSearch?: undefined; +chips?: TextFieldPrimitiveValue[] | undefined; +onChangeChips?: ((value: TextFieldPrimitiveValue[]) => void) | undefined; +chipType?: "default" | "text" | undefined; +chipView?: string | undefined; +chipValidator?: ((value: string) => { +view?: string | undefined; +}) | undefined; +}, "labelPlacement" | "chipView" | "chips" | "onChangeChips" | "enumerationType" | "chipType" | "chipValidator"> & Omit<InputHTMLAttributes_2<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>))>; + +// @public (undocumented) +export const Avatar: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +size: { +xxl: PolymorphicClassName; +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +fit: PolymorphicClassName; +}; +focused: { +true: PolymorphicClassName; +}; +}> & HTMLAttributes<HTMLDivElement> & { +size: "xxl" | "s" | "m" | "l" | "fit"; +name?: string | undefined; +url?: string | undefined; +customText?: string | undefined; +status?: "active" | "inactive" | undefined; +isScalable?: boolean | undefined; +focused?: boolean | undefined; +statusLabels?: StatusLabels | undefined; +} & RefAttributes<HTMLDivElement>>; + +// @public (undocumented) +export const AvatarGroup: FunctionComponent<PropsType<Variants> & HTMLAttributes<HTMLDivElement> & { +children: ReactNode; +} & RefAttributes<HTMLDivElement>>; + +export { AvatarGroupProps } + +export { AvatarProps } + +// @public +export const Badge: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +dark: PolymorphicClassName; +light: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +pilled: { +true: PolymorphicClassName; +}; +transparent: { +true: PolymorphicClassName; +}; +clear: { +true: PolymorphicClassName; +}; +}> & ((HTMLAttributes<HTMLDivElement> & { +text?: string | undefined; +customColor?: string | undefined; +customBackgroundColor?: string | undefined; +maxWidth?: Property.Width<string | number> | undefined; +size?: string | undefined; +view?: string | undefined; +} & { +contentLeft?: ReactNode; +contentRight?: undefined; +} & { +children?: ReactNode; +} & { +clear?: true | undefined; +pilled?: false | undefined; +transparent?: false | undefined; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & { +text?: string | undefined; +customColor?: string | undefined; +customBackgroundColor?: string | undefined; +maxWidth?: Property.Width<string | number> | undefined; +size?: string | undefined; +view?: string | undefined; +} & { +contentLeft?: ReactNode; +contentRight?: undefined; +} & { +children?: ReactNode; +} & { +pilled?: true | undefined; +transparent?: boolean | undefined; +clear?: false | undefined; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & { +text?: string | undefined; +customColor?: string | undefined; +customBackgroundColor?: string | undefined; +maxWidth?: Property.Width<string | number> | undefined; +size?: string | undefined; +view?: string | undefined; +} & { +contentLeft?: ReactNode; +contentRight?: undefined; +} & { +children?: ReactNode; +} & { +pilled?: boolean | undefined; +transparent?: true | undefined; +clear?: false | undefined; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & { +text?: string | undefined; +customColor?: string | undefined; +customBackgroundColor?: string | undefined; +maxWidth?: Property.Width<string | number> | undefined; +size?: string | undefined; +view?: string | undefined; +} & { +contentLeft?: undefined; +contentRight?: ReactNode; +} & { +children?: ReactNode; +} & { +clear?: true | undefined; +pilled?: false | undefined; +transparent?: false | undefined; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & { +text?: string | undefined; +customColor?: string | undefined; +customBackgroundColor?: string | undefined; +maxWidth?: Property.Width<string | number> | undefined; +size?: string | undefined; +view?: string | undefined; +} & { +contentLeft?: undefined; +contentRight?: ReactNode; +} & { +children?: ReactNode; +} & { +pilled?: true | undefined; +transparent?: boolean | undefined; +clear?: false | undefined; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & { +text?: string | undefined; +customColor?: string | undefined; +customBackgroundColor?: string | undefined; +maxWidth?: Property.Width<string | number> | undefined; +size?: string | undefined; +view?: string | undefined; +} & { +contentLeft?: undefined; +contentRight?: ReactNode; +} & { +children?: ReactNode; +} & { +pilled?: boolean | undefined; +transparent?: true | undefined; +clear?: false | undefined; +} & RefAttributes<HTMLDivElement>))>; + +export { BadgeProps } + +// @public (undocumented) +export const BodyL: FunctionComponent<PropsType< { +size: { +l: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { bodyL } + +export { bodyLBold } + +// @public (undocumented) +export const BodyM: FunctionComponent<PropsType< { +size: { +m: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { bodyM } + +export { bodyMBold } + +// @public (undocumented) +export const BodyS: FunctionComponent<PropsType< { +size: { +s: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { bodyS } + +export { bodySBold } + +// @public (undocumented) +export const BodyXS: FunctionComponent<PropsType< { +size: { +xs: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { bodyXS } + +export { bodyXSBold } + +// @public (undocumented) +export const BodyXXS: FunctionComponent<PropsType< { +size: { +xxs: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { bodyXXS } + +export { bodyXXSBold } + +// @public +export const Breadcrumbs: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +}> & HTMLAttributes<HTMLDivElement> & { +view?: string | undefined; +size?: string | undefined; +separator?: ReactNode; +items: BreadcrumbsItem[]; +showItems?: number | undefined; +} & RefAttributes<HTMLDivElement>>; + +export { BreadcrumbsProps } + +// @public +export const Button: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +accent: PolymorphicClassName; +secondary: PolymorphicClassName; +clear: PolymorphicClassName; +success: PolymorphicClassName; +warning: PolymorphicClassName; +critical: PolymorphicClassName; +dark: PolymorphicClassName; +black: PolymorphicClassName; +white: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +lr: PolymorphicClassName; +m: PolymorphicClassName; +mr: PolymorphicClassName; +s: PolymorphicClassName; +sr: PolymorphicClassName; +xs: PolymorphicClassName; +xsr: PolymorphicClassName; +xxs: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +focused: { +true: PolymorphicClassName; +}; +stretching: { +auto: PolymorphicClassName; +filled: PolymorphicClassName; +fixed: PolymorphicClassName; +}; +}> & ((Omit<ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<AnchorHTMLAttributes<HTMLElement>, "type"> & AsProps<any> & { +text?: string | undefined; +contentLeft?: ReactNode; +contentPlacing?: ("default" | "relaxed") | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +stretch?: boolean | undefined; +stretching?: ("auto" | "filled" | "fixed") | undefined; +square?: boolean | undefined; +focused?: boolean | undefined; +disabled?: boolean | undefined; +pin?: "square-square" | "square-clear" | "clear-square" | "clear-clear" | "clear-circle" | "circle-clear" | "circle-circle" | undefined; +view?: string | undefined; +size?: string | undefined; +outlined?: boolean | undefined; +shiftLeft?: boolean | undefined; +shiftRight?: boolean | undefined; +blur?: "small" | "medium" | "large" | undefined; +} & { +value?: string | number | undefined; +contentRight?: undefined; +} & RefAttributes<HTMLButtonElement>) | (Omit<ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<AnchorHTMLAttributes<HTMLElement>, "type"> & AsProps<any> & { +text?: string | undefined; +contentLeft?: ReactNode; +contentPlacing?: ("default" | "relaxed") | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +stretch?: boolean | undefined; +stretching?: ("auto" | "filled" | "fixed") | undefined; +square?: boolean | undefined; +focused?: boolean | undefined; +disabled?: boolean | undefined; +pin?: "square-square" | "square-clear" | "clear-square" | "clear-clear" | "clear-circle" | "circle-clear" | "circle-circle" | undefined; +view?: string | undefined; +size?: string | undefined; +outlined?: boolean | undefined; +shiftLeft?: boolean | undefined; +shiftRight?: boolean | undefined; +blur?: "small" | "medium" | "large" | undefined; +} & { +value?: undefined; +contentRight?: ReactNode; +} & RefAttributes<HTMLButtonElement>))>; + +export { ButtonBase } + +// @public +export const ButtonGroup: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +accent: PolymorphicClassName; +secondary: PolymorphicClassName; +clear: PolymorphicClassName; +success: PolymorphicClassName; +warning: PolymorphicClassName; +critical: PolymorphicClassName; +dark: PolymorphicClassName; +black: PolymorphicClassName; +white: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +lr: PolymorphicClassName; +m: PolymorphicClassName; +mr: PolymorphicClassName; +s: PolymorphicClassName; +sr: PolymorphicClassName; +xs: PolymorphicClassName; +xsr: PolymorphicClassName; +xxs: PolymorphicClassName; +}; +orientation: { +horizontal: PolymorphicClassName; +vertical: PolymorphicClassName; +}; +gap: { +none: PolymorphicClassName; +dense: PolymorphicClassName; +wide: PolymorphicClassName; +}; +shape: { +segmented: PolymorphicClassName; +default: PolymorphicClassName; +}; +stretching: { +auto: PolymorphicClassName; +filled: PolymorphicClassName; +}; +}> & ButtonGroupProps & RefAttributes<HTMLDivElement>>; + +export { ButtonGroupProps } + +// Warning: (ae-forgotten-export) The symbol "ButtonComponent" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export type ButtonProps = typeof ButtonComponent; + +// @public (undocumented) +export const Calendar: FC<CalendarProps>; + +// @public (undocumented) +export const CalendarBase: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +}> & Calendar_2 & CalendarConfigProps & RefAttributes<HTMLDivElement>>; + +export { CalendarBaseProps } + +// @public (undocumented) +export const CalendarBaseRange: ({ value, min, max, disabledList, eventList, eventMonthList, disabledMonthList, eventYearList, disabledYearList, onChangeValue, onChangeStartOfRange, ...rest }: CalendarRange<CalendarBaseProps>) => ReactElement<CalendarBaseProps, string | JSXElementConstructor<any>>; + +// @public (undocumented) +export const CalendarDouble: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +}> & Calendar_2 & CalendarConfigProps & RefAttributes<HTMLDivElement>>; + +export { CalendarDoubleProps } + +// @public (undocumented) +export const CalendarDoubleRange: ({ value, min, max, disabledList, eventList, eventMonthList, disabledMonthList, eventYearList, disabledYearList, onChangeValue, onChangeStartOfRange, ...rest }: CalendarRange<CalendarDoubleProps>) => ReactElement<CalendarDoubleProps, string | JSXElementConstructor<any>>; + +export { CalendarProps } + +export { CalendarStateType } + +// @public +export const Cell: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +}> & (({ +size?: string | undefined; +view?: string | undefined; +contentLeft?: ReactNode; +contentRight?: ReactNode; +alignContentLeft?: AlignProp | undefined; +alignContentRight?: AlignProp | undefined; +stretching?: "auto" | "filled" | "fixed" | undefined; +content?: ReactNode; +description?: string | undefined; +} & { +title?: string | undefined; +subtitle?: string | undefined; +label?: string | undefined; +children?: undefined; +} & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>) | ({ +size?: string | undefined; +view?: string | undefined; +contentLeft?: ReactNode; +contentRight?: ReactNode; +alignContentLeft?: AlignProp | undefined; +alignContentRight?: AlignProp | undefined; +stretching?: "auto" | "filled" | "fixed" | undefined; +content?: ReactNode; +description?: string | undefined; +} & { +title?: undefined; +subtitle?: undefined; +label?: undefined; +children?: ReactNode; +} & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>))>; + +export { CellProps } + +export { CellTextbox } + +export { CellTextboxLabel } + +export { CellTextboxSubtitle } + +export { CellTextboxTitle } + +// @public +export const Checkbox: FunctionComponent<PropsType< { +size: { +s: PolymorphicClassName; +m: PolymorphicClassName; +}; +view: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +tertiary: PolymorphicClassName; +paragraph: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +focused: { +true: PolymorphicClassName; +}; +}> & CheckboxProps_2 & RefAttributes<HTMLInputElement>>; + +// Warning: (ae-forgotten-export) The symbol "CheckboxComponent" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export type CheckboxProps = ComponentProps<typeof CheckboxComponent>; + +// @public +export const Chip: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +focused: { +true: PolymorphicClassName; +}; +pilled: { +true: PolymorphicClassName; +}; +}> & ChipProps & RefAttributes<HTMLButtonElement>>; + +// @public (undocumented) +export const ChipGroup: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +accent: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +gap: { +dense: PolymorphicClassName; +wide: PolymorphicClassName; +}; +}> & ChipGroupProps & RefAttributes<HTMLDivElement>>; + +export { ChipProps } + +export { closeNotification } + +export { ClosePlacementType } + +export { Col } + +export { ColCount } + +export { ColOffsetProps } + +export { ColProps } + +export { ColSizeProps } + +// Warning: (ae-forgotten-export) The symbol "Props" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export const Combobox: <T extends ItemOption>(props: Props<T> & React_2.RefAttributes<HTMLInputElement>) => React_2.ReactElement<any, string | React_2.JSXElementConstructor<any>> | null; + +// @public +export const Counter: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +dark: PolymorphicClassName; +light: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +xxs: PolymorphicClassName; +}; +}> & HTMLAttributes<HTMLDivElement> & { +count: number; +maxCount?: number | undefined; +size?: string | undefined; +view?: string | undefined; +} & RefAttributes<HTMLDivElement>>; + +export { CounterProps } + +export { counterTokens } + +// @public (undocumented) +export const DatePicker: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +readOnly: { +true: PolymorphicClassName; +}; +}> & DatePickerVariationProps & { +requiredPlacement?: "right" | "left" | undefined; +required?: boolean | undefined; +defaultDate?: Date | undefined; +placeholder?: string | undefined; +name?: string | undefined; +valueError?: boolean | undefined; +valueSuccess?: boolean | undefined; +leftHelper?: string | undefined; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onCommitDate?: ((value: string | Date, error?: boolean | undefined, success?: boolean | undefined, dateInfo?: DateInfo | undefined) => void) | undefined; +onChangeValue?: ((event: SyntheticEvent<HTMLInputElement, Event> | null, value?: string | undefined) => void) | undefined; +onChange?: ((event: { +target: { +value?: string | undefined; +name?: string | undefined; +}; +}) => void) | undefined; +} & LabelProps & DatePickerCalendarProps & DatePickerPopoverProps & Omit<HTMLAttributes<HTMLDivElement>, "defaultValue"> & RefAttributes<HTMLInputElement>>; + +export { datePickerClasses } + +export { DatePickerPlacement } + +export { DatePickerPlacementBasic } + +export { DatePickerProps } + +// @public (undocumented) +export const DatePickerRange: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +readOnly: { +true: PolymorphicClassName; +}; +}> & DatePickerVariationProps & { +requiredPlacement?: "right" | "left" | undefined; +required?: boolean | undefined; +defaultFirstDate?: Date | undefined; +defaultSecondDate?: Date | undefined; +name?: string | undefined; +onChangeFirstValue?: ChangeInstanceCallback | undefined; +onChangeSecondValue?: ChangeInstanceCallback | undefined; +onCommitFirstDate?: CommitInstanceCallback | undefined; +onCommitSecondDate?: CommitInstanceCallback | undefined; +onChange?: ((event: { +target: { +value?: string | undefined; +name?: string | undefined; +}; +}) => void) | undefined; +} & { +label?: string | undefined; +view?: string | undefined; +disabled?: boolean | undefined; +autoComplete?: string | undefined; +readOnly?: boolean | undefined; +required?: boolean | undefined; +size?: string | undefined; +contentLeft?: ReactNode; +contentRight?: ReactNode; +leftHelper?: string | undefined; +requiredPlacement?: "right" | "left" | undefined; +firstValueError?: boolean | undefined; +secondValueError?: boolean | undefined; +firstValueSuccess?: boolean | undefined; +secondValueSuccess?: boolean | undefined; +firstPlaceholder?: string | undefined; +secondPlaceholder?: string | undefined; +firstTextfieldContentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +firstTextfieldContentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +secondTextfieldContentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +secondTextfieldContentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +firstTextfieldTextAfter?: string | undefined; +secondTextfieldTextAfter?: string | undefined; +onFocusFirstTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +onFocusSecondTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +onBlurFirstTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +onBlurSecondTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +firstTextfieldTextBefore?: string | undefined; +secondTextfieldTextBefore?: string | undefined; +dividerVariant?: "none" | "dash" | "icon" | undefined; +dividerIcon?: ReactNode; +} & DatePickerCalendarProps & Omit<DatePickerPopoverProps, "placement"> & { +placement?: DatePickerRangePlacement | DatePickerRangePlacement[] | undefined; +isDoubleCalendar?: boolean | undefined; +} & HTMLAttributes<HTMLDivElement> & RefAttributes<RangeInputRefs>>; + +export { DatePickerRangePlacement } + +export { DatePickerRangeProps } + +export { datePickerTokens } + +// @public +export const Divider: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +dark: PolymorphicClassName; +light: PolymorphicClassName; +inverse: PolymorphicClassName; +}; +size: { +m: PolymorphicClassName; +}; +orientation: { +horizontal: PolymorphicClassName; +vertical: PolymorphicClassName; +}; +}> & DividerProps & RefAttributes<HTMLDivElement>>; + +export { DividerProps } + +export { dividerTokens } + +// @public +export const Drawer: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +size: { +m: PolymorphicClassName; +}; +borderRadius: { +none: PolymorphicClassName; +default: PolymorphicClassName; +}; +}> & PopupProps & PanelProps & { +placement?: "top" | "bottom" | "right" | "left" | undefined; +asModal?: boolean | undefined; +withBlur?: boolean | undefined; +closeOnEsc?: boolean | undefined; +closeOnOverlayClick?: boolean | undefined; +onEscKeyDown?: ((event: KeyboardEvent) => void) | undefined; +onOverlayClick?: ((event: MouseEvent_2<HTMLDivElement, MouseEvent>) => void) | undefined; +initialFocusRef?: RefObject<HTMLElement> | undefined; +focusAfterRef?: RefObject<HTMLElement> | undefined; +onClose?: (() => void) | undefined; +} & RefAttributes<HTMLDivElement>>; + +// @public +export const DrawerContent: FunctionComponent<PropsType<Variants> & { +view?: string | undefined; +} & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { DrawerContentProps } + +// @public +export const DrawerFooter: FunctionComponent<PropsType<Variants> & { +view?: string | undefined; +} & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { DrawerFooterProps } + +// @public +export const DrawerHeader: FunctionComponent<PropsType<Variants> & { +hasClose?: boolean | undefined; +closePlacement?: "right" | "left" | undefined; +actions?: ReactNode; +onClose?: (() => void) | undefined; +view?: string | undefined; +} & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { DrawerHeaderProps } + +export { DrawerProps } + +// @public (undocumented) +export const Dropdown: <T extends DropdownItemOption>(props: Omit<DropdownNewProps<T>, "view" | "size"> & Pick<PropsType< { +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +view: { +default: PolymorphicClassName; +}; +}> & { + items: DropdownItemOption[]; + alwaysOpened?: boolean | undefined; + children?: React_2.ReactNode; + itemRole?: string | undefined; + onHover?: ((index: number) => void) | undefined; + onItemSelect?: ((item: DropdownItemOption, event: React_2.SyntheticEvent<Element, Event>) => void) | undefined; + trigger?: DropdownTrigger | undefined; + placement?: DropdownPlacement | undefined; + offset?: [number, number] | undefined; + listWidth?: Property.Width<string | number> | undefined; + hasArrow?: boolean | undefined; + closeOnSelect?: boolean | undefined; + closeOnOverlayClick?: boolean | undefined; + onToggle?: ((isOpen: boolean, event: Event | React_2.SyntheticEvent<Element, Event>) => void) | undefined; + size?: string | undefined; + view?: string | undefined; + variant?: "normal" | "tight" | undefined; + portal?: string | React_2.RefObject<HTMLElement> | undefined; + renderItem?: ((item: DropdownItemOption) => React_2.ReactNode) | undefined; + zIndex?: Property.ZIndex | undefined; + beforeList?: React_2.ReactNode; + afterList?: React_2.ReactNode; + onItemClick?: ((item: DropdownItemOption, event: React_2.SyntheticEvent<Element, Event>) => void) | undefined; + listOverflow?: Property.Overflow | undefined; + listHeight?: Property.Height<string | number> | undefined; + hoverIndex?: number | undefined; +} & React_2.HTMLAttributes<HTMLDivElement> & React_2.RefAttributes<HTMLDivElement>, "view" | "size"> & React_2.RefAttributes<HTMLButtonElement>) => React_2.ReactElement<any, string | React_2.JSXElementConstructor<any>> | null; + +// @public (undocumented) +export const Dropzone: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +size: { +m: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +}> & { +multiple?: boolean | undefined; +title?: string | undefined; +description?: string | undefined; +icon?: ReactNode; +iconPlacement?: "top" | "left" | undefined; +size?: string | undefined; +view?: string | undefined; +disabled?: boolean | undefined; +stretch?: boolean | undefined; +onDragEnter?: ((event: DragEvent_2<HTMLDivElement>) => void) | undefined; +onDragLeave?: ((event: DragEvent_2<HTMLDivElement>) => void) | undefined; +onDragOver?: ((event: DragEvent_2<HTMLDivElement>) => void) | undefined; +validator?: ((files: File[]) => ValidatorReturnType) | undefined; +onDrop?: FileProcessHandler | undefined; +onChoseFiles?: FileProcessHandler | undefined; +} & InputHTMLAttributes_2<HTMLInputElement> & RefAttributes<HTMLInputElement>>; + +export { dropzoneClasses } + +export { dropzoneTokens } + +// @public (undocumented) +export const DsplL: FunctionComponent<PropsType< { +size: { +l: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { dsplL } + +export { dsplLBold } + +// @public (undocumented) +export const DsplM: FunctionComponent<PropsType< { +size: { +m: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { dsplM } + +export { dsplMBold } + +// @public (undocumented) +export const DsplS: FunctionComponent<PropsType< { +size: { +s: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { dsplS } + +export { dsplSBold } + +// @public (undocumented) +export const EmptyState: FunctionComponent<PropsType< { +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +}> & Props_2 & RefAttributes<HTMLDivElement>>; + +// @public (undocumented) +export const Grid: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +}> & GridProps & RefAttributes<HTMLDivElement>>; + +export { GridProps } + +// @public (undocumented) +export const H1: FunctionComponent<PropsType< { +size: { +h1: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { h1 } + +export { h1Bold } + +// @public (undocumented) +export const H2: FunctionComponent<PropsType< { +size: { +h2: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { h2 } + +export { h2Bold } + +// @public (undocumented) +export const H3: FunctionComponent<PropsType< { +size: { +h3: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { h3 } + +export { h3Bold } + +// @public (undocumented) +export const H4: FunctionComponent<PropsType< { +size: { +h4: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { h4 } + +export { h4Bold } + +// @public (undocumented) +export const H5: FunctionComponent<PropsType< { +size: { +h5: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { h5 } + +export { h5Bold } + +// @public +export const IconButton: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +accent: PolymorphicClassName; +secondary: PolymorphicClassName; +clear: PolymorphicClassName; +success: PolymorphicClassName; +warning: PolymorphicClassName; +critical: PolymorphicClassName; +dark: PolymorphicClassName; +black: PolymorphicClassName; +white: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +lr: PolymorphicClassName; +m: PolymorphicClassName; +mr: PolymorphicClassName; +s: PolymorphicClassName; +sr: PolymorphicClassName; +xs: PolymorphicClassName; +xsr: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +focused: { +true: PolymorphicClassName; +}; +}> & ((Omit<ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<AnchorHTMLAttributes<HTMLElement>, "type"> & AsProps<any> & { +text?: string | undefined; +contentLeft?: ReactNode; +contentPlacing?: ("default" | "relaxed") | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +stretch?: boolean | undefined; +stretching?: ("auto" | "filled" | "fixed") | undefined; +square?: boolean | undefined; +focused?: boolean | undefined; +disabled?: boolean | undefined; +pin?: "square-square" | "square-clear" | "clear-square" | "clear-clear" | "clear-circle" | "circle-clear" | "circle-circle" | undefined; +view?: string | undefined; +size?: string | undefined; +outlined?: boolean | undefined; +shiftLeft?: boolean | undefined; +shiftRight?: boolean | undefined; +blur?: "small" | "medium" | "large" | undefined; +} & { +value?: string | number | undefined; +contentRight?: undefined; +} & RefAttributes<HTMLButtonElement>) | (Omit<ButtonHTMLAttributes<HTMLElement>, "value"> & Omit<AnchorHTMLAttributes<HTMLElement>, "type"> & AsProps<any> & { +text?: string | undefined; +contentLeft?: ReactNode; +contentPlacing?: ("default" | "relaxed") | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +stretch?: boolean | undefined; +stretching?: ("auto" | "filled" | "fixed") | undefined; +square?: boolean | undefined; +focused?: boolean | undefined; +disabled?: boolean | undefined; +pin?: "square-square" | "square-clear" | "clear-square" | "clear-clear" | "clear-circle" | "circle-clear" | "circle-circle" | undefined; +view?: string | undefined; +size?: string | undefined; +outlined?: boolean | undefined; +shiftLeft?: boolean | undefined; +shiftRight?: boolean | undefined; +blur?: "small" | "medium" | "large" | undefined; +} & { +value?: undefined; +contentRight?: ReactNode; +} & RefAttributes<HTMLButtonElement>))>; + +// @public +const Image_2: FunctionComponent<PropsType<Variants> & ImgHTMLAttributes<HTMLImageElement> & { +base?: "img" | "div" | undefined; +ratio?: "1 / 1" | "1/1" | "3 / 4" | "3/4" | "4 / 3" | "4/3" | "9 / 16" | "9/16" | "16 / 9" | "16/9" | "1 / 2" | "1/2" | "2 / 1" | "2/1" | undefined; +customRatio?: string | undefined; +} & RefAttributes<HTMLDivElement>>; +export { Image_2 as Image } + +export { ImageProps } + +// @public (undocumented) +export const Indicator: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +accent: PolymorphicClassName; +inactive: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +black: PolymorphicClassName; +white: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +}; +}> & HTMLAttributes<HTMLDivElement> & { +size: string; +view: string; +} & RefAttributes<HTMLDivElement>>; + +export { IndicatorProps } + +// @public (undocumented) +export const LineSkeleton: FunctionComponent<PropsType< { +size: { +bodyL: PolymorphicClassName; +bodyM: PolymorphicClassName; +bodyS: PolymorphicClassName; +bodyXS: PolymorphicClassName; +bodyXXS: PolymorphicClassName; +dsplL: PolymorphicClassName; +dsplM: PolymorphicClassName; +dsplS: PolymorphicClassName; +h1: PolymorphicClassName; +h2: PolymorphicClassName; +h3: PolymorphicClassName; +h4: PolymorphicClassName; +h5: PolymorphicClassName; +textL: PolymorphicClassName; +textM: PolymorphicClassName; +textS: PolymorphicClassName; +textXS: PolymorphicClassName; +}; +}> & HTMLAttributes<HTMLDivElement> & SkeletonSizeProps & { +customGradientColor?: string | undefined; +roundness?: 0 | 8 | 12 | 14 | 16 | 18 | 20 | 24 | 28 | 32 | 250 | undefined; +} & SkeletonGradientProps & RefAttributes<HTMLDivElement>>; + +// @public +export const Link: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +tertiary: PolymorphicClassName; +paragraph: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +clear: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +focused: { +true: PolymorphicClassName; +}; +}> & AnchorHTMLAttributes<HTMLAnchorElement> & LinkCustomProps & RefAttributes<HTMLAnchorElement>>; + +// Warning: (ae-forgotten-export) The symbol "LinkComponent" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export type LinkProps = typeof LinkComponent; + +// @public (undocumented) +export const Mask: ForwardRefExoticComponent<(Omit<PropsType< { +view: { +default: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +labelPlacement: { +inner: PolymorphicClassName; +outer: PolymorphicClassName; +}; +clear: { +true: PolymorphicClassName; +}; +chipView: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +hintView: { +default: PolymorphicClassName; +}; +hintSize: { +m: PolymorphicClassName; +s: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +readOnly: { +true: PolymorphicClassName; +}; +}> & { +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: boolean | undefined; +hasDivider?: boolean | undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +chips?: undefined; +onChangeChips?: undefined; +enumerationType?: "plain" | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +chipType?: undefined; +chipView?: undefined; +chipValidator?: undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement> & MaskProps, "ref"> | Omit<PropsType< { +view: { +default: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +labelPlacement: { +inner: PolymorphicClassName; +outer: PolymorphicClassName; +}; +clear: { +true: PolymorphicClassName; +}; +chipView: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +hintView: { +default: PolymorphicClassName; +}; +hintSize: { +m: PolymorphicClassName; +s: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +readOnly: { +true: PolymorphicClassName; +}; +}> & { +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: boolean | undefined; +hasDivider?: boolean | undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +enumerationType: "chip"; +onSearch?: undefined; +chips?: TextFieldPrimitiveValue[] | undefined; +onChangeChips?: ((value: TextFieldPrimitiveValue[]) => void) | undefined; +chipType?: "default" | "text" | undefined; +chipView?: string | undefined; +chipValidator?: ((value: string) => { +view?: string | undefined; +}) | undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement> & MaskProps, "ref"> | Omit<PropsType< { +view: { +default: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +labelPlacement: { +inner: PolymorphicClassName; +outer: PolymorphicClassName; +}; +clear: { +true: PolymorphicClassName; +}; +chipView: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +hintView: { +default: PolymorphicClassName; +}; +hintSize: { +m: PolymorphicClassName; +s: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +readOnly: { +true: PolymorphicClassName; +}; +}> & { +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: boolean | undefined; +hasDivider?: boolean | undefined; +} & { +hintTrigger?: undefined; +hintText?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +chips?: undefined; +onChangeChips?: undefined; +enumerationType?: "plain" | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +chipType?: undefined; +chipView?: undefined; +chipValidator?: undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement> & MaskProps, "ref"> | Omit<PropsType< { +view: { +default: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +labelPlacement: { +inner: PolymorphicClassName; +outer: PolymorphicClassName; +}; +clear: { +true: PolymorphicClassName; +}; +chipView: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +hintView: { +default: PolymorphicClassName; +}; +hintSize: { +m: PolymorphicClassName; +s: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +readOnly: { +true: PolymorphicClassName; +}; +}> & { +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: boolean | undefined; +hasDivider?: boolean | undefined; +} & { +hintTrigger?: undefined; +hintText?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +enumerationType: "chip"; +onSearch?: undefined; +chips?: TextFieldPrimitiveValue[] | undefined; +onChangeChips?: ((value: TextFieldPrimitiveValue[]) => void) | undefined; +chipType?: "default" | "text" | undefined; +chipView?: string | undefined; +chipValidator?: ((value: string) => { +view?: string | undefined; +}) | undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement> & MaskProps, "ref"> | Omit<PropsType< { +view: { +default: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +labelPlacement: { +inner: PolymorphicClassName; +outer: PolymorphicClassName; +}; +clear: { +true: PolymorphicClassName; +}; +chipView: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +hintView: { +default: PolymorphicClassName; +}; +hintSize: { +m: PolymorphicClassName; +s: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +readOnly: { +true: PolymorphicClassName; +}; +}> & { +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: false | undefined; +hasDivider?: undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +chips?: undefined; +onChangeChips?: undefined; +enumerationType?: "plain" | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +chipType?: undefined; +chipView?: undefined; +chipValidator?: undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement> & MaskProps, "ref"> | Omit<PropsType< { +view: { +default: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +labelPlacement: { +inner: PolymorphicClassName; +outer: PolymorphicClassName; +}; +clear: { +true: PolymorphicClassName; +}; +chipView: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +hintView: { +default: PolymorphicClassName; +}; +hintSize: { +m: PolymorphicClassName; +s: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +readOnly: { +true: PolymorphicClassName; +}; +}> & { +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: false | undefined; +hasDivider?: undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +enumerationType: "chip"; +onSearch?: undefined; +chips?: TextFieldPrimitiveValue[] | undefined; +onChangeChips?: ((value: TextFieldPrimitiveValue[]) => void) | undefined; +chipType?: "default" | "text" | undefined; +chipView?: string | undefined; +chipValidator?: ((value: string) => { +view?: string | undefined; +}) | undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement> & MaskProps, "ref"> | Omit<PropsType< { +view: { +default: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +labelPlacement: { +inner: PolymorphicClassName; +outer: PolymorphicClassName; +}; +clear: { +true: PolymorphicClassName; +}; +chipView: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +hintView: { +default: PolymorphicClassName; +}; +hintSize: { +m: PolymorphicClassName; +s: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +readOnly: { +true: PolymorphicClassName; +}; +}> & { +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: false | undefined; +hasDivider?: undefined; +} & { +hintTrigger?: undefined; +hintText?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +chips?: undefined; +onChangeChips?: undefined; +enumerationType?: "plain" | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +chipType?: undefined; +chipView?: undefined; +chipValidator?: undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement> & MaskProps, "ref"> | Omit<PropsType< { +view: { +default: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +labelPlacement: { +inner: PolymorphicClassName; +outer: PolymorphicClassName; +}; +clear: { +true: PolymorphicClassName; +}; +chipView: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +hintView: { +default: PolymorphicClassName; +}; +hintSize: { +m: PolymorphicClassName; +s: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +readOnly: { +true: PolymorphicClassName; +}; +}> & { +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: false | undefined; +hasDivider?: undefined; +} & { +hintTrigger?: undefined; +hintText?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +enumerationType: "chip"; +onSearch?: undefined; +chips?: TextFieldPrimitiveValue[] | undefined; +onChangeChips?: ((value: TextFieldPrimitiveValue[]) => void) | undefined; +chipType?: "default" | "text" | undefined; +chipView?: string | undefined; +chipValidator?: ((value: string) => { +view?: string | undefined; +}) | undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement> & MaskProps, "ref">) & RefAttributes<HTMLInputElement>>; + +export { mediaQuery } + +// @public +export const Modal: ForwardRefExoticComponent<ModalProps & RefAttributes<HTMLDivElement>>; + +export { modalClasses } + +export { ModalProps } + +// @public (undocumented) +const Notification_2: React_2.FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +layout: { +horizontal: PolymorphicClassName; +vertical: PolymorphicClassName; +}; +closeIconType: { +default: PolymorphicClassName; +}; +size: { +xs: PolymorphicClassName; +xxs: PolymorphicClassName; +}; +}> & (React_2.HTMLAttributes<HTMLElement> | HTMLAttributesWithoutOnChange<HTMLElement> | HTMLAttributesWithoutOnChangeAndDefaultValue<HTMLElement>)>; +export { Notification_2 as Notification } + +export { NotificationIconPlacement } + +export { NotificationLayout } + +export { NotificationProps } + +// @public (undocumented) +export const NotificationsProvider: React_2.FC<{ + children: ReactNode; + frame?: string; + placement?: NotificationPlacement; +}>; + +// @public (undocumented) +export const NumberInput: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +accent: PolymorphicClassName; +clear: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +shape: { +cornered: PolymorphicClassName; +pilled: PolymorphicClassName; +}; +inputBackgroundType: { +fill: PolymorphicClassName; +clear: PolymorphicClassName; +}; +segmentation: { +default: PolymorphicClassName; +segmented: PolymorphicClassName; +solid: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +}> & (({ +value?: number | undefined; +min?: number | undefined; +max?: number | undefined; +step?: number | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +size?: string | undefined; +view?: string | undefined; +clear?: boolean | undefined; +shape?: string | undefined; +disabled?: boolean | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +customIncrementButton?: ReactNode; +incrementIcon?: ReactNode; +customDecrementButton?: ReactNode; +decrementIcon?: ReactNode; +isManualInput?: boolean | undefined; +onChange?: ((event: SyntheticEvent<HTMLInputElement, Event> | null, value: string | number) => void) | undefined; +onIncrement?: ((value: number) => void) | undefined; +onDecrement?: ((value: number) => void) | undefined; +} & { +segmentation?: "clear" | undefined; +inputBackgroundType?: undefined; +} & Omit<InputHTMLAttributes_2<HTMLInputElement>, "onChange" | "size" | "value"> & RefAttributes<HTMLInputElement>) | ({ +value?: number | undefined; +min?: number | undefined; +max?: number | undefined; +step?: number | undefined; +isLoading?: boolean | undefined; +loader?: ReactNode; +size?: string | undefined; +view?: string | undefined; +clear?: boolean | undefined; +shape?: string | undefined; +disabled?: boolean | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +customIncrementButton?: ReactNode; +incrementIcon?: ReactNode; +customDecrementButton?: ReactNode; +decrementIcon?: ReactNode; +isManualInput?: boolean | undefined; +onChange?: ((event: SyntheticEvent<HTMLInputElement, Event> | null, value: string | number) => void) | undefined; +onIncrement?: ((value: number) => void) | undefined; +onDecrement?: ((value: number) => void) | undefined; +} & { +segmentation?: string | undefined; +inputBackgroundType?: string | undefined; +} & Omit<InputHTMLAttributes_2<HTMLInputElement>, "onChange" | "size" | "value"> & RefAttributes<HTMLInputElement>))>; + +export { numberInputClasses } + +export { numberInputTokens } + +export { Overlay } + +export { OverlayProps } + +// @public +export const Pagination: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +clear: PolymorphicClassName; +}; +viewCurrentPage: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +clear: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +type: { +compact: PolymorphicClassName; +default: PolymorphicClassName; +}; +}> & PaginationProps & RefAttributes<HTMLDivElement>>; + +export { PaginationProps } + +// @public (undocumented) +export const Popover: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +}> & HTMLAttributes<HTMLDivElement> & CustomPopoverProps & RefAttributes<HTMLDivElement>>; + +export { PopoverPlacement } + +export { PopoverProps } + +export { PopoverTrigger } + +// @public +export const Popup: ForwardRefExoticComponent<PopupProps & RefAttributes<HTMLDivElement>>; + +export { popupClasses } + +export { PopupInfo } + +export { PopupPlacement } + +export { PopupProps } + +export { PopupProvider } + +export { Portal } + +export { PortalProps } + +// @public +export const Price: FunctionComponent<PropsType< { +view: {}; +}> & PriceProps & RefAttributes<HTMLSpanElement>>; + +export { priceClasses } + +// @public (undocumented) +export const Progress: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +primary: PolymorphicClassName; +accent: PolymorphicClassName; +success: PolymorphicClassName; +warning: PolymorphicClassName; +error: PolymorphicClassName; +}; +size: { +m: PolymorphicClassName; +}; +}> & ProgressProps & RefAttributes<HTMLDivElement>>; + +export { ProgressProps } + +// @public +export const Radiobox: FunctionComponent<PropsType< { +size: { +s: PolymorphicClassName; +m: PolymorphicClassName; +}; +view: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +tertiary: PolymorphicClassName; +paragraph: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +focused: { +true: PolymorphicClassName; +}; +}> & Filter<InputHTMLAttributes<HTMLInputElement>, "size"> & Omit<BaseboxProps, "indeterminate"> & RefAttributes<HTMLInputElement>>; + +// Warning: (ae-forgotten-export) The symbol "RadioboxComponent" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export type RadioboxProps = ComponentProps<typeof RadioboxComponent>; + +export { RadioGroup } + +// @public +const Range_2: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +readOnly: { +true: PolymorphicClassName; +}; +}> & (({ +label?: string | undefined; +leftHelper?: string | undefined; +contentLeft?: ReactNode; +contentRight?: ReactNode; +firstValue?: TextfieldPrimitiveValue | undefined; +secondValue?: TextfieldPrimitiveValue | undefined; +firstValueError?: boolean | undefined; +secondValueError?: boolean | undefined; +firstValueSuccess?: boolean | undefined; +secondValueSuccess?: boolean | undefined; +firstPlaceholder?: string | undefined; +secondPlaceholder?: string | undefined; +firstTextfieldContentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +firstTextfieldContentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +secondTextfieldContentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +secondTextfieldContentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +firstTextfieldTextAfter?: string | undefined; +secondTextfieldTextAfter?: string | undefined; +autoComplete?: string | undefined; +view?: string | undefined; +size?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +requiredPlacement?: "right" | "left" | undefined; +required?: boolean | undefined; +onChangeFirstValue?: BaseCallbackChangeInstance | undefined; +onChangeSecondValue?: BaseCallbackChangeInstance | undefined; +onSearchFirstValue?: BaseCallbackKeyboardInstance | undefined; +onSearchSecondValue?: BaseCallbackKeyboardInstance | undefined; +onFocusFirstTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +onFocusSecondTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +onBlurFirstTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +onBlurSecondTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +} & { +firstTextfieldTextBefore: string; +secondTextfieldTextBefore: string; +dividerVariant?: "none" | undefined; +dividerIcon?: undefined; +} & HTMLAttributes<HTMLDivElement> & RefAttributes<RangeInputRefs>) | ({ +label?: string | undefined; +leftHelper?: string | undefined; +contentLeft?: ReactNode; +contentRight?: ReactNode; +firstValue?: TextfieldPrimitiveValue | undefined; +secondValue?: TextfieldPrimitiveValue | undefined; +firstValueError?: boolean | undefined; +secondValueError?: boolean | undefined; +firstValueSuccess?: boolean | undefined; +secondValueSuccess?: boolean | undefined; +firstPlaceholder?: string | undefined; +secondPlaceholder?: string | undefined; +firstTextfieldContentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +firstTextfieldContentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +secondTextfieldContentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +secondTextfieldContentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +firstTextfieldTextAfter?: string | undefined; +secondTextfieldTextAfter?: string | undefined; +autoComplete?: string | undefined; +view?: string | undefined; +size?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +requiredPlacement?: "right" | "left" | undefined; +required?: boolean | undefined; +onChangeFirstValue?: BaseCallbackChangeInstance | undefined; +onChangeSecondValue?: BaseCallbackChangeInstance | undefined; +onSearchFirstValue?: BaseCallbackKeyboardInstance | undefined; +onSearchSecondValue?: BaseCallbackKeyboardInstance | undefined; +onFocusFirstTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +onFocusSecondTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +onBlurFirstTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +onBlurSecondTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +} & { +dividerVariant?: "dash" | undefined; +dividerIcon?: undefined; +firstTextfieldTextBefore?: string | undefined; +secondTextfieldTextBefore?: string | undefined; +} & HTMLAttributes<HTMLDivElement> & RefAttributes<RangeInputRefs>) | ({ +label?: string | undefined; +leftHelper?: string | undefined; +contentLeft?: ReactNode; +contentRight?: ReactNode; +firstValue?: TextfieldPrimitiveValue | undefined; +secondValue?: TextfieldPrimitiveValue | undefined; +firstValueError?: boolean | undefined; +secondValueError?: boolean | undefined; +firstValueSuccess?: boolean | undefined; +secondValueSuccess?: boolean | undefined; +firstPlaceholder?: string | undefined; +secondPlaceholder?: string | undefined; +firstTextfieldContentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +firstTextfieldContentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +secondTextfieldContentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +secondTextfieldContentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +firstTextfieldTextAfter?: string | undefined; +secondTextfieldTextAfter?: string | undefined; +autoComplete?: string | undefined; +view?: string | undefined; +size?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +requiredPlacement?: "right" | "left" | undefined; +required?: boolean | undefined; +onChangeFirstValue?: BaseCallbackChangeInstance | undefined; +onChangeSecondValue?: BaseCallbackChangeInstance | undefined; +onSearchFirstValue?: BaseCallbackKeyboardInstance | undefined; +onSearchSecondValue?: BaseCallbackKeyboardInstance | undefined; +onFocusFirstTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +onFocusSecondTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +onBlurFirstTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +onBlurSecondTextfield?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined; +} & { +dividerIcon?: ReactNode; +dividerVariant?: "icon" | undefined; +firstTextfieldTextBefore?: string | undefined; +secondTextfieldTextBefore?: string | undefined; +} & HTMLAttributes<HTMLDivElement> & RefAttributes<RangeInputRefs>))>; +export { Range_2 as Range } + +export { RangeProps } + +export { rangeTokens } + +// @public (undocumented) +export const Rating: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +accent: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +xxs: PolymorphicClassName; +h1: PolymorphicClassName; +h2: PolymorphicClassName; +h3: PolymorphicClassName; +h4: PolymorphicClassName; +h5: PolymorphicClassName; +displayL: PolymorphicClassName; +displayM: PolymorphicClassName; +displayS: PolymorphicClassName; +}; +}> & { +value?: number | null | undefined; +hasValue?: boolean | undefined; +precision?: number | undefined; +valuePlacement?: "before" | "after" | undefined; +iconSlot?: ReactNode; +iconSlotOutline?: ReactNode; +iconSlotHalf?: ReactNode; +hasIcons?: boolean | undefined; +iconQuantity?: 1 | 5 | 10 | undefined; +helperText?: string | undefined; +helperTextStretching?: "filled" | "fixed" | undefined; +size?: string | undefined; +view?: string | undefined; +} & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLInputElement>>; + +export { ratingClasses } + +export { ratingTokens } + +export { Ratio } + +export { RectSkeleton } + +export { Row } + +export { ScreenConfig } + +export { ScreenMap } + +export { ScreenVariant } + +// @public +export const SegmentGroup: FunctionComponent<PropsType< { +view: { +clear: PolymorphicClassName; +filled: PolymorphicClassName; +}; +size: { +xs: PolymorphicClassName; +s: PolymorphicClassName; +m: PolymorphicClassName; +l: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +pilled: { +true: PolymorphicClassName; +}; +stretch: { +true: PolymorphicClassName; +}; +filledBackground: { +true: PolymorphicClassName; +}; +orientation: { +vertical: PolymorphicClassName; +}; +}> & SegmentGroupProps & RefAttributes<HTMLDivElement>>; + +export { SegmentGroupProps } + +// @public +export const SegmentItem: FunctionComponent<PropsType< { +view: { +clear: PolymorphicClassName; +secondary: PolymorphicClassName; +default: PolymorphicClassName; +}; +size: { +xs: PolymorphicClassName; +s: PolymorphicClassName; +m: PolymorphicClassName; +l: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +pilled: { +true: PolymorphicClassName; +}; +}> & ButtonHTMLAttributes<HTMLButtonElement> & { +value: string; +id?: string | undefined; +label?: ReactNode; +pilled?: boolean | undefined; +customHandleSelect?: ((e: MouseEvent_2<HTMLButtonElement, MouseEvent>) => void) | undefined; +size?: string | undefined; +view?: string | undefined; +contentLeft?: ReactNode; +contentRight?: ReactNode; +} & RefAttributes<HTMLLabelElement>>; + +export { SegmentItemProps } + +export { SegmentProvider } + +export { SegmentProviderProps } + +// Warning: (ae-forgotten-export) The symbol "SelectProps" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export const Select: <K extends ItemOptionSelect>(props: SelectProps<K> & React_2.RefAttributes<HTMLButtonElement>) => React_2.ReactElement<any, string | React_2.JSXElementConstructor<any>> | null; + +// @public +export const Sheet: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +}> & SheetProps & RefAttributes<HTMLDivElement>>; + +export { sheetClasses } + +export { SheetProps } + +export { ShowToastArgs } + +// @public +export const Slider: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +accent: PolymorphicClassName; +gradient: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +}> & ((SliderBaseProps & SliderInternalProps & { +onChange?: ((event: FormTypeNumber) => void) | undefined; +name: string; +value?: undefined; +defaultValue?: number | undefined; +} & { +orientation?: "horizontal" | undefined; +labelPlacement?: "none" | "top" | "left" | undefined; +scaleAlign?: "none" | "bottom" | "side" | undefined; +sliderAlign?: "none" | undefined; +reversed?: undefined; +labelReversed?: undefined; +} & Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> & { +onChangeCommitted?: ((value: number) => void) | undefined; +ariaLabel?: string | undefined; +showCurrentValue?: boolean | undefined; +showRangeValues?: boolean | undefined; +rangeValuesPlacement?: string | undefined; +showScale?: boolean | undefined; +hideMinValueDiff?: number | undefined; +hideMaxValueDiff?: number | undefined; +labelPlacement?: "outer" | "inner" | undefined; +labelContentLeft?: ReactNode; +labelContent?: ReactNode; +multipleStepSize?: number | undefined; +view?: string | undefined; +size?: "s" | "m" | "l" | undefined; +type?: "single" | undefined; +pointerSize?: "none" | "small" | "large" | undefined; +pointerVisibility: "hover" | "always"; +currentValueVisibility: "hover" | "always"; +} & RefAttributes<HTMLDivElement>) | (SliderBaseProps & SliderInternalProps & { +onChange?: ((event: FormTypeNumber) => void) | undefined; +name: string; +value?: undefined; +defaultValue?: number | undefined; +} & { +orientation: "vertical"; +sliderAlign?: "none" | "center" | "right" | "left" | undefined; +scaleAlign?: undefined; +reversed?: boolean | undefined; +labelReversed?: boolean | undefined; +} & Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> & { +onChangeCommitted?: ((value: number) => void) | undefined; +ariaLabel?: string | undefined; +showCurrentValue?: boolean | undefined; +showRangeValues?: boolean | undefined; +rangeValuesPlacement?: string | undefined; +showScale?: boolean | undefined; +hideMinValueDiff?: number | undefined; +hideMaxValueDiff?: number | undefined; +labelPlacement?: "outer" | "inner" | undefined; +labelContentLeft?: ReactNode; +labelContent?: ReactNode; +multipleStepSize?: number | undefined; +view?: string | undefined; +size?: "s" | "m" | "l" | undefined; +type?: "single" | undefined; +pointerSize?: "none" | "small" | "large" | undefined; +pointerVisibility: "hover" | "always"; +currentValueVisibility: "hover" | "always"; +} & RefAttributes<HTMLDivElement>) | (SliderBaseProps & SliderInternalProps & { +onChange?: ((value: number) => void) | undefined; +value: number; +name?: undefined; +defaultValue?: undefined; +} & { +orientation?: "horizontal" | undefined; +labelPlacement?: "none" | "top" | "left" | undefined; +scaleAlign?: "none" | "bottom" | "side" | undefined; +sliderAlign?: "none" | undefined; +reversed?: undefined; +labelReversed?: undefined; +} & Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> & { +onChangeCommitted?: ((value: number) => void) | undefined; +ariaLabel?: string | undefined; +showCurrentValue?: boolean | undefined; +showRangeValues?: boolean | undefined; +rangeValuesPlacement?: string | undefined; +showScale?: boolean | undefined; +hideMinValueDiff?: number | undefined; +hideMaxValueDiff?: number | undefined; +labelPlacement?: "outer" | "inner" | undefined; +labelContentLeft?: ReactNode; +labelContent?: ReactNode; +multipleStepSize?: number | undefined; +view?: string | undefined; +size?: "s" | "m" | "l" | undefined; +type?: "single" | undefined; +pointerSize?: "none" | "small" | "large" | undefined; +pointerVisibility: "hover" | "always"; +currentValueVisibility: "hover" | "always"; +} & RefAttributes<HTMLDivElement>) | (SliderBaseProps & SliderInternalProps & { +onChange?: ((value: number) => void) | undefined; +value: number; +name?: undefined; +defaultValue?: undefined; +} & { +orientation: "vertical"; +sliderAlign?: "none" | "center" | "right" | "left" | undefined; +scaleAlign?: undefined; +reversed?: boolean | undefined; +labelReversed?: boolean | undefined; +} & Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> & { +onChangeCommitted?: ((value: number) => void) | undefined; +ariaLabel?: string | undefined; +showCurrentValue?: boolean | undefined; +showRangeValues?: boolean | undefined; +rangeValuesPlacement?: string | undefined; +showScale?: boolean | undefined; +hideMinValueDiff?: number | undefined; +hideMaxValueDiff?: number | undefined; +labelPlacement?: "outer" | "inner" | undefined; +labelContentLeft?: ReactNode; +labelContent?: ReactNode; +multipleStepSize?: number | undefined; +view?: string | undefined; +size?: "s" | "m" | "l" | undefined; +type?: "single" | undefined; +pointerSize?: "none" | "small" | "large" | undefined; +pointerVisibility: "hover" | "always"; +currentValueVisibility: "hover" | "always"; +} & RefAttributes<HTMLDivElement>) | (Omit<DoubleSliderProps, "onChange" | "defaultValue" | "value"> & { +onChange?: ((event: FormTypeString) => void) | undefined; +name?: string | undefined; +value?: undefined; +defaultValue?: number[] | undefined; +} & RefAttributes<HTMLDivElement>) | (Omit<DoubleSliderProps, "onChange" | "defaultValue" | "value"> & { +onChange?: ((values: number[]) => void) | undefined; +name?: undefined; +value?: number[] | undefined; +defaultValue?: undefined; +} & RefAttributes<HTMLDivElement>))>; + +export { SliderProps } + +// @public +export const Spinner: StyledComponent<FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +tertiary: PolymorphicClassName; +paragraph: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +}> & ((HTMLAttributes<HTMLDivElement> & { +width?: undefined; +height?: undefined; +size?: string | undefined; +view?: string | undefined; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & { +width: number; +height: number; +size?: undefined; /** +* @deprecated +*/ +view?: string | undefined; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & { +width: string; +height: string; +size?: undefined; +view?: string | undefined; +} & RefAttributes<HTMLDivElement>))>, any, {}, never>; + +// @public (undocumented) +export type SpinnerProps = HTMLAttributes<HTMLDivElement> & { + size?: string | number; + view?: string; + color?: string; + deviceScale?: number; +}; + +export { SSRProvider } + +export { StepItemProps } + +// @public (undocumented) +export const Steps: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +}> & StepsProps & Omit<HTMLAttributes<HTMLDivElement>, "onChange"> & RefAttributes<HTMLDivElement>>; + +// @public (undocumented) +export const Switch: FunctionComponent<PropsType< { +size: { +s: PolymorphicClassName; +m: PolymorphicClassName; +l: PolymorphicClassName; +}; +toggleSize: { +l: PolymorphicClassName; +s: PolymorphicClassName; +}; +view: { +default: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +focused: { +true: PolymorphicClassName; +}; +}> & SwitchProps_2 & RefAttributes<HTMLInputElement>>; + +// Warning: (ae-forgotten-export) The symbol "SwitchComponent" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export type SwitchProps = ComponentProps<typeof SwitchComponent>; + +// Warning: (ae-forgotten-export) The symbol "TabItemProps_2" needs to be exported by the entry point index.d.ts +// +// @public +export const TabItem: (props: TabItemProps_2) => JSX.Element; + +export { TabItemProps } + +export { TabItemRefs } + +// Warning: (ae-forgotten-export) The symbol "TabsProps_2" needs to be exported by the entry point index.d.ts +// +// @public +export const Tabs: (props: TabsProps_2) => JSX.Element; + +export { TabsContext } + +// @public +export const TabsController: ForwardRefExoticComponent<TabsControllerProps & RefAttributes<HTMLDivElement>>; + +export { TabsControllerProps } + +export { TabsProps } + +// @public +export const TextArea: FunctionComponent<PropsType< { +size: { +xs: PolymorphicClassName; +s: PolymorphicClassName; +m: PolymorphicClassName; +l: PolymorphicClassName; +}; +view: { +default: PolymorphicClassName; +positive: PolymorphicClassName; +primary: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +hintView: { +default: PolymorphicClassName; +}; +hintSize: { +m: PolymorphicClassName; +s: PolymorphicClassName; +}; +clear: { +true: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +}> & ((Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "required" | "rows" | "cols"> & { +status?: "" | "warning" | "success" | "error" | undefined; +label?: string | undefined; +labelPlacement?: "outer" | "inner" | undefined; +titleCaption?: ReactNode; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +resize?: "none" | "both" | "horizontal" | "vertical" | undefined; +helperText?: string | undefined; +leftHelper?: ReactNode; +rightHelper?: ReactNode; +leftHelperPlacement?: "outer" | "inner" | undefined; +} & { +required?: boolean | undefined; +requiredPlacement?: "right" | "left" | undefined; +optional?: boolean | undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintOpened?: boolean | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +size?: string | undefined; +view?: string | undefined; +} & { +autoResize?: boolean | undefined; +maxAuto?: number | undefined; +minAuto?: number | undefined; +} & { +height?: undefined; +width?: undefined; +} & { +rows?: undefined; +cols?: undefined; +} & { +clear?: undefined; +hasDivider?: undefined; +} & RefAttributes<HTMLTextAreaElement>) | (Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "required" | "rows" | "cols"> & { +status?: "" | "warning" | "success" | "error" | undefined; +label?: string | undefined; +labelPlacement?: "outer" | "inner" | undefined; +titleCaption?: ReactNode; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +resize?: "none" | "both" | "horizontal" | "vertical" | undefined; +helperText?: string | undefined; +leftHelper?: ReactNode; +rightHelper?: ReactNode; +leftHelperPlacement?: "outer" | "inner" | undefined; +} & { +required?: boolean | undefined; +requiredPlacement?: "right" | "left" | undefined; +optional?: boolean | undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintOpened?: boolean | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +size?: string | undefined; +view?: string | undefined; +} & { +height?: string | number | undefined; +width?: string | number | undefined; +} & { +autoResize?: undefined; +maxAuto?: undefined; +minAuto?: undefined; +} & { +rows?: undefined; +cols?: undefined; +} & { +clear?: undefined; +hasDivider?: undefined; +} & RefAttributes<HTMLTextAreaElement>) | (Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "required" | "rows" | "cols"> & { +status?: "" | "warning" | "success" | "error" | undefined; +label?: string | undefined; +labelPlacement?: "outer" | "inner" | undefined; +titleCaption?: ReactNode; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +resize?: "none" | "both" | "horizontal" | "vertical" | undefined; +helperText?: string | undefined; +leftHelper?: ReactNode; +rightHelper?: ReactNode; +leftHelperPlacement?: "outer" | "inner" | undefined; +} & { +required?: boolean | undefined; +requiredPlacement?: "right" | "left" | undefined; +optional?: boolean | undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintOpened?: boolean | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +size?: string | undefined; +view?: string | undefined; +} & { +rows?: number | undefined; +cols?: number | undefined; +} & { +autoResize?: undefined; +maxAuto?: undefined; +minAuto?: undefined; +} & { +height?: undefined; +width?: undefined; +} & { +clear?: undefined; +hasDivider?: undefined; +} & RefAttributes<HTMLTextAreaElement>) | (Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "required" | "rows" | "cols"> & { +status?: "" | "warning" | "success" | "error" | undefined; +label?: string | undefined; +labelPlacement?: "outer" | "inner" | undefined; +titleCaption?: ReactNode; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +resize?: "none" | "both" | "horizontal" | "vertical" | undefined; +helperText?: string | undefined; +leftHelper?: ReactNode; +rightHelper?: ReactNode; +leftHelperPlacement?: "outer" | "inner" | undefined; +} & { +required?: boolean | undefined; +requiredPlacement?: "right" | "left" | undefined; +optional?: boolean | undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintOpened?: boolean | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +size?: string | undefined; +view?: string | undefined; +} & { +clear?: true | undefined; +hasDivider?: boolean | undefined; +} & { +rows?: undefined; +cols?: undefined; +} & { +autoResize?: undefined; +maxAuto?: undefined; +minAuto?: undefined; +} & { +height?: undefined; +width?: undefined; +} & RefAttributes<HTMLTextAreaElement>) | (Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "required" | "rows" | "cols"> & { +status?: "" | "warning" | "success" | "error" | undefined; +label?: string | undefined; +labelPlacement?: "outer" | "inner" | undefined; +titleCaption?: ReactNode; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +resize?: "none" | "both" | "horizontal" | "vertical" | undefined; +helperText?: string | undefined; +leftHelper?: ReactNode; +rightHelper?: ReactNode; +leftHelperPlacement?: "outer" | "inner" | undefined; +} & { +required?: boolean | undefined; +requiredPlacement?: "right" | "left" | undefined; +optional?: boolean | undefined; +} & { +hintText?: undefined; +hintOpened?: undefined; +hintTrigger?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +size?: string | undefined; +view?: string | undefined; +} & { +autoResize?: boolean | undefined; +maxAuto?: number | undefined; +minAuto?: number | undefined; +} & { +height?: undefined; +width?: undefined; +} & { +rows?: undefined; +cols?: undefined; +} & { +clear?: undefined; +hasDivider?: undefined; +} & RefAttributes<HTMLTextAreaElement>) | (Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "required" | "rows" | "cols"> & { +status?: "" | "warning" | "success" | "error" | undefined; +label?: string | undefined; +labelPlacement?: "outer" | "inner" | undefined; +titleCaption?: ReactNode; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +resize?: "none" | "both" | "horizontal" | "vertical" | undefined; +helperText?: string | undefined; +leftHelper?: ReactNode; +rightHelper?: ReactNode; +leftHelperPlacement?: "outer" | "inner" | undefined; +} & { +required?: boolean | undefined; +requiredPlacement?: "right" | "left" | undefined; +optional?: boolean | undefined; +} & { +hintText?: undefined; +hintOpened?: undefined; +hintTrigger?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +size?: string | undefined; +view?: string | undefined; +} & { +height?: string | number | undefined; +width?: string | number | undefined; +} & { +autoResize?: undefined; +maxAuto?: undefined; +minAuto?: undefined; +} & { +rows?: undefined; +cols?: undefined; +} & { +clear?: undefined; +hasDivider?: undefined; +} & RefAttributes<HTMLTextAreaElement>) | (Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "required" | "rows" | "cols"> & { +status?: "" | "warning" | "success" | "error" | undefined; +label?: string | undefined; +labelPlacement?: "outer" | "inner" | undefined; +titleCaption?: ReactNode; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +resize?: "none" | "both" | "horizontal" | "vertical" | undefined; +helperText?: string | undefined; +leftHelper?: ReactNode; +rightHelper?: ReactNode; +leftHelperPlacement?: "outer" | "inner" | undefined; +} & { +required?: boolean | undefined; +requiredPlacement?: "right" | "left" | undefined; +optional?: boolean | undefined; +} & { +hintText?: undefined; +hintOpened?: undefined; +hintTrigger?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +size?: string | undefined; +view?: string | undefined; +} & { +rows?: number | undefined; +cols?: number | undefined; +} & { +autoResize?: undefined; +maxAuto?: undefined; +minAuto?: undefined; +} & { +height?: undefined; +width?: undefined; +} & { +clear?: undefined; +hasDivider?: undefined; +} & RefAttributes<HTMLTextAreaElement>) | (Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "required" | "rows" | "cols"> & { +status?: "" | "warning" | "success" | "error" | undefined; +label?: string | undefined; +labelPlacement?: "outer" | "inner" | undefined; +titleCaption?: ReactNode; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +resize?: "none" | "both" | "horizontal" | "vertical" | undefined; +helperText?: string | undefined; +leftHelper?: ReactNode; +rightHelper?: ReactNode; +leftHelperPlacement?: "outer" | "inner" | undefined; +} & { +required?: boolean | undefined; +requiredPlacement?: "right" | "left" | undefined; +optional?: boolean | undefined; +} & { +hintText?: undefined; +hintOpened?: undefined; +hintTrigger?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +size?: string | undefined; +view?: string | undefined; +} & { +clear?: true | undefined; +hasDivider?: boolean | undefined; +} & { +rows?: undefined; +cols?: undefined; +} & { +autoResize?: undefined; +maxAuto?: undefined; +minAuto?: undefined; +} & { +height?: undefined; +width?: undefined; +} & RefAttributes<HTMLTextAreaElement>))>; + +// @public +export const TextField: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +labelPlacement: { +inner: PolymorphicClassName; +outer: PolymorphicClassName; +}; +clear: { +true: PolymorphicClassName; +}; +chipView: { +default: PolymorphicClassName; +secondary: PolymorphicClassName; +accent: PolymorphicClassName; +positive: PolymorphicClassName; +warning: PolymorphicClassName; +negative: PolymorphicClassName; +}; +hintView: { +default: PolymorphicClassName; +}; +hintSize: { +m: PolymorphicClassName; +s: PolymorphicClassName; +}; +disabled: { +true: PolymorphicClassName; +}; +readOnly: { +true: PolymorphicClassName; +}; +}> & (({ +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: boolean | undefined; +hasDivider?: boolean | undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +chips?: undefined; +onChangeChips?: undefined; +enumerationType?: "plain" | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +chipType?: undefined; +chipView?: undefined; +chipValidator?: undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | ({ +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: boolean | undefined; +hasDivider?: boolean | undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +enumerationType: "chip"; +onSearch?: undefined; +chips?: TextFieldPrimitiveValue[] | undefined; +onChangeChips?: ((value: TextFieldPrimitiveValue[]) => void) | undefined; +chipType?: "default" | "text" | undefined; +chipView?: string | undefined; +chipValidator?: ((value: string) => { +view?: string | undefined; +}) | undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | ({ +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: boolean | undefined; +hasDivider?: boolean | undefined; +} & { +hintTrigger?: undefined; +hintText?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +chips?: undefined; +onChangeChips?: undefined; +enumerationType?: "plain" | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +chipType?: undefined; +chipView?: undefined; +chipValidator?: undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | ({ +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: boolean | undefined; +hasDivider?: boolean | undefined; +} & { +hintTrigger?: undefined; +hintText?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +enumerationType: "chip"; +onSearch?: undefined; +chips?: TextFieldPrimitiveValue[] | undefined; +onChangeChips?: ((value: TextFieldPrimitiveValue[]) => void) | undefined; +chipType?: "default" | "text" | undefined; +chipView?: string | undefined; +chipValidator?: ((value: string) => { +view?: string | undefined; +}) | undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | ({ +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: false | undefined; +hasDivider?: undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +chips?: undefined; +onChangeChips?: undefined; +enumerationType?: "plain" | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +chipType?: undefined; +chipView?: undefined; +chipValidator?: undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | ({ +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: false | undefined; +hasDivider?: undefined; +} & { +hintText: string; +hintTrigger?: "click" | "hover" | undefined; +hintView?: string | undefined; +hintSize?: string | undefined; +hintTargetIcon?: ReactNode; +hintPlacement?: PopoverPlacement | PopoverPlacementBasic[] | undefined; +hintHasArrow?: boolean | undefined; +hintOffset?: [number, number] | undefined; +hintWidth?: string | undefined; +hintContentLeft?: ReactNode; +} & { +enumerationType: "chip"; +onSearch?: undefined; +chips?: TextFieldPrimitiveValue[] | undefined; +onChangeChips?: ((value: TextFieldPrimitiveValue[]) => void) | undefined; +chipType?: "default" | "text" | undefined; +chipView?: string | undefined; +chipValidator?: ((value: string) => { +view?: string | undefined; +}) | undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | ({ +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: false | undefined; +hasDivider?: undefined; +} & { +hintTrigger?: undefined; +hintText?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +chips?: undefined; +onChangeChips?: undefined; +enumerationType?: "plain" | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +chipType?: undefined; +chipView?: undefined; +chipValidator?: undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>) | ({ +size?: string | undefined; +view?: string | undefined; +readOnly?: boolean | undefined; +disabled?: boolean | undefined; +} & { +titleCaption?: ReactNode; +leftHelper?: ReactNode; +contentLeft?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +contentRight?: ReactElement<any, string | JSXElementConstructor<any>> | undefined; +textBefore?: string | undefined; +textAfter?: string | undefined; +onSearch?: ((value: string, event?: KeyboardEvent_2<HTMLInputElement> | undefined) => void) | undefined; +} & LabelProps & RequiredProps & { +clear?: false | undefined; +hasDivider?: undefined; +} & { +hintTrigger?: undefined; +hintText?: undefined; +hintView?: undefined; +hintSize?: undefined; +hintTargetIcon?: undefined; +hintPlacement?: undefined; +hintHasArrow?: undefined; +hintOffset?: undefined; +hintWidth?: undefined; +hintContentLeft?: undefined; +} & { +enumerationType: "chip"; +onSearch?: undefined; +chips?: TextFieldPrimitiveValue[] | undefined; +onChangeChips?: ((value: TextFieldPrimitiveValue[]) => void) | undefined; +chipType?: "default" | "text" | undefined; +chipView?: string | undefined; +chipValidator?: ((value: string) => { +view?: string | undefined; +}) | undefined; +} & Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "required"> & RefAttributes<HTMLInputElement>))>; + +// @public +export const TextFieldGroup: FunctionComponent<PropsType< { +size: { +l: PolymorphicClassName; +m: PolymorphicClassName; +s: PolymorphicClassName; +xs: PolymorphicClassName; +}; +orientation: { +horizontal: PolymorphicClassName; +vertical: PolymorphicClassName; +}; +gap: { +none: PolymorphicClassName; +dense: PolymorphicClassName; +wide: PolymorphicClassName; +}; +shape: { +segmented: PolymorphicClassName; +default: PolymorphicClassName; +}; +stretching: { +auto: PolymorphicClassName; +filled: PolymorphicClassName; +}; +}> & ((HTMLAttributes<HTMLDivElement> & { +orientation?: Orientation | undefined; +stretching?: ("auto" | "filled") | undefined; +size?: string | undefined; +isCommonTextFieldStyles?: boolean | undefined; +} & { +gap?: "none" | "dense" | undefined; +shape?: "segmented" | undefined; +} & RefAttributes<HTMLDivElement>) | (HTMLAttributes<HTMLDivElement> & { +orientation?: Orientation | undefined; +stretching?: ("auto" | "filled") | undefined; +size?: string | undefined; +isCommonTextFieldStyles?: boolean | undefined; +} & { +gap?: "dense" | "wide" | undefined; +shape?: "default" | undefined; +} & RefAttributes<HTMLDivElement>))>; + +export { TextFieldGroupProps } + +export { TextFieldProps } + +export { textFieldTokens } + +// @public (undocumented) +export const TextL: FunctionComponent<PropsType< { +size: { +l: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { textL } + +export { textLBold } + +// @public (undocumented) +export const TextM: FunctionComponent<PropsType< { +size: { +m: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { textM } + +export { textMBold } + +// @public (undocumented) +export const TextS: FunctionComponent<PropsType< { +size: { +s: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { textS } + +export { textSBold } + +// @public (undocumented) +export const TextSkeleton: FC<PropsType< { +size: { +bodyL: PolymorphicClassName; +bodyM: PolymorphicClassName; +bodyS: PolymorphicClassName; +bodyXS: PolymorphicClassName; +bodyXXS: PolymorphicClassName; +dsplL: PolymorphicClassName; +dsplM: PolymorphicClassName; +dsplS: PolymorphicClassName; +h1: PolymorphicClassName; +h2: PolymorphicClassName; +h3: PolymorphicClassName; +h4: PolymorphicClassName; +h5: PolymorphicClassName; +textL: PolymorphicClassName; +textM: PolymorphicClassName; +textS: PolymorphicClassName; +textXS: PolymorphicClassName; +}; +}> & HTMLAttributes<HTMLDivElement> & SkeletonSizeProps & { +customGradientColor?: string | undefined; +roundness?: 0 | 8 | 12 | 14 | 16 | 18 | 20 | 24 | 28 | 32 | 250 | undefined; +} & SkeletonGradientProps & RefAttributes<HTMLDivElement> & TextSkeletonBaseProps>; + +// @public (undocumented) +export const TextXS: FunctionComponent<PropsType< { +size: { +xs: PolymorphicClassName; +}; +}> & { +noWrap?: boolean | undefined; +breakWord?: boolean | undefined; +color?: string | undefined; +} & SpacingProps & BoldProps & HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>; + +export { textXS } + +export { textXSBold } + +// @public (undocumented) +export const Toast: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +dark: PolymorphicClassName; +light: PolymorphicClassName; +}; +size: { +m: PolymorphicClassName; +}; +closeIconType: { +default: PolymorphicClassName; +}; +pilled: { +true: PolymorphicClassName; +}; +}> & HTMLAttributes<HTMLButtonElement> & CustomToastProps & RefAttributes<HTMLDivElement>>; + +export { ToastPosition } + +export { ToastProps } + +// @public (undocumented) +export const ToastProvider: ({ children }: { + children: ReactNode; +}) => JSX.Element; + +export { ToastRole } + +// @public +export const Toolbar: FunctionComponent<PropsType< { +view: { +default: PolymorphicClassName; +}; +size: { +xs: PolymorphicClassName; +s: PolymorphicClassName; +m: PolymorphicClassName; +l: PolymorphicClassName; +}; +}> & HTMLAttributes<HTMLDivElement> & { +children: ReactNode; +orientation?: "horizontal" | "vertical" | undefined; +hasShadow?: boolean | undefined; +size?: string | undefined; +view?: string | undefined; +} & RefAttributes<HTMLDivElement>>; + +// @public (undocumented) +export const ToolbarDivider: FunctionComponent<PropsType<Variants> & DividerProps & RefAttributes<HTMLDivElement>>; + +export { ToolbarProps } + +export { toolbarTokens } + +// @public (undocumented) +export const Tooltip: ForwardRefExoticComponent<TooltipProps & RefAttributes<HTMLDivElement>>; + +export { TooltipProps } + +export { usePopupContext } + +export { useSegment } + +export { useToast } + +// @public (undocumented) +export const ViewContainer: FunctionComponent<PropsType< { +view: { +onDark: PolymorphicClassName; +onLight: PolymorphicClassName; +}; +}> & HTMLAttributes<HTMLDivElement> & ViewContainerCustomProps & RefAttributes<HTMLAnchorElement>>; + +export { withSkeleton } + + +export * from "@salutejs/plasma-themes/tokens/plasma_giga"; + +// (No @packageDocumentation comment for this package) + +``` diff --git a/packages/plasma-giga/emotion/package.json b/packages/plasma-giga/emotion/package.json new file mode 100644 index 0000000000..0e8061e06b --- /dev/null +++ b/packages/plasma-giga/emotion/package.json @@ -0,0 +1,5 @@ +{ + "module": "es/index.js", + "main": "cjs/index.js", + "types": "../types/index.d.ts" +} diff --git a/packages/plasma-giga/package-lock.json b/packages/plasma-giga/package-lock.json new file mode 100644 index 0000000000..12fdeeb01e --- /dev/null +++ b/packages/plasma-giga/package-lock.json @@ -0,0 +1,33807 @@ +{ + "name": "@salutejs/plasma-giga", + "version": "0.206.0-dev.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@salutejs/plasma-giga", + "version": "0.206.0-dev.0", + "license": "MIT", + "dependencies": { + "@salutejs/plasma-new-hope": "0.227.0-dev.0", + "@salutejs/plasma-themes": "0.27.0-dev.0" + }, + "devDependencies": { + "@babel/cli": "7.24.1", + "@babel/core": "7.24.4", + "@babel/plugin-transform-class-properties": "7.24.1", + "@babel/plugin-transform-react-constant-elements": "7.24.1", + "@babel/preset-env": "7.24.4", + "@babel/preset-react": "7.24.1", + "@babel/preset-typescript": "7.24.1", + "@emotion/babel-plugin": "11.11.0", + "@emotion/react": ">=11", + "@emotion/styled": ">=11", + "@ironkinoko/rollup-plugin-styles": "^4.0.3", + "@linaria/core": "5.0.2", + "@linaria/react": "5.0.3", + "@linaria/rollup": "5.0.4", + "@linaria/vite": "5.0.4", + "@microsoft/api-extractor": "7.38.3", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^25.0.4", + "@rollup/plugin-node-resolve": "^15.1.0", + "@salutejs/plasma-colors": "0.13.1-dev.0", + "@salutejs/plasma-core": "1.189.1-dev.0", + "@salutejs/plasma-cy-utils": "0.120.1-dev.0", + "@salutejs/plasma-icons": "1.209.1-dev.0", + "@salutejs/plasma-sb-utils": "0.188.1-dev.0", + "@storybook/addon-docs": "7.6.17", + "@storybook/addon-essentials": "7.6.17", + "@storybook/addons": "7.6.17", + "@storybook/react": "7.6.17", + "@storybook/react-vite": "7.6.17", + "@storybook/theming": "7.6.17", + "@types/node": "16.7.13", + "@types/react": "18.0.28", + "@types/react-dom": "18.0.11", + "@types/styled-components": "5.1.0", + "@vitejs/plugin-react": "3.1.0", + "babel-loader": "8.2.2", + "babel-plugin-annotate-pure-calls": "0.4.0", + "babel-plugin-styled-components": "1.13.2", + "default-browser-id": "2.0.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "storybook": "7.6.17", + "styled-components": "5.3.1", + "typescript": "4.2.4", + "typescript-coverage-report": "0.7.0", + "vite": "4.5.3" + }, + "peerDependencies": { + "@emotion/react": ">=11", + "@emotion/styled": ">=11", + "react": ">=16.13.1", + "react-dom": ">=16.13.1", + "styled-components": "^5.3.1" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@aw-web-design/x-default-browser": { + "version": "1.4.126", + "resolved": "https://registry.npmjs.org/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz", + "integrity": "sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==", + "dev": true, + "dependencies": { + "default-browser-id": "3.0.0" + }, + "bin": { + "x-default-browser": "bin/x-default-browser.js" + } + }, + "node_modules/@aw-web-design/x-default-browser/node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/@aw-web-design/x-default-browser/node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@aw-web-design/x-default-browser/node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@babel/cli": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.1.tgz", + "integrity": "sha512-HbmrtxyFUr34LwAlV9jS+sSIjUp4FpdtIMGwgufY3AsxrIfsh/HxlMTywsONAZsU0RMYbZtbZFpUCrSGs7o0EA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "commander": "^4.0.1", + "convert-source-map": "^2.0.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.2.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0" + }, + "bin": { + "babel": "bin/babel.js", + "babel-external-helpers": "bin/babel-external-helpers.js" + }, + "engines": { + "node": ">=6.9.0" + }, + "optionalDependencies": { + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", + "chokidar": "^3.4.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", + "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.4", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "dependencies": { + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", + "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", + "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", + "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz", + "integrity": "sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", + "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.23.3.tgz", + "integrity": "sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-default-from": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.23.3.tgz", + "integrity": "sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", + "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", + "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", + "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz", + "integrity": "sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", + "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", + "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", + "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", + "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", + "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", + "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", + "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-flow": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", + "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", + "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", + "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", + "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", + "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", + "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", + "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", + "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", + "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", + "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.1.tgz", + "integrity": "sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", + "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", + "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", + "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", + "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz", + "integrity": "sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", + "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz", + "integrity": "sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-typescript": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", + "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", + "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.4.tgz", + "integrity": "sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.4", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.4", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.1", + "@babel/plugin-syntax-import-attributes": "^7.24.1", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.1", + "@babel/plugin-transform-async-generator-functions": "^7.24.3", + "@babel/plugin-transform-async-to-generator": "^7.24.1", + "@babel/plugin-transform-block-scoped-functions": "^7.24.1", + "@babel/plugin-transform-block-scoping": "^7.24.4", + "@babel/plugin-transform-class-properties": "^7.24.1", + "@babel/plugin-transform-class-static-block": "^7.24.4", + "@babel/plugin-transform-classes": "^7.24.1", + "@babel/plugin-transform-computed-properties": "^7.24.1", + "@babel/plugin-transform-destructuring": "^7.24.1", + "@babel/plugin-transform-dotall-regex": "^7.24.1", + "@babel/plugin-transform-duplicate-keys": "^7.24.1", + "@babel/plugin-transform-dynamic-import": "^7.24.1", + "@babel/plugin-transform-exponentiation-operator": "^7.24.1", + "@babel/plugin-transform-export-namespace-from": "^7.24.1", + "@babel/plugin-transform-for-of": "^7.24.1", + "@babel/plugin-transform-function-name": "^7.24.1", + "@babel/plugin-transform-json-strings": "^7.24.1", + "@babel/plugin-transform-literals": "^7.24.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", + "@babel/plugin-transform-member-expression-literals": "^7.24.1", + "@babel/plugin-transform-modules-amd": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-modules-systemjs": "^7.24.1", + "@babel/plugin-transform-modules-umd": "^7.24.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.24.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", + "@babel/plugin-transform-numeric-separator": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.1", + "@babel/plugin-transform-object-super": "^7.24.1", + "@babel/plugin-transform-optional-catch-binding": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.1", + "@babel/plugin-transform-parameters": "^7.24.1", + "@babel/plugin-transform-private-methods": "^7.24.1", + "@babel/plugin-transform-private-property-in-object": "^7.24.1", + "@babel/plugin-transform-property-literals": "^7.24.1", + "@babel/plugin-transform-regenerator": "^7.24.1", + "@babel/plugin-transform-reserved-words": "^7.24.1", + "@babel/plugin-transform-shorthand-properties": "^7.24.1", + "@babel/plugin-transform-spread": "^7.24.1", + "@babel/plugin-transform-sticky-regex": "^7.24.1", + "@babel/plugin-transform-template-literals": "^7.24.1", + "@babel/plugin-transform-typeof-symbol": "^7.24.1", + "@babel/plugin-transform-unicode-escapes": "^7.24.1", + "@babel/plugin-transform-unicode-property-regex": "^7.24.1", + "@babel/plugin-transform-unicode-regex": "^7.24.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.23.3.tgz", + "integrity": "sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-flow-strip-types": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz", + "integrity": "sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-transform-react-display-name": "^7.24.1", + "@babel/plugin-transform-react-jsx": "^7.23.4", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", + "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-typescript": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz", + "integrity": "sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.6", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register/node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@babel/register/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/register/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "dependencies": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@base2/pretty-print-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz", + "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", + "dev": true + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dev": true, + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/cache/node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", + "dev": true + }, + "node_modules/@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, + "dependencies": { + "@emotion/memoize": "0.7.4" + } + }, + "node_modules/@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 + }, + "node_modules/@emotion/react": { + "version": "11.11.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", + "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", + "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", + "dev": true, + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/serialize/node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + }, + "node_modules/@emotion/serialize/node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "dev": true + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==", + "dev": true + }, + "node_modules/@emotion/styled": { + "version": "11.11.5", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz", + "integrity": "sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.2", + "@emotion/serialize": "^1.1.4", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/styled/node_modules/@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "dev": true, + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/styled/node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + }, + "node_modules/@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "dev": true + }, + "node_modules/@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "dev": true, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==", + "dev": true + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==", + "dev": true + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@fal-works/esbuild-plugin-global-externals": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz", + "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==", + "dev": true + }, + "node_modules/@floating-ui/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "dependencies": { + "@floating-ui/utils": "^0.2.1" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz", + "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.7" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.22", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.22.tgz", + "integrity": "sha512-LNv4azPt8SpT4WW7Kku5JNVjLk2GcS0bGGjFTAgqOONRFo9r/aaGHHPpdiIuQbB1t8shmWyWqTTUDmZ9fcNshg==", + "dependencies": { + "@floating-ui/react-dom": "^2.1.1", + "@floating-ui/utils": "^0.2.7", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", + "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==" + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@hypnosphi/create-react-context": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", + "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", + "dev": true, + "dependencies": { + "gud": "^1.0.0", + "warning": "^4.0.3" + }, + "peerDependencies": { + "prop-types": "^15.0.0", + "react": ">=0.14.0" + } + }, + "node_modules/@ironkinoko/rollup-plugin-styles": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@ironkinoko/rollup-plugin-styles/-/rollup-plugin-styles-4.0.3.tgz", + "integrity": "sha512-FU7Hko5Z9bu3PW14XXRbKE91Hn0iWEpXQW4YzUIOMNyJ9VrIoO5sImyzIo5PRc9o9buTePhygGQ4OEe3bvOTdQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.2", + "cosmiconfig": "^7.0.1", + "cssnano": "^5.1.14", + "fs-extra": "^10.0.0", + "icss-utils": "^5.1.0", + "mime-types": "^2.1.34", + "p-queue": "^6.6.2", + "postcss": "^8.4.5", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "query-string": "^7.1.0", + "resolve": "^1.22.0", + "resolve.exports": "^1.1.0", + "source-map-js": "^1.0.2", + "tslib": "^2.3.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "rollup": "^2.63.0 || 3.x" + } + }, + "node_modules/@ironkinoko/rollup-plugin-styles/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@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" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@ironkinoko/rollup-plugin-styles/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@ironkinoko/rollup-plugin-styles/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ironkinoko/rollup-plugin-styles/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@ironkinoko/rollup-plugin-styles/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ironkinoko/rollup-plugin-styles/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@ironkinoko/rollup-plugin-styles/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@ironkinoko/rollup-plugin-styles/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@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, + "dependencies": { + "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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.3.0.tgz", + "integrity": "sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA==", + "dev": true, + "dependencies": { + "glob": "^7.2.0", + "glob-promise": "^4.2.0", + "magic-string": "^0.27.0", + "react-docgen-typescript": "^2.2.2" + }, + "peerDependencies": { + "typescript": ">= 4.3.x", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@juggle/resize-observer": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", + "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", + "dev": true + }, + "node_modules/@linaria/babel-preset": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@linaria/babel-preset/-/babel-preset-5.0.4.tgz", + "integrity": "sha512-OMhlD6gc/+6DFLkadoavlxCtTIElo/UdDMeQH6I/CAL3hgfmHyIXJPrGObTa7jvQKddUaKvFIHGAVB7pz6J8Qg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.15", + "@babel/generator": "^7.22.15", + "@babel/helper-module-imports": "^7.22.15", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15", + "@linaria/core": "^5.0.2", + "@linaria/logger": "^5.0.0", + "@linaria/shaker": "^5.0.3", + "@linaria/tags": "^5.0.2", + "@linaria/utils": "^5.0.2", + "cosmiconfig": "^8.0.0", + "happy-dom": "10.8.0", + "source-map": "^0.7.3", + "stylis": "^3.5.4", + "ts-invariant": "^0.10.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@linaria/babel-preset/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@linaria/babel-preset/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@linaria/babel-preset/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@linaria/babel-preset/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@linaria/babel-preset/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@linaria/babel-preset/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@linaria/babel-preset/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@linaria/babel-preset/node_modules/stylis": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", + "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==", + "dev": true + }, + "node_modules/@linaria/core": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@linaria/core/-/core-5.0.2.tgz", + "integrity": "sha512-l5jQq7w9kDvonfr/0MBF47Dagx9Y9f/o5Q8j3zv7GepwG/yHQdbjKr0tq07rx2fSDDX7Nbqlxk6k9Ymir/NGpg==", + "dependencies": { + "@linaria/logger": "^5.0.0", + "@linaria/tags": "^5.0.2", + "@linaria/utils": "^5.0.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@linaria/logger": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@linaria/logger/-/logger-5.0.0.tgz", + "integrity": "sha512-PZd5H0I4F84U0kXSE+vD75ltIGDxEA6gMDNWS2aDZFitmdlQM5rIXqvKFrp5NsHa7a3AH+I2Hxm0dg60WZF7vg==", + "dependencies": { + "debug": "^4.3.4", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@linaria/react": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@linaria/react/-/react-5.0.3.tgz", + "integrity": "sha512-faTQHnUlrAz0Lodu+rr6Yx59rX0nqFOrZ5/IdlfQcTRz9VebyVL4vtA3AOecmn1YFZjMpqjopT0OzNz6GknQSg==", + "dependencies": { + "@emotion/is-prop-valid": "^1.2.0", + "@linaria/core": "^5.0.2", + "@linaria/tags": "^5.0.2", + "@linaria/utils": "^5.0.2", + "minimatch": "^9.0.3", + "react-html-attributes": "^1.4.6", + "ts-invariant": "^0.10.3" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/@linaria/react/node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@linaria/react/node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@linaria/react/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@linaria/react/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@linaria/rollup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@linaria/rollup/-/rollup-5.0.4.tgz", + "integrity": "sha512-1Ajo+J1yEeOp2Sjcw3C59YjgCmZ3RcDD6tGv5KmA8DfhHfcegLLqqAO1I4Q5VvgVgErSrAzicn/sIsyWtNExOw==", + "dev": true, + "dependencies": { + "@linaria/babel-preset": "^5.0.4", + "@linaria/logger": "^5.0.0", + "@linaria/utils": "^5.0.2", + "@linaria/vite": "^5.0.4", + "@rollup/pluginutils": "^5.0.4" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "rollup": "1.20.0||^2.0.0||^3.0.0" + } + }, + "node_modules/@linaria/shaker": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@linaria/shaker/-/shaker-5.0.3.tgz", + "integrity": "sha512-2a3pzYs09Iz88e+VG4OAQVRSIjxkbj7S4ju81ZTJVbZIWSR1kGsbX5OtJkRrh/AbKRrrUMW0DBS4PPgd0fks4A==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.15", + "@babel/generator": "^7.22.15", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-runtime": "^7.22.15", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/preset-env": "^7.22.15", + "@linaria/logger": "^5.0.0", + "@linaria/utils": "^5.0.2", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24", + "ts-invariant": "^0.10.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@linaria/tags": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@linaria/tags/-/tags-5.0.2.tgz", + "integrity": "sha512-opcORl2sA6WkBjTNLHTgpet97dNKnwPRX/QGGZMykBsvGH3AsnEg/bT31cKBMBhL+YBGQsCdBmolxvCkWPOXQw==", + "dependencies": { + "@babel/generator": "^7.22.15", + "@linaria/logger": "^5.0.0", + "@linaria/utils": "^5.0.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@linaria/utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@linaria/utils/-/utils-5.0.2.tgz", + "integrity": "sha512-ZL8Yz4IIr9A8a5+o5LRnEpgdzIkyj4yKJrhw5Zv8wwvL+d/MHUK0q+l/KvxBmuYdcF+YYVHZ9eeBHTQBSL7r/w==", + "dependencies": { + "@babel/core": "^7.22.15", + "@babel/generator": "^7.22.15", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15", + "@linaria/logger": "^5.0.0", + "babel-merge": "^3.0.0", + "find-up": "^5.0.0", + "minimatch": "^9.0.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@linaria/utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@linaria/utils/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@linaria/vite": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@linaria/vite/-/vite-5.0.4.tgz", + "integrity": "sha512-T3gPaUvf4sfM2D74ZAehTWSE6mLZ/qhzWzwid1siKPOAW1F4m1mYjkdL7dPZGc97pg+JaFBnHXXIOfz5/5fwBQ==", + "dev": true, + "dependencies": { + "@linaria/babel-preset": "^5.0.4", + "@linaria/logger": "^5.0.0", + "@linaria/utils": "^5.0.2", + "@rollup/pluginutils": "^5.0.4" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "vite": ">=3.2.7" + } + }, + "node_modules/@mdx-js/react": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz", + "integrity": "sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==", + "dev": true, + "dependencies": { + "@types/mdx": "^2.0.0", + "@types/react": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/@microsoft/api-extractor": { + "version": "7.38.3", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.38.3.tgz", + "integrity": "sha512-xt9iYyC5f39281j77JTA9C3ISJpW1XWkCcnw+2vM78CPnro6KhPfwQdPDfwS5JCPNuq0grm8cMdPUOPvrchDWw==", + "dev": true, + "dependencies": { + "@microsoft/api-extractor-model": "7.28.2", + "@microsoft/tsdoc": "0.14.2", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.61.0", + "@rushstack/rig-package": "0.5.1", + "@rushstack/ts-command-line": "4.17.1", + "colors": "~1.2.1", + "lodash": "~4.17.15", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "source-map": "~0.6.1", + "typescript": "~5.0.4" + }, + "bin": { + "api-extractor": "bin/api-extractor" + } + }, + "node_modules/@microsoft/api-extractor-model": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.28.2.tgz", + "integrity": "sha512-vkojrM2fo3q4n4oPh4uUZdjJ2DxQ2+RnDQL/xhTWSRUNPF6P4QyrvY357HBxbnltKcYu+nNNolVqc6TIGQ73Ig==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "0.14.2", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.61.0" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@microsoft/tsdoc": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", + "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", + "dev": true + }, + "node_modules/@microsoft/tsdoc-config": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", + "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "0.14.2", + "ajv": "~6.12.6", + "jju": "~1.4.0", + "resolve": "~1.19.0" + } + }, + "node_modules/@microsoft/tsdoc-config/node_modules/resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@ndelangen/get-tarball": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@ndelangen/get-tarball/-/get-tarball-3.0.9.tgz", + "integrity": "sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==", + "dev": true, + "dependencies": { + "gunzip-maybe": "^1.4.2", + "pump": "^3.0.0", + "tar-fs": "^2.1.1" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", + "dev": true, + "optional": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@popperjs/core": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz", + "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", + "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", + "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz", + "integrity": "sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz", + "integrity": "sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.2.tgz", + "integrity": "sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.3.tgz", + "integrity": "sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", + "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-1.2.2.tgz", + "integrity": "sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.4", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.3", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.2", + "@radix-ui/react-portal": "1.0.3", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz", + "integrity": "sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.0.3.tgz", + "integrity": "sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.0.4.tgz", + "integrity": "sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-toggle": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toolbar": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.0.4.tgz", + "integrity": "sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-separator": "1.0.3", + "@radix-ui/react-toggle-group": "1.0.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@react-native-community/cli": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-12.3.2.tgz", + "integrity": "sha512-WgoUWwLDcf/G1Su2COUUVs3RzAwnV/vUTdISSpAUGgSc57mPabaAoUctKTnfYEhCnE3j02k3VtaVPwCAFRO3TQ==", + "dev": true, + "dependencies": { + "@react-native-community/cli-clean": "12.3.2", + "@react-native-community/cli-config": "12.3.2", + "@react-native-community/cli-debugger-ui": "12.3.2", + "@react-native-community/cli-doctor": "12.3.2", + "@react-native-community/cli-hermes": "12.3.2", + "@react-native-community/cli-plugin-metro": "12.3.2", + "@react-native-community/cli-server-api": "12.3.2", + "@react-native-community/cli-tools": "12.3.2", + "@react-native-community/cli-types": "12.3.2", + "chalk": "^4.1.2", + "commander": "^9.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "prompts": "^2.4.2", + "semver": "^7.5.2" + }, + "bin": { + "react-native": "build/bin.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native-community/cli-clean": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-12.3.2.tgz", + "integrity": "sha512-90k2hCX0ddSFPT7EN7h5SZj0XZPXP0+y/++v262hssoey3nhurwF57NGWN0XAR0o9BSW7+mBfeInfabzDraO6A==", + "dev": true, + "dependencies": { + "@react-native-community/cli-tools": "12.3.2", + "chalk": "^4.1.2", + "execa": "^5.0.0" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-config": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-12.3.2.tgz", + "integrity": "sha512-UUCzDjQgvAVL/57rL7eOuFUhd+d+6qfM7V8uOegQFeFEmSmvUUDLYoXpBa5vAK9JgQtSqMBJ1Shmwao+/oElxQ==", + "dev": true, + "dependencies": { + "@react-native-community/cli-tools": "12.3.2", + "chalk": "^4.1.2", + "cosmiconfig": "^5.1.0", + "deepmerge": "^4.3.0", + "glob": "^7.1.3", + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-debugger-ui": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.2.tgz", + "integrity": "sha512-nSWQUL+51J682DlfcC1bjkUbQbGvHCC25jpqTwHIjmmVjYCX1uHuhPSqQKgPNdvtfOkrkACxczd7kVMmetxY2Q==", + "dev": true, + "dependencies": { + "serve-static": "^1.13.1" + } + }, + "node_modules/@react-native-community/cli-doctor": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-12.3.2.tgz", + "integrity": "sha512-GrAabdY4qtBX49knHFvEAdLtCjkmndjTeqhYO6BhsbAeKOtspcLT/0WRgdLIaKODRa61ADNB3K5Zm4dU0QrZOg==", + "dev": true, + "dependencies": { + "@react-native-community/cli-config": "12.3.2", + "@react-native-community/cli-platform-android": "12.3.2", + "@react-native-community/cli-platform-ios": "12.3.2", + "@react-native-community/cli-tools": "12.3.2", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.10.0", + "execa": "^5.0.0", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "semver": "^7.5.2", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@react-native-community/cli-hermes": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-12.3.2.tgz", + "integrity": "sha512-SL6F9O8ghp4ESBFH2YAPLtIN39jdnvGBKnK4FGKpDCjtB3DnUmDsGFlH46S+GGt5M6VzfG2eeKEOKf3pZ6jUzA==", + "dev": true, + "dependencies": { + "@react-native-community/cli-platform-android": "12.3.2", + "@react-native-community/cli-tools": "12.3.2", + "chalk": "^4.1.2", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-android": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.2.tgz", + "integrity": "sha512-MZ5nO8yi/N+Fj2i9BJcJ9C/ez+9/Ir7lQt49DWRo9YDmzye66mYLr/P2l/qxsixllbbDi7BXrlLpxaEhMrDopg==", + "dev": true, + "dependencies": { + "@react-native-community/cli-tools": "12.3.2", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-xml-parser": "^4.2.4", + "glob": "^7.1.3", + "logkitty": "^0.7.1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-ios": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.2.tgz", + "integrity": "sha512-OcWEAbkev1IL6SUiQnM6DQdsvfsKZhRZtoBNSj9MfdmwotVZSOEZJ+IjZ1FR9ChvMWayO9ns/o8LgoQxr1ZXeg==", + "dev": true, + "dependencies": { + "@react-native-community/cli-tools": "12.3.2", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-xml-parser": "^4.0.12", + "glob": "^7.1.3", + "ora": "^5.4.1" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-plugin-metro": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.2.tgz", + "integrity": "sha512-FpFBwu+d2E7KRhYPTkKvQsWb2/JKsJv+t1tcqgQkn+oByhp+qGyXBobFB8/R3yYvRRDCSDhS+atWTJzk9TjM8g==", + "dev": true + }, + "node_modules/@react-native-community/cli-server-api": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-12.3.2.tgz", + "integrity": "sha512-iwa7EO9XFA/OjI5pPLLpI/6mFVqv8L73kNck3CNOJIUCCveGXBKK0VMyOkXaf/BYnihgQrXh+x5cxbDbggr7+Q==", + "dev": true, + "dependencies": { + "@react-native-community/cli-debugger-ui": "12.3.2", + "@react-native-community/cli-tools": "12.3.2", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^7.5.1" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@react-native-community/cli-tools": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-12.3.2.tgz", + "integrity": "sha512-nDH7vuEicHI2TI0jac/DjT3fr977iWXRdgVAqPZFFczlbs7A8GQvEdGnZ1G8dqRUmg+kptw0e4hwczAOG89JzQ==", + "dev": true, + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@react-native-community/cli-types": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-12.3.2.tgz", + "integrity": "sha512-9D0UEFqLW8JmS16mjHJxUJWX8E+zJddrHILSH8AJHZ0NNHv4u2DXKdb0wFLMobFxGNxPT+VSOjc60fGvXzWHog==", + "dev": true, + "dependencies": { + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@react-native-community/cli/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@react-native-community/cli/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@react-native/assets-registry": { + "version": "0.73.1", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.73.1.tgz", + "integrity": "sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.73.3", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.3.tgz", + "integrity": "sha512-+zQrDDbz6lB48LyzFHxNCgXDCBHH+oTRdXAjikRcBUdeG9St9ABbYFLtb799zSxLOrCqFVyXqhJR2vlgLLEbcg==", + "dev": true, + "dependencies": { + "@react-native/codegen": "0.73.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-preset": { + "version": "0.73.20", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.73.20.tgz", + "integrity": "sha512-fU9NqkusbfFq71l4BWQfqqD/lLcLC0MZ++UYgieA3j8lIEppJTLVauv2RwtD2yltBkjebgYEC5Rwvt1l0MUBXw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.73.3", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/codegen": { + "version": "0.73.2", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.2.tgz", + "integrity": "sha512-lfy8S7umhE3QLQG5ViC4wg5N1Z+E6RnaeIw8w1voroQsXXGPB72IBozh8dAHR3+ceTxIU0KX3A8OpJI8e1+HpQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.0", + "flow-parser": "^0.206.0", + "glob": "^7.1.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.73.14", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.14.tgz", + "integrity": "sha512-KzIwsTvAJrXPtwhGOSm+OcJH1B8TpY8cS4xxzu/e2qv3a2n4VLePHTPAfco1tmvekV8OHWvvD9JSIX7i2fB1gg==", + "dev": true, + "dependencies": { + "@react-native-community/cli-server-api": "12.3.2", + "@react-native-community/cli-tools": "12.3.2", + "@react-native/dev-middleware": "0.73.7", + "@react-native/metro-babel-transformer": "0.73.14", + "chalk": "^4.0.0", + "execa": "^5.1.1", + "metro": "^0.80.3", + "metro-config": "^0.80.3", + "metro-core": "^0.80.3", + "node-fetch": "^2.2.0", + "readline": "^1.3.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.73.3", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz", + "integrity": "sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware": { + "version": "0.73.7", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.73.7.tgz", + "integrity": "sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg==", + "dev": true, + "dependencies": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.73.3", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^1.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "open": "^7.0.3", + "serve-static": "^1.13.1", + "temp-dir": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native/gradle-plugin": { + "version": "0.73.4", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz", + "integrity": "sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/js-polyfills": { + "version": "0.73.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz", + "integrity": "sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/metro-babel-transformer": { + "version": "0.73.14", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.14.tgz", + "integrity": "sha512-5wLeYw/lormpSqYfI9H/geZ/EtPmi+x5qLkEit15Q/70hkzYo/M+aWztUtbOITfgTEOP8d6ybROzoGsqgyZLcw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@react-native/babel-preset": "0.73.20", + "hermes-parser": "0.15.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.73.2", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz", + "integrity": "sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==", + "dev": true + }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.73.4", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz", + "integrity": "sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==", + "dev": true, + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz", + "integrity": "sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + }, + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "25.0.8", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz", + "integrity": "sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@rushstack/node-core-library": { + "version": "3.61.0", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.61.0.tgz", + "integrity": "sha512-tdOjdErme+/YOu4gPed3sFS72GhtWCgNV9oDsHDnoLY5oDfwjKUc9Z+JOZZ37uAxcm/OCahDHfuu2ugqrfWAVQ==", + "dev": true, + "dependencies": { + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "z-schema": "~5.0.2" + }, + "peerDependencies": { + "@types/node": "*" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@rushstack/node-core-library/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@rushstack/rig-package": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.5.1.tgz", + "integrity": "sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==", + "dev": true, + "dependencies": { + "resolve": "~1.22.1", + "strip-json-comments": "~3.1.1" + } + }, + "node_modules/@rushstack/ts-command-line": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.17.1.tgz", + "integrity": "sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==", + "dev": true, + "dependencies": { + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "colors": "~1.2.1", + "string-argv": "~0.3.1" + } + }, + "node_modules/@salutejs/input-core": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@salutejs/input-core/-/input-core-2.1.2.tgz", + "integrity": "sha512-Y4tNTtmz7R50DysojQac2Z8JIKK1JSRCc7P7D7IefQQeFaeLbBTXbXAkMuBipTRXDR3kLs2AHSMcbKbrQRW3qw==" + }, + "node_modules/@salutejs/plasma-colors": { + "version": "0.13.1-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-colors/-/plasma-colors-0.13.1-dev.0.tgz", + "integrity": "sha512-cFplAQDHghg1FyYi1Y5Qv12H9i7d3G8fT0klxN6aCRLENLVAahZHDPGzF8fgCv0e124ha9Nt0LXxB6X0Fpw/5A==", + "dev": true + }, + "node_modules/@salutejs/plasma-core": { + "version": "1.189.1-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-core/-/plasma-core-1.189.1-dev.0.tgz", + "integrity": "sha512-87vSa/15SuQJaohlAmGNuRxPSL0J+u/d8v9WR0v4fX8xedyiW/ym6V+bqcGHusxczrby8OBUivsm2uSS+X/2Sg==", + "dependencies": { + "@popperjs/core": "2.9.2", + "@salutejs/plasma-typo": "0.40.1-dev.0", + "focus-visible": "5.2.0", + "lodash.throttle": "4.1.1", + "react-draggable": "4.4.3", + "react-popper": "2.3.0" + }, + "peerDependencies": { + "react": ">=16.13.1", + "react-dom": ">=16.13.1", + "styled-components": "^5.1.1" + } + }, + "node_modules/@salutejs/plasma-core/node_modules/react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "dependencies": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + }, + "peerDependencies": { + "@popperjs/core": "^2.0.0", + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/@salutejs/plasma-cy-utils": { + "version": "0.120.1-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-cy-utils/-/plasma-cy-utils-0.120.1-dev.0.tgz", + "integrity": "sha512-suo2cuFnh3RZIjlXNTOb/lIOWLZSS3qoGX9Cuba2hQk8emqetAH+qdgU1IEtDdyfZWDmIwaWn+peDLy5UplR4Q==", + "dev": true, + "peerDependencies": { + "react": ">=16.13.1", + "react-dom": ">=16.13.1", + "styled-components": "^5.1.1" + } + }, + "node_modules/@salutejs/plasma-icons": { + "version": "1.209.1-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-icons/-/plasma-icons-1.209.1-dev.0.tgz", + "integrity": "sha512-qX/Ka3wUtMlOIj6kIBdddxYyiDEJ8MeFsdbfSopl6ekXlpK4G6XlUk7gjKqYt3NTf5qYeh7s5XiAKmi/LNZVSg==", + "dev": true, + "peerDependencies": { + "react": ">=16.13.1", + "react-dom": ">=16.13.1", + "styled-components": "^5.1.1" + } + }, + "node_modules/@salutejs/plasma-new-hope": { + "version": "0.227.0-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-new-hope/-/plasma-new-hope-0.227.0-dev.0.tgz", + "integrity": "sha512-TBXDzYxCQsvwNKND2Pk7uBU62sws2Joo4BPEr25u0AD/1JNBtl7yVISVeQoqrY/nQh3LAE54M7N6aep+yXvXAQ==", + "dependencies": { + "@floating-ui/dom": "1.6.10", + "@floating-ui/react": "0.26.22", + "@floating-ui/react-dom": "2.1.1", + "@linaria/core": "5.0.2", + "@linaria/react": "5.0.3", + "@popperjs/core": "2.11.8", + "@salutejs/input-core": "2.1.2", + "@salutejs/plasma-core": "1.189.1-dev.0", + "@salutejs/react-maskinput": "3.2.6", + "classnames": "2.5.1", + "dayjs": "1.11.11", + "focus-visible": "5.2.0", + "lodash.throttle": "4.1.1", + "react-draggable": "4.4.3", + "react-popper": "2.3.0", + "storeon": "3.1.5" + }, + "peerDependencies": { + "react": ">=16.13.1", + "react-dom": ">=16.13.1" + } + }, + "node_modules/@salutejs/plasma-new-hope/node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@salutejs/plasma-new-hope/node_modules/react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "dependencies": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + }, + "peerDependencies": { + "@popperjs/core": "^2.0.0", + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" + } + }, + "node_modules/@salutejs/plasma-sb-utils": { + "version": "0.188.1-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-sb-utils/-/plasma-sb-utils-0.188.1-dev.0.tgz", + "integrity": "sha512-tLYembfpQIjCLH0bfh4Q8bs4kk3v28qqZ5UNkuKr69lilGOt/mD7bJufo6eNfALYmaOA84cHbLpjqWtyMG7QlQ==", + "dev": true, + "dependencies": { + "@salutejs/plasma-colors": "0.13.1-dev.0", + "@salutejs/plasma-core": "1.189.1-dev.0", + "param-case": "^3.0.4" + }, + "peerDependencies": { + "react": ">=16.13.1", + "react-dom": ">=16.13.1", + "styled-components": "^5.1.1" + } + }, + "node_modules/@salutejs/plasma-themes": { + "version": "0.27.0-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-themes/-/plasma-themes-0.27.0-dev.0.tgz", + "integrity": "sha512-2ISnEhEZaTMTLwlJ6oFZkVo3Skxz1w+JAORS4AX/A5LFnviuPxCDlk55VDj8ENKHZwg0JG/rYogi8Dd274IYRg==" + }, + "node_modules/@salutejs/plasma-typo": { + "version": "0.40.1-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-typo/-/plasma-typo-0.40.1-dev.0.tgz", + "integrity": "sha512-2upt63DI5kLdCtp5nfpsBuPCu4eSPDva/dg3ChnTLF0FrDW5Bbtp5CbylOnuKkvaxZ2CVr5fhRtXkL2hZniRBg==", + "peerDependencies": { + "react": ">=16.13.1", + "react-dom": ">=16.13.1", + "styled-components": "^5.1.1" + } + }, + "node_modules/@salutejs/react-maskinput": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@salutejs/react-maskinput/-/react-maskinput-3.2.6.tgz", + "integrity": "sha512-2PCmEAISvTIERnLQ9h358a6f/Fj87Hjgw85h/T5TUUMTQXbCpHLzOeCdy9zyuj+SXqN58voajiQ05wE+8hrsGw==", + "dependencies": { + "@salutejs/input-core": "^2.1.2" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@semantic-ui-react/event-stack": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@semantic-ui-react/event-stack/-/event-stack-3.1.3.tgz", + "integrity": "sha512-FdTmJyWvJaYinHrKRsMLDrz4tTMGdFfds299Qory53hBugiDvGC0tEJf+cHsi5igDwWb/CLOgOiChInHwq8URQ==", + "dev": true, + "dependencies": { + "exenv": "^1.2.2", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@stardust-ui/react-component-event-listener": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@stardust-ui/react-component-event-listener/-/react-component-event-listener-0.38.0.tgz", + "integrity": "sha512-sIP/e0dyOrrlb8K7KWumfMxj/gAifswTBC4o68Aa+C/GA73ccRp/6W1VlHvF/dlOR4KLsA+5SKnhjH36xzPsWg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.1.2", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^16.8.0", + "react-dom": "^16.8.0" + } + }, + "node_modules/@stardust-ui/react-component-ref": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@stardust-ui/react-component-ref/-/react-component-ref-0.38.0.tgz", + "integrity": "sha512-xjs6WnvJVueSIXMWw0C3oWIgAPpcD03qw43oGOjUXqFktvpNkB73JoKIhS4sCrtQxBdct75qqr4ZL6JiyPcESw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.1.2", + "prop-types": "^15.7.2", + "react-is": "^16.6.3" + }, + "peerDependencies": { + "react": "^16.8.0", + "react-dom": "^16.8.0" + } + }, + "node_modules/@storybook/addon-actions": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.6.17.tgz", + "integrity": "sha512-TBphs4v6LRfyTpFo/WINF0TkMaE3rrNog7wW5mbz6n0j8o53kDN4o9ZEcygSL5zQX43CAaghQTeDCss7ueG7ZQ==", + "dev": true, + "dependencies": { + "@storybook/core-events": "7.6.17", + "@storybook/global": "^5.0.0", + "@types/uuid": "^9.0.1", + "dequal": "^2.0.2", + "polished": "^4.2.2", + "uuid": "^9.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-backgrounds": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.6.17.tgz", + "integrity": "sha512-7dize7x8+37PH77kmt69b0xSaeDqOcZ4fpzW6+hk53hIaCVU26eGs4+j+743Xva31eOgZWNLupUhOpUDc6SqZw==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-controls": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.6.17.tgz", + "integrity": "sha512-zR0aLaUF7FtV/nMRyfniFbCls/e0DAAoXACuOAUAwNAv0lbIS8AyZZiHSmKucCvziUQ6WceeCC7+du3C+9y0rQ==", + "dev": true, + "dependencies": { + "@storybook/blocks": "7.6.17", + "lodash": "^4.17.21", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-docs": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.6.17.tgz", + "integrity": "sha512-FKa4Mdy7nhgvEVZJHpMkHriDzpVHbohn87zv9NCL+Ctjs1iAmzGwxEm0culszyDS1HN2ToVoY0h8CSi2RSSZqA==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.3.1", + "@mdx-js/react": "^2.1.5", + "@storybook/blocks": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/components": "7.6.17", + "@storybook/csf-plugin": "7.6.17", + "@storybook/csf-tools": "7.6.17", + "@storybook/global": "^5.0.0", + "@storybook/mdx2-csf": "^1.0.0", + "@storybook/node-logger": "7.6.17", + "@storybook/postinstall": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/react-dom-shim": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", + "fs-extra": "^11.1.0", + "remark-external-links": "^8.0.0", + "remark-slug": "^6.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-docs/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@storybook/addon-docs/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@storybook/addon-docs/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/addon-essentials": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.6.17.tgz", + "integrity": "sha512-qlSpamxuYfT2taF953nC9QijGF2pSbg1ewMNpdwLTj16PTZvR/d8NCDMTJujI1bDwM2m18u8Yc43ibh5LEmxCw==", + "dev": true, + "dependencies": { + "@storybook/addon-actions": "7.6.17", + "@storybook/addon-backgrounds": "7.6.17", + "@storybook/addon-controls": "7.6.17", + "@storybook/addon-docs": "7.6.17", + "@storybook/addon-highlight": "7.6.17", + "@storybook/addon-measure": "7.6.17", + "@storybook/addon-outline": "7.6.17", + "@storybook/addon-toolbars": "7.6.17", + "@storybook/addon-viewport": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/manager-api": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview-api": "7.6.17", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-highlight": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.6.17.tgz", + "integrity": "sha512-R1yBPUUqGn+60aJakn8q+5Zt34E/gU3n3VmgPdryP0LJUdZ5q1/RZShoVDV+yYQ40htMH6oaCv3OyyPzFAGJ6A==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-measure": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.6.17.tgz", + "integrity": "sha512-O5vnHZNkduvZ95jf1UssbOl6ivIxzl5tv+4EpScPYId7w700bxWsJH+QX7ip6KlrCf2o3iUhmPe8bm05ghG2KA==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-outline": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.6.17.tgz", + "integrity": "sha512-9o9JXDsYjNaDgz/cY5+jv694+aik/1aiRGGvsCv68e1p/ob0glkGKav4lnJe2VJqD+gCmaARoD8GOJlhoQl8JQ==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-toolbars": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.6.17.tgz", + "integrity": "sha512-UMrchbUHiyWrh6WuGnpy34Jqzkx/63B+MSgb3CW7YsQaXz64kE0Rol0TNSznnB+mYXplcqH+ndI4r4kFsmgwDg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-viewport": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.6.17.tgz", + "integrity": "sha512-sA0QCcf4QAMixWvn8uvRYPfkKCSl6JajJaAspoPqXSxHEpK7uwOlpg3kqFU5XJJPXD0X957M+ONgNvBzYqSpEw==", + "dev": true, + "dependencies": { + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addons": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-7.6.17.tgz", + "integrity": "sha512-Ok18Y698Ccyg++MoUNJNHY0cXUvo8ETFIRLJk1g9ElJ70j6kPgNnzW2pAtZkBNmswHtofZ7pT156cj96k/LgfA==", + "dev": true, + "dependencies": { + "@storybook/manager-api": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/types": "7.6.17" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/blocks": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.6.17.tgz", + "integrity": "sha512-PsNVoe0bX1mMn4Kk3nbKZ0ItDZZ0YJnYAFJ6toAbsyBAbgzg1sce88sQinzvbn58/RT9MPKeWMPB45ZS7ggiNg==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/components": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/docs-tools": "7.6.17", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", + "@types/lodash": "^4.14.167", + "color-convert": "^2.0.1", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.8", + "memoizerific": "^1.11.3", + "polished": "^4.2.2", + "react-colorful": "^5.1.2", + "telejson": "^7.2.0", + "tocbot": "^4.20.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/builder-manager": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.6.17.tgz", + "integrity": "sha512-Sj8hcDYiPCCMfeLzus37czl0zdrAxAz4IyYam2jBjVymrIrcDAFyL1OCZvnq33ft179QYQWhUs9qwzVmlR/ZWg==", + "dev": true, + "dependencies": { + "@fal-works/esbuild-plugin-global-externals": "^2.1.2", + "@storybook/core-common": "7.6.17", + "@storybook/manager": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@types/ejs": "^3.1.1", + "@types/find-cache-dir": "^3.2.1", + "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", + "browser-assert": "^1.2.1", + "ejs": "^3.1.8", + "esbuild": "^0.18.0", + "esbuild-plugin-alias": "^0.2.1", + "express": "^4.17.3", + "find-cache-dir": "^3.0.0", + "fs-extra": "^11.1.0", + "process": "^0.11.10", + "util": "^0.12.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/builder-manager/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@storybook/builder-manager/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@storybook/builder-manager/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/builder-vite": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.6.17.tgz", + "integrity": "sha512-2Q32qalI401EsKKr9Hkk8TAOcHEerqwsjCpQgTNJnCu6GgCVKoVUcb99oRbR9Vyg0xh+jb19XiWqqQujFtLYlQ==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/csf-plugin": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/types": "7.6.17", + "@types/find-cache-dir": "^3.2.1", + "browser-assert": "^1.2.1", + "es-module-lexer": "^0.9.3", + "express": "^4.17.3", + "find-cache-dir": "^3.0.0", + "fs-extra": "^11.1.0", + "magic-string": "^0.30.0", + "rollup": "^2.25.0 || ^3.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@preact/preset-vite": "*", + "typescript": ">= 4.3.x", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0", + "vite-plugin-glimmerx": "*" + }, + "peerDependenciesMeta": { + "@preact/preset-vite": { + "optional": true + }, + "typescript": { + "optional": true + }, + "vite-plugin-glimmerx": { + "optional": true + } + } + }, + "node_modules/@storybook/builder-vite/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@storybook/builder-vite/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@storybook/builder-vite/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/channels": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.17.tgz", + "integrity": "sha512-GFG40pzaSxk1hUr/J/TMqW5AFDDPUSu+HkeE/oqSWJbOodBOLJzHN6CReJS6y1DjYSZLNFt1jftPWZZInG/XUA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/cli": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.6.17.tgz", + "integrity": "sha512-1sCo+nCqyR+nKfTcEidVu8XzNoECC7Y1l+uW38/r7s2f/TdDorXaIGAVrpjbSaXSoQpx5DxYJVaKCcQuOgqwcA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/types": "^7.23.0", + "@ndelangen/get-tarball": "^3.0.7", + "@storybook/codemod": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/core-server": "7.6.17", + "@storybook/csf-tools": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/telemetry": "7.6.17", + "@storybook/types": "7.6.17", + "@types/semver": "^7.3.4", + "@yarnpkg/fslib": "2.10.3", + "@yarnpkg/libzip": "2.3.0", + "chalk": "^4.1.0", + "commander": "^6.2.1", + "cross-spawn": "^7.0.3", + "detect-indent": "^6.1.0", + "envinfo": "^7.7.3", + "execa": "^5.0.0", + "express": "^4.17.3", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "get-npm-tarball-url": "^2.0.3", + "get-port": "^5.1.1", + "giget": "^1.0.0", + "globby": "^11.0.2", + "jscodeshift": "^0.15.1", + "leven": "^3.1.0", + "ora": "^5.4.1", + "prettier": "^2.8.0", + "prompts": "^2.4.0", + "puppeteer-core": "^2.1.1", + "read-pkg-up": "^7.0.1", + "semver": "^7.3.7", + "strip-json-comments": "^3.0.1", + "tempy": "^1.0.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "bin": { + "getstorybook": "bin/index.js", + "sb": "bin/index.js" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/cli/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@storybook/cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@storybook/cli/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@storybook/cli/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@storybook/cli/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/cli/node_modules/jscodeshift": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", + "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/preset-flow": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@babel/register": "^7.22.15", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.23.3", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + }, + "peerDependenciesMeta": { + "@babel/preset-env": { + "optional": true + } + } + }, + "node_modules/@storybook/cli/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@storybook/cli/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/cli/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/cli/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/cli/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/cli/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/@storybook/cli/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@storybook/client-logger": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.17.tgz", + "integrity": "sha512-6WBYqixAXNAXlSaBWwgljWpAu10tPRBJrcFvx2gPUne58EeMM20Gi/iHYBz2kMCY+JLAgeIH7ZxInqwO8vDwiQ==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/codemod": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.6.17.tgz", + "integrity": "sha512-JuTmf2u3C4fCnjO7o3dqRgrq3ozNYfWlrRP8xuIdvT7niMap7a396hJtSKqS10FxCgKFcMAOsRgrCalH1dWxUg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/types": "^7.23.0", + "@storybook/csf": "^0.1.2", + "@storybook/csf-tools": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/types": "7.6.17", + "@types/cross-spawn": "^6.0.2", + "cross-spawn": "^7.0.3", + "globby": "^11.0.2", + "jscodeshift": "^0.15.1", + "lodash": "^4.17.21", + "prettier": "^2.8.0", + "recast": "^0.23.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/codemod/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@storybook/codemod/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@storybook/codemod/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/codemod/node_modules/jscodeshift": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", + "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/preset-flow": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@babel/register": "^7.22.15", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.23.3", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + }, + "peerDependenciesMeta": { + "@babel/preset-env": { + "optional": true + } + } + }, + "node_modules/@storybook/codemod/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/codemod/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/@storybook/components": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.17.tgz", + "integrity": "sha512-lbh7GynMidA+CZcJnstVku6Nhs+YkqjYaZ+mKPugvlVhGVWv0DaaeQFVuZ8cJtUGJ/5FFU4Y+n+gylYUHkGBMA==", + "dev": true, + "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/core-client": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.17.tgz", + "integrity": "sha512-LuDbADK+DPNAOOCXOlvY09hdGVueXlDetsdOJ/DgYnSa9QSWv9Uv+F8QcEgR3QckZJbPlztKJIVLgP2n/Xkijw==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.6.17", + "@storybook/preview-api": "7.6.17" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-common": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.17.tgz", + "integrity": "sha512-me2TP3Q9/qzqCLoDHUSsUF+VS1MHxfHbTVF6vAz0D/COTxzsxLpu9TxTbzJoBCxse6XRb6wWI1RgF1mIcjic7g==", + "dev": true, + "dependencies": { + "@storybook/core-events": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/types": "7.6.17", + "@types/find-cache-dir": "^3.2.1", + "@types/node": "^18.0.0", + "@types/node-fetch": "^2.6.4", + "@types/pretty-hrtime": "^1.0.0", + "chalk": "^4.1.0", + "esbuild": "^0.18.0", + "esbuild-register": "^3.5.0", + "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "glob": "^10.0.0", + "handlebars": "^4.7.7", + "lazy-universal-dotenv": "^4.0.0", + "node-fetch": "^2.0.0", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-common/node_modules/@types/node": { + "version": "18.19.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.21.tgz", + "integrity": "sha512-2Q2NeB6BmiTFQi4DHBzncSoq/cJMLDdhPaAoJFnFCyD9a8VPZRf7a1GAwp1Edb7ROaZc5Jz/tnZyL6EsWMRaqw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@storybook/core-common/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@storybook/core-common/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@storybook/core-common/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@storybook/core-common/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@storybook/core-common/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@storybook/core-common/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/core-common/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@storybook/core-common/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@storybook/core-common/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/core-common/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/core-events": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.17.tgz", + "integrity": "sha512-AriWMCm/k1cxlv10f+jZ1wavThTRpLaN3kY019kHWbYT9XgaSuLU67G7GPr3cGnJ6HuA6uhbzu8qtqVCd6OfXA==", + "dev": true, + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-server": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.6.17.tgz", + "integrity": "sha512-KWGhTTaL1Q14FolcoKKZgytlPJUbH6sbJ1Ptj/84EYWFewcnEgVs0Zlnh1VStRZg+Rd1WC1V4yVd/bbDzxrvQA==", + "dev": true, + "dependencies": { + "@aw-web-design/x-default-browser": "1.4.126", + "@discoveryjs/json-ext": "^0.5.3", + "@storybook/builder-manager": "7.6.17", + "@storybook/channels": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/csf-tools": "7.6.17", + "@storybook/docs-mdx": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/manager": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/telemetry": "7.6.17", + "@storybook/types": "7.6.17", + "@types/detect-port": "^1.3.0", + "@types/node": "^18.0.0", + "@types/pretty-hrtime": "^1.0.0", + "@types/semver": "^7.3.4", + "better-opn": "^3.0.2", + "chalk": "^4.1.0", + "cli-table3": "^0.6.1", + "compression": "^1.7.4", + "detect-port": "^1.3.0", + "express": "^4.17.3", + "fs-extra": "^11.1.0", + "globby": "^11.0.2", + "ip": "^2.0.1", + "lodash": "^4.17.21", + "open": "^8.4.0", + "pretty-hrtime": "^1.0.3", + "prompts": "^2.4.0", + "read-pkg-up": "^7.0.1", + "semver": "^7.3.7", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0", + "util": "^0.12.4", + "util-deprecate": "^1.0.2", + "watchpack": "^2.2.0", + "ws": "^8.2.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-server/node_modules/@types/node": { + "version": "18.19.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.21.tgz", + "integrity": "sha512-2Q2NeB6BmiTFQi4DHBzncSoq/cJMLDdhPaAoJFnFCyD9a8VPZRf7a1GAwp1Edb7ROaZc5Jz/tnZyL6EsWMRaqw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@storybook/core-server/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@storybook/core-server/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@storybook/core-server/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@storybook/core-server/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/core-server/node_modules/ip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", + "dev": true + }, + "node_modules/@storybook/core-server/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@storybook/core-server/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/core-server/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@storybook/core-server/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@storybook/core-server/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/core-server/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/core-server/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@storybook/core-server/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@storybook/csf": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.2.tgz", + "integrity": "sha512-ePrvE/pS1vsKR9Xr+o+YwdqNgHUyXvg+1Xjx0h9LrVx7Zq4zNe06pd63F5EvzTbCbJsHj7GHr9tkiaqm7U8WRA==", + "dev": true, + "dependencies": { + "type-fest": "^2.19.0" + } + }, + "node_modules/@storybook/csf-plugin": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.6.17.tgz", + "integrity": "sha512-xTHv9BUh3bkDVCvcbmdfVF0/e96BdrEgqPJ3G3RmKbSzWLOkQ2U9yiPfHzT0KJWPhVwj12fjfZp0zunu+pcS6Q==", + "dev": true, + "dependencies": { + "@storybook/csf-tools": "7.6.17", + "unplugin": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/csf-tools": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.6.17.tgz", + "integrity": "sha512-dAQtam0EBPeTJYcQPLxXgz4L9JFqD+HWbLFG9CmNIhMMjticrB0mpk1EFIS6vPXk/VsVWpBgMLD7dZlD6YMKcQ==", + "dev": true, + "dependencies": { + "@babel/generator": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "@storybook/csf": "^0.1.2", + "@storybook/types": "7.6.17", + "fs-extra": "^11.1.0", + "recast": "^0.23.1", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/csf-tools/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@storybook/csf-tools/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@storybook/csf-tools/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/docs-mdx": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz", + "integrity": "sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==", + "dev": true + }, + "node_modules/@storybook/docs-tools": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.17.tgz", + "integrity": "sha512-bYrLoj06adqklyLkEwD32C0Ww6t+9ZVvrJHiVT42bIhTRpFiFPAetl1a9KPHtFLnfduh4n2IxIr1jv32ThPDTA==", + "dev": true, + "dependencies": { + "@storybook/core-common": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/types": "7.6.17", + "@types/doctrine": "^0.0.3", + "assert": "^2.1.0", + "doctrine": "^3.0.0", + "lodash": "^4.17.21" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/global": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", + "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", + "dev": true + }, + "node_modules/@storybook/manager": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.17.tgz", + "integrity": "sha512-A1LDDIqMpwRzq/dqkbbiza0QI04o4ZHCl2a3UMDZUV/+QLc2nsr2DAaLk4CVL4/cIc5zGqmIcaOTvprx2YKVBw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/manager-api": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.17.tgz", + "integrity": "sha512-IJIV1Yc6yw1dhCY4tReHCfBnUKDqEBnMyHp3mbXpsaHxnxJZrXO45WjRAZIKlQKhl/Ge1CrnznmHRCmYgqmrWg==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/mdx2-csf": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-1.1.0.tgz", + "integrity": "sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==", + "dev": true + }, + "node_modules/@storybook/node-logger": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.17.tgz", + "integrity": "sha512-w59MQuXhhUNrUVmVkXhMwIg2nvFWjdDczLTwYLorhfsE36CWeUOY5QCZWQy0Qf/h+jz8Uo7Evy64qn18v9C4wA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/postinstall": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.6.17.tgz", + "integrity": "sha512-WaWqB8o9vUc9aaVls+povQSVirf1Xd1LZcVhUKfAocAF3mzYUsnJsVqvnbjRj/F96UFVihOyDt9Zjl/9OvrCvQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/preview": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.6.17.tgz", + "integrity": "sha512-LvkMYK/y6alGjwRVNDIKL1lFlbyZ0H0c8iAbcQkiMoaFiujMQyVswMDKlWcj42Upfr/B1igydiruomc+eUt0mw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/preview-api": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.17.tgz", + "integrity": "sha512-wLfDdI9RWo1f2zzFe54yRhg+2YWyxLZvqdZnSQ45mTs4/7xXV5Wfbv3QNTtcdw8tT3U5KRTrN1mTfTCiRJc0Kw==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/types": "7.6.17", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/react": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.6.17.tgz", + "integrity": "sha512-lVqzQSU03rRJWYW+gK2gq6mSo3/qtnVICY8B8oP7gc36jVu4ksDIu45bTfukM618ODkUZy0vZe6T4engK3azjA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.6.17", + "@storybook/core-client": "7.6.17", + "@storybook/docs-tools": "7.6.17", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "7.6.17", + "@storybook/react-dom-shim": "7.6.17", + "@storybook/types": "7.6.17", + "@types/escodegen": "^0.0.6", + "@types/estree": "^0.0.51", + "@types/node": "^18.0.0", + "acorn": "^7.4.1", + "acorn-jsx": "^5.3.1", + "acorn-walk": "^7.2.0", + "escodegen": "^2.1.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2", + "react-element-to-jsx-string": "^15.0.0", + "ts-dedent": "^2.0.0", + "type-fest": "~2.19", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@storybook/react-dom-shim": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.17.tgz", + "integrity": "sha512-32Sa/G+WnvaPiQ1Wvjjw5UM9rr2c4GDohwCcWVv3/LJuiFPqNS6zglAtmnsrlIBnUwRBMLMh/ekCTdqMiUmfDw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/react-vite": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-7.6.17.tgz", + "integrity": "sha512-4dIm3CuRl44X1TLzN3WoZh/bChzJF7Ud28li9atj9C8db0bb/y0zl8cahrsRFoR7/LyfqdOVLqaztrnA5SsWfg==", + "dev": true, + "dependencies": { + "@joshwooding/vite-plugin-react-docgen-typescript": "0.3.0", + "@rollup/pluginutils": "^5.0.2", + "@storybook/builder-vite": "7.6.17", + "@storybook/react": "7.6.17", + "@vitejs/plugin-react": "^3.0.1", + "magic-string": "^0.30.0", + "react-docgen": "^7.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/@storybook/react/node_modules/@types/node": { + "version": "18.19.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.14.tgz", + "integrity": "sha512-EnQ4Us2rmOS64nHDWr0XqAD8DsO6f3XR6lf9UIIrZQpUzPVdN/oPuEzfDWNHSyXLvoGgjuEm/sPwFGSSs35Wtg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@storybook/router": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.17.tgz", + "integrity": "sha512-GnyC0j6Wi5hT4qRhSyT8NPtJfGmf82uZw97LQRWeyYu5gWEshUdM7aj40XlNiScd5cZDp0owO1idduVF2k2l2A==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.6.17", + "memoizerific": "^1.11.3", + "qs": "^6.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/telemetry": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.6.17.tgz", + "integrity": "sha512-WOcOAmmengYnGInH98Px44F47DSpLyk20BM+Z/IIQDzfttGOLlxNqBBG1XTEhNRn+AYuk4aZ2JEed2lCjVIxcA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/csf-tools": "7.6.17", + "chalk": "^4.1.0", + "detect-package-manager": "^2.0.1", + "fetch-retry": "^5.0.2", + "fs-extra": "^11.1.0", + "read-pkg-up": "^7.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/telemetry/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@storybook/telemetry/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@storybook/telemetry/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@storybook/telemetry/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/telemetry/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@storybook/telemetry/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/telemetry/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@storybook/theming": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.17.tgz", + "integrity": "sha512-ZbaBt3KAbmBtfjNqgMY7wPMBshhSJlhodyMNQypv+95xLD/R+Az6aBYbpVAOygLaUQaQk4ar7H/Ww6lFIoiFbA==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.6.17", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/types": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.17.tgz", + "integrity": "sha512-GRY0xEJQ0PrL7DY2qCNUdIfUOE0Gsue6N+GBJw9ku1IUDFLJRDOF+4Dx2BvYcVCPI5XPqdWKlEyZdMdKjiQN7Q==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.6.17", + "@types/babel__core": "^7.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/detect-port": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/detect-port/-/detect-port-1.3.5.tgz", + "integrity": "sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==", + "dev": true + }, + "node_modules/@types/doctrine": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.3.tgz", + "integrity": "sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==", + "dev": true + }, + "node_modules/@types/ejs": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.5.tgz", + "integrity": "sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==", + "dev": true + }, + "node_modules/@types/emscripten": { + "version": "1.39.10", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.10.tgz", + "integrity": "sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==", + "dev": true + }, + "node_modules/@types/escodegen": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/escodegen/-/escodegen-0.0.6.tgz", + "integrity": "sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.43", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", + "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/find-cache-dir": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz", + "integrity": "sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==", + "dev": true + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "dev": true, + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", + "dev": true + }, + "node_modules/@types/mdx": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.11.tgz", + "integrity": "sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/mime-types": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", + "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.7.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.13.tgz", + "integrity": "sha512-pLUPDn+YG3FYEt/pHI74HmnJOWzeR+tOIQzUx93pi9M7D8OE7PSLr97HboXwk5F+JS+TLtWuzCOW97AHjmOXXA==", + "dev": true + }, + "node_modules/@types/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true + }, + "node_modules/@types/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.12", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.12.tgz", + "integrity": "sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.0.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", + "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.0.11", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", + "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-native": { + "version": "0.73.0", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.73.0.tgz", + "integrity": "sha512-6ZRPQrYM72qYKGWidEttRe6M5DZBEV5F+MHMHqd4TTYx0tfkcdrUFGdef6CCxY0jXU7wldvd/zA/b0A/kTeJmA==", + "deprecated": "This is a stub types definition. react-native provides its own type definitions, so you do not need this installed.", + "dev": true, + "dependencies": { + "react-native": "*" + } + }, + "node_modules/@types/resolve": { + "version": "1.20.6", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", + "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", + "dev": true + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/styled-components": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.0.tgz", + "integrity": "sha512-ZFlLCuwF5r+4Vb7JUmd+Yr2S0UBdBGmI7ctFTgJMypIp3xOHI4LCFVn2dKMvpk6xDB2hLRykrEWMBwJEpUAUIQ==", + "dev": true, + "dependencies": { + "@types/hoist-non-react-statics": "*", + "@types/react": "*", + "@types/react-native": "*", + "csstype": "^2.2.0" + } + }, + "node_modules/@types/styled-components/node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "dev": true + }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz", + "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.12", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.27.0", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.1.0-beta.0" + } + }, + "node_modules/@vitejs/plugin-react/node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@yarnpkg/esbuild-plugin-pnp": { + "version": "3.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz", + "integrity": "sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "esbuild": ">=0.10.0" + } + }, + "node_modules/@yarnpkg/fslib": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.3.tgz", + "integrity": "sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==", + "dev": true, + "dependencies": { + "@yarnpkg/libzip": "^2.3.0", + "tslib": "^1.13.0" + }, + "engines": { + "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" + } + }, + "node_modules/@yarnpkg/fslib/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@yarnpkg/libzip": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz", + "integrity": "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==", + "dev": true, + "dependencies": { + "@types/emscripten": "^1.39.6", + "tslib": "^1.13.0" + }, + "engines": { + "node": ">=12 <14 || 14.2 - 14.9 || >14.10.0" + } + }, + "node_modules/@yarnpkg/libzip/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/agent-base": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "dev": true + }, + "node_modules/ansi-fragments": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", + "dev": true, + "dependencies": { + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/app-root-dir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz", + "integrity": "sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==", + "dev": true + }, + "node_modules/appdirsjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", + "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "dev": true, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/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, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-merge": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/babel-merge/-/babel-merge-3.0.0.tgz", + "integrity": "sha512-eBOBtHnzt9xvnjpYNI5HmaPp/b2vMveE5XggzqHnQeHJ8mFIBrBv6WZEVIj5jJ2uwTItkqKo9gWzEEcBxEq0yw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dependencies": { + "deepmerge": "^2.2.1", + "object.omit": "^3.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-merge/node_modules/deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-plugin-annotate-pure-calls": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-annotate-pure-calls/-/babel-plugin-annotate-pure-calls-0.4.0.tgz", + "integrity": "sha512-oi4M/PWUJOU9ZyRGoPTfPMqdyMp06jbJAomd3RcyYuzUtBOddv98BqLm96Lucpi2QFoQHkdGQt0ACvw7VzVEQA==", + "dev": true, + "peerDependencies": { + "@babel/core": "^6.0.0-0 || 7.x" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-macros/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "dependencies": { + "@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" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/babel-plugin-macros/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-plugin-macros/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-plugin-macros/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/babel-plugin-macros/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", + "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.1", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", + "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-styled-components": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.13.2.tgz", + "integrity": "sha512-Vb1R3d4g+MUfPQPVDMCGjm3cDocJEUTR7Xq7QS95JWWeksN1wdFRYpD2kulDgI3Huuaf1CZd+NK4KQmqUFh5dA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-module-imports": "^7.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11" + }, + "peerDependencies": { + "styled-components": ">= 2" + } + }, + "node_modules/babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", + "dev": true + }, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "dev": true, + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/better-opn/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bplist-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", + "integrity": "sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.7" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browser-assert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", + "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", + "dev": true + }, + "node_modules/browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==", + "dev": true, + "dependencies": { + "pako": "~0.2.0" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001611", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001611.tgz", + "integrity": "sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/chokidar/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/chokidar/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/chokidar/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/chrome-launcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chromium-edge-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz", + "integrity": "sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "node_modules/chromium-edge-launcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chromium-edge-launcher/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "dev": true, + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clone-deep/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/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 + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true + }, + "node_modules/colors": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", + "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/connect/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/core-js-compat": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", + "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "dev": true, + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/dayjs": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-equal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "dev": true, + "dependencies": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser-id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-2.0.0.tgz", + "integrity": "sha512-+LePblg9HDIx3CIla8BxfI/zYUFs8Kp67U5feqb7iTJcAxBOvcZ7ZNXKFsBDnGE5x0ap66o848VHE0fq7cgpPg==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.1.0", + "pify": "^2.3.0", + "untildify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "dev": true + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dev": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denodeify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/deprecated-react-native-prop-types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz", + "integrity": "sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==", + "dev": true, + "dependencies": { + "@react-native/normalize-colors": "^0.73.0", + "invariant": "^2.2.4", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "dev": true + }, + "node_modules/detect-package-manager": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", + "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", + "dev": true, + "dependencies": { + "execa": "^5.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dev": true, + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexify/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/duplexify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.740", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.740.tgz", + "integrity": "sha512-Yvg5i+iyv7Xm18BRdVPVm8lc7kgxM3r6iwqCH2zB7QZy1kZRNmd0Zqm0zcD9XoFREE5/5rwIuIAOT+/mzGcnZg==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", + "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/errorhandler": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "dev": true, + "dependencies": { + "accepts": "~1.3.7", + "escape-html": "~1.0.3" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/esbuild-plugin-alias": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", + "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==", + "dev": true + }, + "node_modules/esbuild-register": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.5.0.tgz", + "integrity": "sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "esbuild": ">=0.12 <1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==", + "dev": true + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-xml-parser": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.4.tgz", + "integrity": "sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz", + "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fetch-retry": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.6.tgz", + "integrity": "sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==", + "dev": true + }, + "node_modules/file-system-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", + "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", + "dev": true, + "dependencies": { + "fs-extra": "11.1.1", + "ramda": "0.29.0" + } + }, + "node_modules/file-system-cache/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/file-system-cache/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/file-system-cache/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "node_modules/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==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "dev": true + }, + "node_modules/flow-parser": { + "version": "0.206.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz", + "integrity": "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/focus-visible": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/focus-visible/-/focus-visible-5.2.0.tgz", + "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==" + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-npm-tarball-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.1.0.tgz", + "integrity": "sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==", + "dev": true, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/giget": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.1.tgz", + "integrity": "sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==", + "dev": true, + "dependencies": { + "citty": "^0.1.5", + "consola": "^3.2.3", + "defu": "^6.1.3", + "node-fetch-native": "^1.6.1", + "nypm": "^0.3.3", + "ohash": "^1.1.3", + "pathe": "^1.1.1", + "tar": "^6.2.0" + }, + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-promise": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz", + "integrity": "sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/ahmadnassri" + }, + "peerDependencies": { + "glob": "^7.1.6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==", + "dev": true + }, + "node_modules/gunzip-maybe": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz", + "integrity": "sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==", + "dev": true, + "dependencies": { + "browserify-zlib": "^0.1.4", + "is-deflate": "^1.0.0", + "is-gzip": "^1.0.0", + "peek-stream": "^1.1.0", + "pumpify": "^1.3.3", + "through2": "^2.0.3" + }, + "bin": { + "gunzip-maybe": "bin.js" + } + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/happy-dom": { + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-10.8.0.tgz", + "integrity": "sha512-ux5UfhNA9ANGf4keV7FCd9GqeQr3Bz1u9qnoPtTL0NcO1MEOeUXIUwNTB9r84Z7Q8/bsgkwi6K114zjYvnCmag==", + "dev": true, + "dependencies": { + "css.escape": "^1.5.1", + "entities": "^4.5.0", + "iconv-lite": "^0.6.3", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0" + } + }, + "node_modules/happy-dom/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/happy-dom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hermes-estree": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.15.0.tgz", + "integrity": "sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==", + "dev": true + }, + "node_modules/hermes-parser": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.15.0.tgz", + "integrity": "sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==", + "dev": true, + "dependencies": { + "hermes-estree": "0.15.0" + } + }, + "node_modules/hermes-profile-transformer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", + "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", + "dev": true, + "dependencies": { + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/hermes-profile-transformer/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/html-element-attributes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-element-attributes/-/html-element-attributes-1.3.1.tgz", + "integrity": "sha512-UrRKgp5sQmRnDy4TEwAUsu14XBUlzKB8U3hjIYDjcZ3Hbp86Jtftzxfgrv6E/ii/h78tsaZwAnAE8HwnHr0dPA==" + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "dev": true, + "dependencies": { + "agent-base": "5", + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", + "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", + "dev": true, + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ip": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", + "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-deflate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz", + "integrity": "sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==", + "dev": true + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-gzip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", + "integrity": "sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-haste-map/node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-validate/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true + }, + "node_modules/joi": { + "version": "17.12.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.1.tgz", + "integrity": "sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsc-android": { + "version": "250231.0.0", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz", + "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==", + "dev": true + }, + "node_modules/jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", + "dev": true + }, + "node_modules/jscodeshift": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", + "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.21.0", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/jscodeshift/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/ast-types": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", + "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jscodeshift/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/jscodeshift/node_modules/recast": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", + "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", + "dev": true, + "dependencies": { + "ast-types": "0.15.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/jscodeshift/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jscodeshift/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyboard-key": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keyboard-key/-/keyboard-key-1.1.0.tgz", + "integrity": "sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ==", + "dev": true + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lazy-universal-dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz", + "integrity": "sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==", + "dev": true, + "dependencies": { + "app-root-dir": "^1.0.2", + "dotenv": "^16.0.0", + "dotenv-expand": "^10.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "dev": true, + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/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==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "dev": true, + "dependencies": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + }, + "bin": { + "logkitty": "bin/logkitty.js" + } + }, + "node_modules/logkitty/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/logkitty/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/logkitty/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/logkitty/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/logkitty/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", + "dev": true + }, + "node_modules/markdown-to-jsx": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.1.tgz", + "integrity": "sha512-GbrbkTnHp9u6+HqbPRFJbObi369AgJNXi/sGqq5HRsoZW063xR1XDCaConqq+whfEIAlzB1YPnOgsPc7B7bc/A==", + "dev": true, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, + "node_modules/marky": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", + "dev": true + }, + "node_modules/mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "dev": true, + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/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, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "dev": true + }, + "node_modules/memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", + "dev": true, + "dependencies": { + "map-or-similar": "^1.5.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.5.tgz", + "integrity": "sha512-OE/CGbOgbi8BlTN1QqJgKOBaC27dS0JBQw473JcivrpgVnqIsluROA7AavEaTVUrB9wPUZvoNVDROn5uiM2jfw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "accepts": "^1.3.7", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "error-stack-parser": "^2.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.18.2", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.80.5", + "metro-cache": "0.80.5", + "metro-cache-key": "0.80.5", + "metro-config": "0.80.5", + "metro-core": "0.80.5", + "metro-file-map": "0.80.5", + "metro-resolver": "0.80.5", + "metro-runtime": "0.80.5", + "metro-source-map": "0.80.5", + "metro-symbolicate": "0.80.5", + "metro-transform-plugins": "0.80.5", + "metro-transform-worker": "0.80.5", + "mime-types": "^2.1.27", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "rimraf": "^3.0.2", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "throat": "^5.0.0", + "ws": "^7.5.1", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.5.tgz", + "integrity": "sha512-sxH6hcWCorhTbk4kaShCWsadzu99WBL4Nvq4m/sDTbp32//iGuxtAnUK+ZV+6IEygr2u9Z0/4XoZ8Sbcl71MpA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.0", + "hermes-parser": "0.18.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.18.2.tgz", + "integrity": "sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ==", + "dev": true + }, + "node_modules/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.18.2.tgz", + "integrity": "sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew==", + "dev": true, + "dependencies": { + "hermes-estree": "0.18.2" + } + }, + "node_modules/metro-cache": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.5.tgz", + "integrity": "sha512-2u+dQ4PZwmC7eZo9uMBNhQQMig9f+w4QWBZwXCdVy/RYOHM0eObgGdMEOwODo73uxie82T9lWzxr3aZOZ+Nqtw==", + "dev": true, + "dependencies": { + "metro-core": "0.80.5", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-cache-key": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.5.tgz", + "integrity": "sha512-fr3QLZUarsB3tRbVcmr34kCBsTHk0Sh9JXGvBY/w3b2lbre+Lq5gtgLyFElHPecGF7o4z1eK9r3ubxtScHWcbA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-config": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.5.tgz", + "integrity": "sha512-elqo/lwvF+VjZ1OPyvmW/9hSiGlmcqu+rQvDKw5F5WMX48ZC+ySTD1WcaD7e97pkgAlJHVYqZ98FCjRAYOAFRQ==", + "dev": true, + "dependencies": { + "connect": "^3.6.5", + "cosmiconfig": "^5.0.5", + "jest-validate": "^29.6.3", + "metro": "0.80.5", + "metro-cache": "0.80.5", + "metro-core": "0.80.5", + "metro-runtime": "0.80.5" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-core": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.5.tgz", + "integrity": "sha512-vkLuaBhnZxTVpaZO8ZJVEHzjaqSXpOdpAiztSZ+NDaYM6jEFgle3/XIbLW91jTSf2+T8Pj5yB1G7KuOX+BcVwg==", + "dev": true, + "dependencies": { + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.80.5" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-file-map": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.5.tgz", + "integrity": "sha512-bKCvJ05drjq6QhQxnDUt3I8x7bTcHo3IIKVobEr14BK++nmxFGn/BmFLRzVBlghM6an3gqwpNEYxS5qNc+VKcg==", + "dev": true, + "dependencies": { + "anymatch": "^3.0.3", + "debug": "^2.2.0", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "micromatch": "^4.0.4", + "node-abort-controller": "^3.1.1", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/metro-file-map/node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/metro-file-map/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro-file-map/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/metro-minify-terser": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.5.tgz", + "integrity": "sha512-S7oZLLcab6YXUT6jYFX/ZDMN7Fq6xBGGAG8liMFU1UljX6cTcEC2u+UIafYgCLrdVexp/+ClxrIetVPZ5LtL/g==", + "dev": true, + "dependencies": { + "terser": "^5.15.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-resolver": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.5.tgz", + "integrity": "sha512-haJ/Hveio3zv/Fr4eXVdKzjUeHHDogYok7OpRqPSXGhTXisNXB+sLN7CpcUrCddFRUDLnVaqQOYwhYsFndgUwA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-runtime": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.5.tgz", + "integrity": "sha512-L0syTWJUdWzfUmKgkScr6fSBVTh6QDr8eKEkRtn40OBd8LPagrJGySBboWSgbyn9eIb4ayW3Y347HxgXBSAjmg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-source-map": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.5.tgz", + "integrity": "sha512-DwSF4l03mKPNqCtyQ6K23I43qzU1BViAXnuH81eYWdHglP+sDlPpY+/7rUahXEo6qXEHXfAJgVoo1sirbXbmsQ==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.80.5", + "nullthrows": "^1.1.1", + "ob1": "0.80.5", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-symbolicate": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.5.tgz", + "integrity": "sha512-IsM4mTYvmo9JvIqwEkCZ5+YeDVPST78Q17ZgljfLdHLSpIivOHp9oVoiwQ/YGbLx0xRHRIS/tKiXueWBnj3UWA==", + "dev": true, + "dependencies": { + "invariant": "^2.2.4", + "metro-source-map": "0.80.5", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-transform-plugins": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.5.tgz", + "integrity": "sha512-7IdlTqK/k5+qE3RvIU5QdCJUPk4tHWEqgVuYZu8exeW+s6qOJ66hGIJjXY/P7ccucqF+D4nsbAAW5unkoUdS6g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.5.tgz", + "integrity": "sha512-Q1oM7hfP+RBgAtzRFBDjPhArELUJF8iRCZ8OidqCpYzQJVGuJZ7InSnIf3hn1JyqiUQwv2f1LXBO78i2rAjzyA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "metro": "0.80.5", + "metro-babel-transformer": "0.80.5", + "metro-cache": "0.80.5", + "metro-cache-key": "0.80.5", + "metro-minify-terser": "0.80.5", + "metro-source-map": "0.80.5", + "metro-transform-plugins": "0.80.5", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/metro/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/metro/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/metro/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/metro/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/hermes-estree": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.18.2.tgz", + "integrity": "sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ==", + "dev": true + }, + "node_modules/metro/node_modules/hermes-parser": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.18.2.tgz", + "integrity": "sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew==", + "dev": true, + "dependencies": { + "hermes-estree": "0.18.2" + } + }, + "node_modules/metro/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/micromatch/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/micromatch/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/micromatch/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true, + "bin": { + "ncp": "bin/ncp" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/nocache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", + "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.2.tgz", + "integrity": "sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==", + "dev": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "dev": true, + "engines": { + "node": ">=0.12.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/antelle" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true + }, + "node_modules/nypm": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz", + "integrity": "sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==", + "dev": true, + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.2.3", + "execa": "^8.0.1", + "pathe": "^1.1.2", + "ufo": "^1.4.0" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": "^14.16.0 || >=16.10.0" + } + }, + "node_modules/nypm/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/nypm/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/nypm/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nypm/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ob1": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.5.tgz", + "integrity": "sha512-zYDMnnNrFi/1Tqh0vo3PE4p97Tpl9/4MP2k2ECvkbLOZzQuAYZJLTUYVLZb7hJhbhjT+JJxAwBGS8iu5hCSd1w==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.omit": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", + "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", + "dependencies": { + "is-extendable": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.omit/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.omit/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/open/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "dev": true + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module/node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, + "node_modules/peek-stream": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", + "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "duplexify": "^3.5.0", + "through2": "^2.0.3" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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, + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/polished": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", + "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.17.8" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dev": true, + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/pretty-format/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/pretty-format/node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/pretty-format/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/pretty-format/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/puppeteer-core": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-2.1.1.tgz", + "integrity": "sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==", + "dev": true, + "dependencies": { + "@types/mime-types": "^2.1.0", + "debug": "^4.1.0", + "extract-zip": "^1.6.6", + "https-proxy-agent": "^4.0.0", + "mime": "^2.0.3", + "mime-types": "^2.1.25", + "progress": "^2.0.1", + "proxy-from-env": "^1.0.0", + "rimraf": "^2.6.1", + "ws": "^6.1.0" + }, + "engines": { + "node": ">=8.16.0" + } + }, + "node_modules/puppeteer-core/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "dev": true, + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dev": true, + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ramda": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", + "integrity": "sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ramda" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-colorful": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", + "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", + "dev": true, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/react-devtools-core": { + "version": "4.28.5", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.5.tgz", + "integrity": "sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==", + "dev": true, + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/react-devtools-core/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/react-docgen": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.3.tgz", + "integrity": "sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.18.9", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "@types/babel__core": "^7.18.0", + "@types/babel__traverse": "^7.18.0", + "@types/doctrine": "^0.0.9", + "@types/resolve": "^1.20.2", + "doctrine": "^3.0.0", + "resolve": "^1.22.1", + "strip-indent": "^4.0.0" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/react-docgen-typescript": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz", + "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", + "dev": true, + "peerDependencies": { + "typescript": ">= 4.3.x" + } + }, + "node_modules/react-docgen/node_modules/@types/doctrine": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", + "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", + "dev": true + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-draggable": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.3.tgz", + "integrity": "sha512-jV4TE59MBuWm7gb6Ns3Q1mxX8Azffb7oTtDtBgFkxRvhDp38YAARmRplrj0+XGkhOJB5XziArX+4HUUABtyZ0w==", + "dependencies": { + "classnames": "^2.2.5", + "prop-types": "^15.6.0" + } + }, + "node_modules/react-element-to-jsx-string": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz", + "integrity": "sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==", + "dev": true, + "dependencies": { + "@base2/pretty-print-object": "1.0.1", + "is-plain-object": "5.0.0", + "react-is": "18.1.0" + }, + "peerDependencies": { + "react": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0", + "react-dom": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0" + } + }, + "node_modules/react-element-to-jsx-string/node_modules/react-is": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", + "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", + "dev": true + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "node_modules/react-html-attributes": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/react-html-attributes/-/react-html-attributes-1.4.6.tgz", + "integrity": "sha512-uS3MmThNKFH2EZUQQw4k5pIcU7XIr208UE5dktrj/GOH1CMagqxDl4DCLpt3o2l9x+IB5nVYBeN3Cr4IutBXAg==", + "dependencies": { + "html-element-attributes": "^1.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-native": { + "version": "0.73.3", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.73.3.tgz", + "integrity": "sha512-RSQDtT2DNUcmB4IgmW9NhRb5wqvXFl6DI2NEJmt0ps2OrVHpoA8Tkq+lkFOA/fvPscJKtFKEHFBDSR5UHR3PUw==", + "dev": true, + "dependencies": { + "@jest/create-cache-key-function": "^29.6.3", + "@react-native-community/cli": "12.3.2", + "@react-native-community/cli-platform-android": "12.3.2", + "@react-native-community/cli-platform-ios": "12.3.2", + "@react-native/assets-registry": "0.73.1", + "@react-native/codegen": "0.73.2", + "@react-native/community-cli-plugin": "0.73.14", + "@react-native/gradle-plugin": "0.73.4", + "@react-native/js-polyfills": "0.73.1", + "@react-native/normalize-colors": "0.73.2", + "@react-native/virtualized-lists": "0.73.4", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "base64-js": "^1.5.1", + "chalk": "^4.0.0", + "deprecated-react-native-prop-types": "^5.0.0", + "event-target-shim": "^5.0.1", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "jest-environment-node": "^29.6.3", + "jsc-android": "^250231.0.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.80.3", + "metro-source-map": "^0.80.3", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.3.0", + "react-devtools-core": "^4.27.7", + "react-refresh": "^0.14.0", + "react-shallow-renderer": "^16.15.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.24.0-canary-efb381bbf-20230505", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0", + "ws": "^6.2.2", + "yargs": "^17.6.2" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "18.2.0" + } + }, + "node_modules/react-native/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-native/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-native/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-native/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "node_modules/react-native/node_modules/scheduler": { + "version": "0.24.0-canary-efb381bbf-20230505", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz", + "integrity": "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/react-native/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-popper": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", + "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + }, + "peerDependencies": { + "react": "0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dev": true, + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.5.tgz", + "integrity": "sha512-3cqjOqg6s0XbOjWvmasmqHch+RLxIEk2r/70rzGXuz3iIGQsQheEQyqYCBb5EECoD01Vo2SIbDqW4paLeLTASw==", + "dev": true, + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-shallow-renderer": { + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dev": true, + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/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, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", + "dev": true + }, + "node_modules/recast": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.5.tgz", + "integrity": "sha512-M67zIddJiwXdfPQRYKJ0qZO1SLdH1I0hYeb0wzxA+pNOvAZiQHulWzuk+fYsEWRQ8VfZrgjyucqsCOtCyM01/A==", + "dev": true, + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/recast/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/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, + "dependencies": { + "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" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/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, + "dependencies": { + "github-slugger": "^1.0.0", + "mdast-util-to-string": "^1.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semantic-ui-react": { + "version": "0.88.2", + "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-0.88.2.tgz", + "integrity": "sha512-+02kN2z8PuA/cMdvDUsHhbJmBzxxgOXVHMFr9XK7zGb0wkW9A6OPQMFokWz7ozlVtKjN6r7zsb+Qvjk/qq1OWw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.1.2", + "@semantic-ui-react/event-stack": "^3.1.0", + "@stardust-ui/react-component-event-listener": "~0.38.0", + "@stardust-ui/react-component-ref": "~0.38.0", + "classnames": "^2.2.6", + "keyboard-key": "^1.0.4", + "lodash": "^4.17.15", + "prop-types": "^15.7.2", + "react-is": "^16.8.6", + "react-popper": "^1.3.4", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.8.0", + "react-dom": "^16.8.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallow-clone/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/store2": { + "version": "2.14.3", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.3.tgz", + "integrity": "sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==", + "dev": true + }, + "node_modules/storeon": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/storeon/-/storeon-3.1.5.tgz", + "integrity": "sha512-VuW4GQr3LGQr+gqscqsOz2c9asK9N+B+8+sWs7Pj4OqU7bngYIqsPF3IYpkbmccKNWjs7wwxUAlR+gtL9cEMEg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "preact": ">=10.0.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "preact": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/storybook": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.17.tgz", + "integrity": "sha512-8+EIo91bwmeFWPg1eysrxXlhIYv3OsXrznTr4+4Eq0NikqAoq6oBhtlN5K2RGS2lBVF537eN+9jTCNbR+WrzDA==", + "dev": true, + "dependencies": { + "@storybook/cli": "7.6.17" + }, + "bin": { + "sb": "index.js", + "storybook": "index.js" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "dev": true + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "dev": true + }, + "node_modules/styled-components": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.1.tgz", + "integrity": "sha512-JThv2JRzyH0NOIURrk9iskdxMSAAtCfj/b2Sf1WJaCUsloQkblepy1jaCLX/bYE+mhYo3unmwVSI9I5d9ncSiQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^0.8.8", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/styled-components" + }, + "peerDependencies": { + "react": ">= 16.8.0", + "react-dom": ">= 16.8.0", + "react-is": ">= 16.8.0" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "dev": true + }, + "node_modules/sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "dev": true + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/synchronous-promise": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz", + "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==", + "dev": true + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/telejson": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", + "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", + "dev": true, + "dependencies": { + "memoizerific": "^1.11.3" + } + }, + "node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "dev": true, + "dependencies": { + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/tempy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", + "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "dev": true, + "dependencies": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", + "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "dev": true + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/tocbot": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.25.0.tgz", + "integrity": "sha512-kE5wyCQJ40hqUaRVkyQ4z5+4juzYsv/eK+aqD97N62YH0TxFhzJvo22RUQQZdO3YnXAk42ZOfOpjVdy+Z0YokA==", + "dev": true + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "dev": true, + "engines": { + "node": ">=6.10" + } + }, + "node_modules/ts-invariant": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", + "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-coverage-core": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/type-coverage-core/-/type-coverage-core-2.27.1.tgz", + "integrity": "sha512-W+PMYbhUsq+UWkrb7UkmyO7zF3zt4qZuQukyDM6eaiCIkMJclcVmR3O02clDk4FKpKPbzHictOmoIu3fYp+53g==", + "dev": true, + "dependencies": { + "fast-glob": "3", + "minimatch": "6 || 7 || 8 || 9", + "normalize-path": "3", + "tslib": "1 || 2", + "tsutils": "3" + }, + "peerDependencies": { + "typescript": "2 || 3 || 4 || 5" + } + }, + "node_modules/type-coverage-core/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/type-coverage-core/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-styles": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==", + "dev": true + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typescript-coverage-report": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/typescript-coverage-report/-/typescript-coverage-report-0.7.0.tgz", + "integrity": "sha512-ODeA510qAN2C76NjDCoZj2wcGGkkuaf2FQJElyJS9ABmGbpkgrhtoWOfiKkoeaPHkvysqOfhFEVUWNrOUlww7w==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "cli-table3": "^0.6.1", + "commander": "^5.0.0", + "ncp": "^2.0.0", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "rimraf": "^3.0.2", + "semantic-ui-react": "^0.88.2", + "type-coverage-core": "^2.23.0" + }, + "bin": { + "typescript-coverage-report": "dist/bin/typescript-coverage-report.js" + }, + "peerDependencies": { + "typescript": "2 || 3 || 4" + } + }, + "node_modules/typescript-coverage-report/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/typescript-coverage-report/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/typescript-coverage-report/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/typescript-coverage-report/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/typescript-coverage-report/node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/typescript-coverage-report/node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/typescript-coverage-report/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/typescript-coverage-report/node_modules/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ufo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz", + "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==", + "dev": true + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unplugin": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.8.2.tgz", + "integrity": "sha512-fgldo8hwP8dV94ne3rwQqlZkZWdcqH4K48bXax+N0MrBapfvoTbIQt9L2Vj/DzZAbWI/+kd2b9ZDsB7QZgz/hw==", + "dev": true, + "dependencies": { + "acorn": "^8.11.3", + "chokidar": "^3.6.0", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.6.1" + } + }, + "node_modules/unplugin/node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/untildify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", + "integrity": "sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig==", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.1.tgz", + "integrity": "sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-resize-observer": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-9.1.0.tgz", + "integrity": "sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==", + "dev": true, + "dependencies": { + "@juggle/resize-observer": "^3.3.1" + }, + "peerDependencies": { + "react": "16.8.0 - 18", + "react-dom": "16.8.0 - 18" + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dev": true, + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validator": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", + "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", + "dev": true + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", + "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==", + "dev": true + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "dev": true + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "node_modules/which-typed-array": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "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==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", + "dev": true, + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^9.4.1" + } + }, + "node_modules/z-schema/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "optional": true, + "engines": { + "node": "^12.20.0 || >=14" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@aw-web-design/x-default-browser": { + "version": "1.4.126", + "resolved": "https://registry.npmjs.org/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz", + "integrity": "sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==", + "dev": true, + "requires": { + "default-browser-id": "3.0.0" + }, + "dependencies": { + "bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "requires": { + "big-integer": "^1.6.44" + } + }, + "default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "requires": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + } + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + } + } + }, + "@babel/cli": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.24.1.tgz", + "integrity": "sha512-HbmrtxyFUr34LwAlV9jS+sSIjUp4FpdtIMGwgufY3AsxrIfsh/HxlMTywsONAZsU0RMYbZtbZFpUCrSGs7o0EA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.25", + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", + "chokidar": "^3.4.0", + "commander": "^4.0.1", + "convert-source-map": "^2.0.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.2.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0" + } + }, + "@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "requires": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + } + }, + "@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==" + }, + "@babel/core": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", + "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.4", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + } + }, + "@babel/generator": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "requires": { + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", + "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", + "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" + }, + "@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "requires": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "requires": { + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "requires": { + "@babel/types": "^7.24.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + } + }, + "@babel/helper-replace-supers": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==" + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" + }, + "@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==" + }, + "@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + } + }, + "@babel/helpers": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", + "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "requires": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" + } + }, + "@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + } + }, + "@babel/parser": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==" + }, + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz", + "integrity": "sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.24.1" + } + }, + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", + "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-export-default-from": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.23.3.tgz", + "integrity": "sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-default-from": "^7.23.3" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-default-from": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.23.3.tgz", + "integrity": "sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", + "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", + "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", + "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-remap-async-to-generator": "^7.22.20" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz", + "integrity": "sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", + "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", + "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", + "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", + "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", + "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", + "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", + "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-flow": "^7.23.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", + "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", + "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-simple-access": "^7.22.5" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-identifier": "^7.22.20" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", + "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", + "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", + "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.1" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", + "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", + "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", + "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", + "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", + "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.1.tgz", + "integrity": "sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", + "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", + "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", + "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", + "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "regenerator-transform": "^0.15.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz", + "integrity": "sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "semver": "^6.3.1" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + } + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", + "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz", + "integrity": "sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-typescript": "^7.24.1" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", + "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", + "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + } + }, + "@babel/preset-env": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.4.tgz", + "integrity": "sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.24.4", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.4", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.1", + "@babel/plugin-syntax-import-attributes": "^7.24.1", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.1", + "@babel/plugin-transform-async-generator-functions": "^7.24.3", + "@babel/plugin-transform-async-to-generator": "^7.24.1", + "@babel/plugin-transform-block-scoped-functions": "^7.24.1", + "@babel/plugin-transform-block-scoping": "^7.24.4", + "@babel/plugin-transform-class-properties": "^7.24.1", + "@babel/plugin-transform-class-static-block": "^7.24.4", + "@babel/plugin-transform-classes": "^7.24.1", + "@babel/plugin-transform-computed-properties": "^7.24.1", + "@babel/plugin-transform-destructuring": "^7.24.1", + "@babel/plugin-transform-dotall-regex": "^7.24.1", + "@babel/plugin-transform-duplicate-keys": "^7.24.1", + "@babel/plugin-transform-dynamic-import": "^7.24.1", + "@babel/plugin-transform-exponentiation-operator": "^7.24.1", + "@babel/plugin-transform-export-namespace-from": "^7.24.1", + "@babel/plugin-transform-for-of": "^7.24.1", + "@babel/plugin-transform-function-name": "^7.24.1", + "@babel/plugin-transform-json-strings": "^7.24.1", + "@babel/plugin-transform-literals": "^7.24.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", + "@babel/plugin-transform-member-expression-literals": "^7.24.1", + "@babel/plugin-transform-modules-amd": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-modules-systemjs": "^7.24.1", + "@babel/plugin-transform-modules-umd": "^7.24.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.24.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", + "@babel/plugin-transform-numeric-separator": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.1", + "@babel/plugin-transform-object-super": "^7.24.1", + "@babel/plugin-transform-optional-catch-binding": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.1", + "@babel/plugin-transform-parameters": "^7.24.1", + "@babel/plugin-transform-private-methods": "^7.24.1", + "@babel/plugin-transform-private-property-in-object": "^7.24.1", + "@babel/plugin-transform-property-literals": "^7.24.1", + "@babel/plugin-transform-regenerator": "^7.24.1", + "@babel/plugin-transform-reserved-words": "^7.24.1", + "@babel/plugin-transform-shorthand-properties": "^7.24.1", + "@babel/plugin-transform-spread": "^7.24.1", + "@babel/plugin-transform-sticky-regex": "^7.24.1", + "@babel/plugin-transform-template-literals": "^7.24.1", + "@babel/plugin-transform-typeof-symbol": "^7.24.1", + "@babel/plugin-transform-unicode-escapes": "^7.24.1", + "@babel/plugin-transform-unicode-property-regex": "^7.24.1", + "@babel/plugin-transform-unicode-regex": "^7.24.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + } + }, + "@babel/preset-flow": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.23.3.tgz", + "integrity": "sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-flow-strip-types": "^7.23.3" + } + }, + "@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz", + "integrity": "sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-transform-react-display-name": "^7.24.1", + "@babel/plugin-transform-react-jsx": "^7.23.4", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.24.1" + } + }, + "@babel/preset-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", + "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-typescript": "^7.24.1" + } + }, + "@babel/register": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz", + "integrity": "sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.6", + "source-map-support": "^0.5.16" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "@babel/runtime": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + } + }, + "@babel/traverse": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "requires": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "requires": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + } + }, + "@base2/pretty-print-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz", + "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", + "dev": true + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + }, + "dependencies": { + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + } + } + }, + "@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dev": true, + "requires": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + }, + "dependencies": { + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + } + } + }, + "@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", + "dev": true + }, + "@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 + }, + "@emotion/react": { + "version": "11.11.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", + "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + } + }, + "@emotion/serialize": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", + "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", + "dev": true, + "requires": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + }, + "dependencies": { + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + }, + "@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==", + "dev": true + } + } + }, + "@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==", + "dev": true + }, + "@emotion/styled": { + "version": "11.11.5", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz", + "integrity": "sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.2", + "@emotion/serialize": "^1.1.4", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", + "dev": true, + "requires": { + "@emotion/memoize": "^0.8.1" + } + }, + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==", + "dev": true + } + } + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "dev": true + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "dev": true + }, + "@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==", + "dev": true + }, + "@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==", + "dev": true + }, + "@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "dev": true, + "optional": true + }, + "@fal-works/esbuild-plugin-global-externals": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz", + "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==", + "dev": true + }, + "@floating-ui/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "requires": { + "@floating-ui/utils": "^0.2.1" + } + }, + "@floating-ui/dom": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz", + "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", + "requires": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.7" + } + }, + "@floating-ui/react": { + "version": "0.26.22", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.22.tgz", + "integrity": "sha512-LNv4azPt8SpT4WW7Kku5JNVjLk2GcS0bGGjFTAgqOONRFo9r/aaGHHPpdiIuQbB1t8shmWyWqTTUDmZ9fcNshg==", + "requires": { + "@floating-ui/react-dom": "^2.1.1", + "@floating-ui/utils": "^0.2.7", + "tabbable": "^6.0.0" + } + }, + "@floating-ui/react-dom": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", + "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", + "requires": { + "@floating-ui/dom": "^1.0.0" + } + }, + "@floating-ui/utils": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", + "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==" + }, + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@hypnosphi/create-react-context": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", + "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", + "dev": true, + "requires": { + "gud": "^1.0.0", + "warning": "^4.0.3" + } + }, + "@ironkinoko/rollup-plugin-styles": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@ironkinoko/rollup-plugin-styles/-/rollup-plugin-styles-4.0.3.tgz", + "integrity": "sha512-FU7Hko5Z9bu3PW14XXRbKE91Hn0iWEpXQW4YzUIOMNyJ9VrIoO5sImyzIo5PRc9o9buTePhygGQ4OEe3bvOTdQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.2", + "cosmiconfig": "^7.0.1", + "cssnano": "^5.1.14", + "fs-extra": "^10.0.0", + "icss-utils": "^5.1.0", + "mime-types": "^2.1.34", + "p-queue": "^6.6.2", + "postcss": "^8.4.5", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "query-string": "^7.1.0", + "resolve": "^1.22.0", + "resolve.exports": "^1.1.0", + "source-map-js": "^1.0.2", + "tslib": "^2.3.1" + }, + "dependencies": { + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "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" + } + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "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" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } + } + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "dev": true + }, + "@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": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "@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==", + "dev": true + }, + "@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3" + } + }, + "@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "requires": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + } + }, + "@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "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" + } + } + } + }, + "@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "@joshwooding/vite-plugin-react-docgen-typescript": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.3.0.tgz", + "integrity": "sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA==", + "dev": true, + "requires": { + "glob": "^7.2.0", + "glob-promise": "^4.2.0", + "magic-string": "^0.27.0", + "react-docgen-typescript": "^2.2.2" + }, + "dependencies": { + "magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" + }, + "@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@juggle/resize-observer": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", + "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", + "dev": true + }, + "@linaria/babel-preset": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@linaria/babel-preset/-/babel-preset-5.0.4.tgz", + "integrity": "sha512-OMhlD6gc/+6DFLkadoavlxCtTIElo/UdDMeQH6I/CAL3hgfmHyIXJPrGObTa7jvQKddUaKvFIHGAVB7pz6J8Qg==", + "dev": true, + "requires": { + "@babel/core": "^7.22.15", + "@babel/generator": "^7.22.15", + "@babel/helper-module-imports": "^7.22.15", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15", + "@linaria/core": "^5.0.2", + "@linaria/logger": "^5.0.0", + "@linaria/shaker": "^5.0.3", + "@linaria/tags": "^5.0.2", + "@linaria/utils": "^5.0.2", + "cosmiconfig": "^8.0.0", + "happy-dom": "10.8.0", + "source-map": "^0.7.3", + "stylis": "^3.5.4", + "ts-invariant": "^0.10.3" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "requires": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + }, + "stylis": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", + "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==", + "dev": true + } + } + }, + "@linaria/core": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@linaria/core/-/core-5.0.2.tgz", + "integrity": "sha512-l5jQq7w9kDvonfr/0MBF47Dagx9Y9f/o5Q8j3zv7GepwG/yHQdbjKr0tq07rx2fSDDX7Nbqlxk6k9Ymir/NGpg==", + "requires": { + "@linaria/logger": "^5.0.0", + "@linaria/tags": "^5.0.2", + "@linaria/utils": "^5.0.2" + } + }, + "@linaria/logger": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@linaria/logger/-/logger-5.0.0.tgz", + "integrity": "sha512-PZd5H0I4F84U0kXSE+vD75ltIGDxEA6gMDNWS2aDZFitmdlQM5rIXqvKFrp5NsHa7a3AH+I2Hxm0dg60WZF7vg==", + "requires": { + "debug": "^4.3.4", + "picocolors": "^1.0.0" + } + }, + "@linaria/react": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@linaria/react/-/react-5.0.3.tgz", + "integrity": "sha512-faTQHnUlrAz0Lodu+rr6Yx59rX0nqFOrZ5/IdlfQcTRz9VebyVL4vtA3AOecmn1YFZjMpqjopT0OzNz6GknQSg==", + "requires": { + "@emotion/is-prop-valid": "^1.2.0", + "@linaria/core": "^5.0.2", + "@linaria/tags": "^5.0.2", + "@linaria/utils": "^5.0.2", + "minimatch": "^9.0.3", + "react-html-attributes": "^1.4.6", + "ts-invariant": "^0.10.3" + }, + "dependencies": { + "@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "requires": { + "@emotion/memoize": "^0.8.1" + } + }, + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@linaria/rollup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@linaria/rollup/-/rollup-5.0.4.tgz", + "integrity": "sha512-1Ajo+J1yEeOp2Sjcw3C59YjgCmZ3RcDD6tGv5KmA8DfhHfcegLLqqAO1I4Q5VvgVgErSrAzicn/sIsyWtNExOw==", + "dev": true, + "requires": { + "@linaria/babel-preset": "^5.0.4", + "@linaria/logger": "^5.0.0", + "@linaria/utils": "^5.0.2", + "@linaria/vite": "^5.0.4", + "@rollup/pluginutils": "^5.0.4" + } + }, + "@linaria/shaker": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@linaria/shaker/-/shaker-5.0.3.tgz", + "integrity": "sha512-2a3pzYs09Iz88e+VG4OAQVRSIjxkbj7S4ju81ZTJVbZIWSR1kGsbX5OtJkRrh/AbKRrrUMW0DBS4PPgd0fks4A==", + "dev": true, + "requires": { + "@babel/core": "^7.22.15", + "@babel/generator": "^7.22.15", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/plugin-transform-runtime": "^7.22.15", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/preset-env": "^7.22.15", + "@linaria/logger": "^5.0.0", + "@linaria/utils": "^5.0.2", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24", + "ts-invariant": "^0.10.3" + } + }, + "@linaria/tags": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@linaria/tags/-/tags-5.0.2.tgz", + "integrity": "sha512-opcORl2sA6WkBjTNLHTgpet97dNKnwPRX/QGGZMykBsvGH3AsnEg/bT31cKBMBhL+YBGQsCdBmolxvCkWPOXQw==", + "requires": { + "@babel/generator": "^7.22.15", + "@linaria/logger": "^5.0.0", + "@linaria/utils": "^5.0.2" + } + }, + "@linaria/utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@linaria/utils/-/utils-5.0.2.tgz", + "integrity": "sha512-ZL8Yz4IIr9A8a5+o5LRnEpgdzIkyj4yKJrhw5Zv8wwvL+d/MHUK0q+l/KvxBmuYdcF+YYVHZ9eeBHTQBSL7r/w==", + "requires": { + "@babel/core": "^7.22.15", + "@babel/generator": "^7.22.15", + "@babel/plugin-transform-modules-commonjs": "^7.22.15", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15", + "@linaria/logger": "^5.0.0", + "babel-merge": "^3.0.0", + "find-up": "^5.0.0", + "minimatch": "^9.0.3" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@linaria/vite": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@linaria/vite/-/vite-5.0.4.tgz", + "integrity": "sha512-T3gPaUvf4sfM2D74ZAehTWSE6mLZ/qhzWzwid1siKPOAW1F4m1mYjkdL7dPZGc97pg+JaFBnHXXIOfz5/5fwBQ==", + "dev": true, + "requires": { + "@linaria/babel-preset": "^5.0.4", + "@linaria/logger": "^5.0.0", + "@linaria/utils": "^5.0.2", + "@rollup/pluginutils": "^5.0.4" + } + }, + "@mdx-js/react": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz", + "integrity": "sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==", + "dev": true, + "requires": { + "@types/mdx": "^2.0.0", + "@types/react": ">=16" + } + }, + "@microsoft/api-extractor": { + "version": "7.38.3", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.38.3.tgz", + "integrity": "sha512-xt9iYyC5f39281j77JTA9C3ISJpW1XWkCcnw+2vM78CPnro6KhPfwQdPDfwS5JCPNuq0grm8cMdPUOPvrchDWw==", + "dev": true, + "requires": { + "@microsoft/api-extractor-model": "7.28.2", + "@microsoft/tsdoc": "0.14.2", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.61.0", + "@rushstack/rig-package": "0.5.1", + "@rushstack/ts-command-line": "4.17.1", + "colors": "~1.2.1", + "lodash": "~4.17.15", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "source-map": "~0.6.1", + "typescript": "~5.0.4" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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 + }, + "typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@microsoft/api-extractor-model": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.28.2.tgz", + "integrity": "sha512-vkojrM2fo3q4n4oPh4uUZdjJ2DxQ2+RnDQL/xhTWSRUNPF6P4QyrvY357HBxbnltKcYu+nNNolVqc6TIGQ73Ig==", + "dev": true, + "requires": { + "@microsoft/tsdoc": "0.14.2", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.61.0" + } + }, + "@microsoft/tsdoc": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", + "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", + "dev": true + }, + "@microsoft/tsdoc-config": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", + "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", + "dev": true, + "requires": { + "@microsoft/tsdoc": "0.14.2", + "ajv": "~6.12.6", + "jju": "~1.4.0", + "resolve": "~1.19.0" + }, + "dependencies": { + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } + } + }, + "@ndelangen/get-tarball": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@ndelangen/get-tarball/-/get-tarball-3.0.9.tgz", + "integrity": "sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==", + "dev": true, + "requires": { + "gunzip-maybe": "^1.4.2", + "pump": "^3.0.0", + "tar-fs": "^2.1.1" + } + }, + "@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", + "dev": true, + "optional": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, + "@popperjs/core": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz", + "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==" + }, + "@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/react-collection": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", + "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" + } + }, + "@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-direction": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", + "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-dismissable-layer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz", + "integrity": "sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + } + }, + "@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-focus-scope": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz", + "integrity": "sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" + } + }, + "@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + } + }, + "@radix-ui/react-popper": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.2.tgz", + "integrity": "sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + } + }, + "@radix-ui/react-portal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.3.tgz", + "integrity": "sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + } + }, + "@radix-ui/react-roving-focus": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", + "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1" + } + }, + "@radix-ui/react-select": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-1.2.2.tgz", + "integrity": "sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.4", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.3", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.2", + "@radix-ui/react-portal": "1.0.3", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + } + }, + "@radix-ui/react-separator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz", + "integrity": "sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + } + }, + "@radix-ui/react-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.0.3.tgz", + "integrity": "sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" + } + }, + "@radix-ui/react-toggle-group": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.0.4.tgz", + "integrity": "sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-toggle": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1" + } + }, + "@radix-ui/react-toolbar": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.0.4.tgz", + "integrity": "sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-separator": "1.0.3", + "@radix-ui/react-toggle-group": "1.0.4" + } + }, + "@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + } + }, + "@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + } + }, + "@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + } + }, + "@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + } + }, + "@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@react-native-community/cli": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-12.3.2.tgz", + "integrity": "sha512-WgoUWwLDcf/G1Su2COUUVs3RzAwnV/vUTdISSpAUGgSc57mPabaAoUctKTnfYEhCnE3j02k3VtaVPwCAFRO3TQ==", + "dev": true, + "requires": { + "@react-native-community/cli-clean": "12.3.2", + "@react-native-community/cli-config": "12.3.2", + "@react-native-community/cli-debugger-ui": "12.3.2", + "@react-native-community/cli-doctor": "12.3.2", + "@react-native-community/cli-hermes": "12.3.2", + "@react-native-community/cli-plugin-metro": "12.3.2", + "@react-native-community/cli-server-api": "12.3.2", + "@react-native-community/cli-tools": "12.3.2", + "@react-native-community/cli-types": "12.3.2", + "chalk": "^4.1.2", + "commander": "^9.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "prompts": "^2.4.2", + "semver": "^7.5.2" + }, + "dependencies": { + "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" + } + }, + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.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 + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@react-native-community/cli-clean": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-12.3.2.tgz", + "integrity": "sha512-90k2hCX0ddSFPT7EN7h5SZj0XZPXP0+y/++v262hssoey3nhurwF57NGWN0XAR0o9BSW7+mBfeInfabzDraO6A==", + "dev": true, + "requires": { + "@react-native-community/cli-tools": "12.3.2", + "chalk": "^4.1.2", + "execa": "^5.0.0" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "@react-native-community/cli-config": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-12.3.2.tgz", + "integrity": "sha512-UUCzDjQgvAVL/57rL7eOuFUhd+d+6qfM7V8uOegQFeFEmSmvUUDLYoXpBa5vAK9JgQtSqMBJ1Shmwao+/oElxQ==", + "dev": true, + "requires": { + "@react-native-community/cli-tools": "12.3.2", + "chalk": "^4.1.2", + "cosmiconfig": "^5.1.0", + "deepmerge": "^4.3.0", + "glob": "^7.1.3", + "joi": "^17.2.1" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "@react-native-community/cli-debugger-ui": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.2.tgz", + "integrity": "sha512-nSWQUL+51J682DlfcC1bjkUbQbGvHCC25jpqTwHIjmmVjYCX1uHuhPSqQKgPNdvtfOkrkACxczd7kVMmetxY2Q==", + "dev": true, + "requires": { + "serve-static": "^1.13.1" + } + }, + "@react-native-community/cli-doctor": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-12.3.2.tgz", + "integrity": "sha512-GrAabdY4qtBX49knHFvEAdLtCjkmndjTeqhYO6BhsbAeKOtspcLT/0WRgdLIaKODRa61ADNB3K5Zm4dU0QrZOg==", + "dev": true, + "requires": { + "@react-native-community/cli-config": "12.3.2", + "@react-native-community/cli-platform-android": "12.3.2", + "@react-native-community/cli-platform-ios": "12.3.2", + "@react-native-community/cli-tools": "12.3.2", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.10.0", + "execa": "^5.0.0", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "semver": "^7.5.2", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@react-native-community/cli-hermes": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-12.3.2.tgz", + "integrity": "sha512-SL6F9O8ghp4ESBFH2YAPLtIN39jdnvGBKnK4FGKpDCjtB3DnUmDsGFlH46S+GGt5M6VzfG2eeKEOKf3pZ6jUzA==", + "dev": true, + "requires": { + "@react-native-community/cli-platform-android": "12.3.2", + "@react-native-community/cli-tools": "12.3.2", + "chalk": "^4.1.2", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "@react-native-community/cli-platform-android": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.2.tgz", + "integrity": "sha512-MZ5nO8yi/N+Fj2i9BJcJ9C/ez+9/Ir7lQt49DWRo9YDmzye66mYLr/P2l/qxsixllbbDi7BXrlLpxaEhMrDopg==", + "dev": true, + "requires": { + "@react-native-community/cli-tools": "12.3.2", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-xml-parser": "^4.2.4", + "glob": "^7.1.3", + "logkitty": "^0.7.1" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "@react-native-community/cli-platform-ios": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.2.tgz", + "integrity": "sha512-OcWEAbkev1IL6SUiQnM6DQdsvfsKZhRZtoBNSj9MfdmwotVZSOEZJ+IjZ1FR9ChvMWayO9ns/o8LgoQxr1ZXeg==", + "dev": true, + "requires": { + "@react-native-community/cli-tools": "12.3.2", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-xml-parser": "^4.0.12", + "glob": "^7.1.3", + "ora": "^5.4.1" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "@react-native-community/cli-plugin-metro": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.2.tgz", + "integrity": "sha512-FpFBwu+d2E7KRhYPTkKvQsWb2/JKsJv+t1tcqgQkn+oByhp+qGyXBobFB8/R3yYvRRDCSDhS+atWTJzk9TjM8g==", + "dev": true + }, + "@react-native-community/cli-server-api": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-12.3.2.tgz", + "integrity": "sha512-iwa7EO9XFA/OjI5pPLLpI/6mFVqv8L73kNck3CNOJIUCCveGXBKK0VMyOkXaf/BYnihgQrXh+x5cxbDbggr7+Q==", + "dev": true, + "requires": { + "@react-native-community/cli-debugger-ui": "12.3.2", + "@react-native-community/cli-tools": "12.3.2", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^7.5.1" + }, + "dependencies": { + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true + } + } + }, + "@react-native-community/cli-tools": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-12.3.2.tgz", + "integrity": "sha512-nDH7vuEicHI2TI0jac/DjT3fr977iWXRdgVAqPZFFczlbs7A8GQvEdGnZ1G8dqRUmg+kptw0e4hwczAOG89JzQ==", + "dev": true, + "requires": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@react-native-community/cli-types": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-12.3.2.tgz", + "integrity": "sha512-9D0UEFqLW8JmS16mjHJxUJWX8E+zJddrHILSH8AJHZ0NNHv4u2DXKdb0wFLMobFxGNxPT+VSOjc60fGvXzWHog==", + "dev": true, + "requires": { + "joi": "^17.2.1" + } + }, + "@react-native/assets-registry": { + "version": "0.73.1", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.73.1.tgz", + "integrity": "sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==", + "dev": true + }, + "@react-native/babel-plugin-codegen": { + "version": "0.73.3", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.3.tgz", + "integrity": "sha512-+zQrDDbz6lB48LyzFHxNCgXDCBHH+oTRdXAjikRcBUdeG9St9ABbYFLtb799zSxLOrCqFVyXqhJR2vlgLLEbcg==", + "dev": true, + "requires": { + "@react-native/codegen": "0.73.2" + } + }, + "@react-native/babel-preset": { + "version": "0.73.20", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.73.20.tgz", + "integrity": "sha512-fU9NqkusbfFq71l4BWQfqqD/lLcLC0MZ++UYgieA3j8lIEppJTLVauv2RwtD2yltBkjebgYEC5Rwvt1l0MUBXw==", + "dev": true, + "requires": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.20.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.11", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "@react-native/babel-plugin-codegen": "0.73.3", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + } + }, + "@react-native/codegen": { + "version": "0.73.2", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.73.2.tgz", + "integrity": "sha512-lfy8S7umhE3QLQG5ViC4wg5N1Z+E6RnaeIw8w1voroQsXXGPB72IBozh8dAHR3+ceTxIU0KX3A8OpJI8e1+HpQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.0", + "flow-parser": "^0.206.0", + "glob": "^7.1.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1" + } + }, + "@react-native/community-cli-plugin": { + "version": "0.73.14", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.14.tgz", + "integrity": "sha512-KzIwsTvAJrXPtwhGOSm+OcJH1B8TpY8cS4xxzu/e2qv3a2n4VLePHTPAfco1tmvekV8OHWvvD9JSIX7i2fB1gg==", + "dev": true, + "requires": { + "@react-native-community/cli-server-api": "12.3.2", + "@react-native-community/cli-tools": "12.3.2", + "@react-native/dev-middleware": "0.73.7", + "@react-native/metro-babel-transformer": "0.73.14", + "chalk": "^4.0.0", + "execa": "^5.1.1", + "metro": "^0.80.3", + "metro-config": "^0.80.3", + "metro-core": "^0.80.3", + "node-fetch": "^2.2.0", + "readline": "^1.3.0" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "@react-native/debugger-frontend": { + "version": "0.73.3", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz", + "integrity": "sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==", + "dev": true + }, + "@react-native/dev-middleware": { + "version": "0.73.7", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.73.7.tgz", + "integrity": "sha512-BZXpn+qKp/dNdr4+TkZxXDttfx8YobDh8MFHsMk9usouLm22pKgFIPkGBV0X8Do4LBkFNPGtrnsKkWk/yuUXKg==", + "dev": true, + "requires": { + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.73.3", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^1.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "open": "^7.0.3", + "serve-static": "^1.13.1", + "temp-dir": "^2.0.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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + } + } + }, + "@react-native/gradle-plugin": { + "version": "0.73.4", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz", + "integrity": "sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==", + "dev": true + }, + "@react-native/js-polyfills": { + "version": "0.73.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz", + "integrity": "sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==", + "dev": true + }, + "@react-native/metro-babel-transformer": { + "version": "0.73.14", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.14.tgz", + "integrity": "sha512-5wLeYw/lormpSqYfI9H/geZ/EtPmi+x5qLkEit15Q/70hkzYo/M+aWztUtbOITfgTEOP8d6ybROzoGsqgyZLcw==", + "dev": true, + "requires": { + "@babel/core": "^7.20.0", + "@react-native/babel-preset": "0.73.20", + "hermes-parser": "0.15.0", + "nullthrows": "^1.1.1" + } + }, + "@react-native/normalize-colors": { + "version": "0.73.2", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz", + "integrity": "sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==", + "dev": true + }, + "@react-native/virtualized-lists": { + "version": "0.73.4", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz", + "integrity": "sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==", + "dev": true, + "requires": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + } + }, + "@rollup/plugin-babel": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz", + "integrity": "sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@rollup/pluginutils": "^5.0.1" + } + }, + "@rollup/plugin-commonjs": { + "version": "25.0.8", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.8.tgz", + "integrity": "sha512-ZEZWTK5n6Qde0to4vS9Mr5x/0UZoqCxPVR9KRUjU4kA2sO7GEUn1fop0DAwpO6z0Nw/kJON9bDmSxdWxO/TT1A==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.30.3" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@rollup/plugin-node-resolve": { + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "dependencies": { + "@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + } + } + }, + "@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "dependencies": { + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + } + } + }, + "@rushstack/node-core-library": { + "version": "3.61.0", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.61.0.tgz", + "integrity": "sha512-tdOjdErme+/YOu4gPed3sFS72GhtWCgNV9oDsHDnoLY5oDfwjKUc9Z+JOZZ37uAxcm/OCahDHfuu2ugqrfWAVQ==", + "dev": true, + "requires": { + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.22.1", + "semver": "~7.5.4", + "z-schema": "~5.0.2" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@rushstack/rig-package": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.5.1.tgz", + "integrity": "sha512-pXRYSe29TjRw7rqxD4WS3HN/sRSbfr+tJs4a9uuaSIBAITbUggygdhuG0VrO0EO+QqH91GhYMN4S6KRtOEmGVA==", + "dev": true, + "requires": { + "resolve": "~1.22.1", + "strip-json-comments": "~3.1.1" + } + }, + "@rushstack/ts-command-line": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.17.1.tgz", + "integrity": "sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg==", + "dev": true, + "requires": { + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "colors": "~1.2.1", + "string-argv": "~0.3.1" + } + }, + "@salutejs/input-core": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@salutejs/input-core/-/input-core-2.1.2.tgz", + "integrity": "sha512-Y4tNTtmz7R50DysojQac2Z8JIKK1JSRCc7P7D7IefQQeFaeLbBTXbXAkMuBipTRXDR3kLs2AHSMcbKbrQRW3qw==" + }, + "@salutejs/plasma-colors": { + "version": "0.13.1-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-colors/-/plasma-colors-0.13.1-dev.0.tgz", + "integrity": "sha512-cFplAQDHghg1FyYi1Y5Qv12H9i7d3G8fT0klxN6aCRLENLVAahZHDPGzF8fgCv0e124ha9Nt0LXxB6X0Fpw/5A==", + "dev": true + }, + "@salutejs/plasma-core": { + "version": "1.189.1-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-core/-/plasma-core-1.189.1-dev.0.tgz", + "integrity": "sha512-87vSa/15SuQJaohlAmGNuRxPSL0J+u/d8v9WR0v4fX8xedyiW/ym6V+bqcGHusxczrby8OBUivsm2uSS+X/2Sg==", + "requires": { + "@popperjs/core": "2.9.2", + "@salutejs/plasma-typo": "0.40.1-dev.0", + "focus-visible": "5.2.0", + "lodash.throttle": "4.1.1", + "react-draggable": "4.4.3", + "react-popper": "2.3.0" + }, + "dependencies": { + "react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "requires": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + } + } + } + }, + "@salutejs/plasma-cy-utils": { + "version": "0.120.1-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-cy-utils/-/plasma-cy-utils-0.120.1-dev.0.tgz", + "integrity": "sha512-suo2cuFnh3RZIjlXNTOb/lIOWLZSS3qoGX9Cuba2hQk8emqetAH+qdgU1IEtDdyfZWDmIwaWn+peDLy5UplR4Q==", + "dev": true + }, + "@salutejs/plasma-icons": { + "version": "1.209.1-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-icons/-/plasma-icons-1.209.1-dev.0.tgz", + "integrity": "sha512-qX/Ka3wUtMlOIj6kIBdddxYyiDEJ8MeFsdbfSopl6ekXlpK4G6XlUk7gjKqYt3NTf5qYeh7s5XiAKmi/LNZVSg==", + "dev": true + }, + "@salutejs/plasma-new-hope": { + "version": "0.227.0-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-new-hope/-/plasma-new-hope-0.227.0-dev.0.tgz", + "integrity": "sha512-TBXDzYxCQsvwNKND2Pk7uBU62sws2Joo4BPEr25u0AD/1JNBtl7yVISVeQoqrY/nQh3LAE54M7N6aep+yXvXAQ==", + "requires": { + "@floating-ui/dom": "1.6.10", + "@floating-ui/react": "0.26.22", + "@floating-ui/react-dom": "2.1.1", + "@linaria/core": "5.0.2", + "@linaria/react": "5.0.3", + "@popperjs/core": "2.11.8", + "@salutejs/input-core": "2.1.2", + "@salutejs/plasma-core": "1.189.1-dev.0", + "@salutejs/react-maskinput": "3.2.6", + "classnames": "2.5.1", + "dayjs": "1.11.11", + "focus-visible": "5.2.0", + "lodash.throttle": "4.1.1", + "react-draggable": "4.4.3", + "react-popper": "2.3.0", + "storeon": "3.1.5" + }, + "dependencies": { + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" + }, + "react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "requires": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + } + } + } + }, + "@salutejs/plasma-sb-utils": { + "version": "0.188.1-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-sb-utils/-/plasma-sb-utils-0.188.1-dev.0.tgz", + "integrity": "sha512-tLYembfpQIjCLH0bfh4Q8bs4kk3v28qqZ5UNkuKr69lilGOt/mD7bJufo6eNfALYmaOA84cHbLpjqWtyMG7QlQ==", + "dev": true, + "requires": { + "@salutejs/plasma-colors": "0.13.1-dev.0", + "@salutejs/plasma-core": "1.189.1-dev.0", + "param-case": "^3.0.4" + } + }, + "@salutejs/plasma-themes": { + "version": "0.27.0-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-themes/-/plasma-themes-0.27.0-dev.0.tgz", + "integrity": "sha512-2ISnEhEZaTMTLwlJ6oFZkVo3Skxz1w+JAORS4AX/A5LFnviuPxCDlk55VDj8ENKHZwg0JG/rYogi8Dd274IYRg==" + }, + "@salutejs/plasma-typo": { + "version": "0.40.1-dev.0", + "resolved": "https://registry.npmjs.org/@salutejs/plasma-typo/-/plasma-typo-0.40.1-dev.0.tgz", + "integrity": "sha512-2upt63DI5kLdCtp5nfpsBuPCu4eSPDva/dg3ChnTLF0FrDW5Bbtp5CbylOnuKkvaxZ2CVr5fhRtXkL2hZniRBg==" + }, + "@salutejs/react-maskinput": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@salutejs/react-maskinput/-/react-maskinput-3.2.6.tgz", + "integrity": "sha512-2PCmEAISvTIERnLQ9h358a6f/Fj87Hjgw85h/T5TUUMTQXbCpHLzOeCdy9zyuj+SXqN58voajiQ05wE+8hrsGw==", + "requires": { + "@salutejs/input-core": "^2.1.2" + } + }, + "@semantic-ui-react/event-stack": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@semantic-ui-react/event-stack/-/event-stack-3.1.3.tgz", + "integrity": "sha512-FdTmJyWvJaYinHrKRsMLDrz4tTMGdFfds299Qory53hBugiDvGC0tEJf+cHsi5igDwWb/CLOgOiChInHwq8URQ==", + "dev": true, + "requires": { + "exenv": "^1.2.2", + "prop-types": "^15.6.2" + } + }, + "@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.0.0" + } + }, + "@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.0" + } + }, + "@stardust-ui/react-component-event-listener": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@stardust-ui/react-component-event-listener/-/react-component-event-listener-0.38.0.tgz", + "integrity": "sha512-sIP/e0dyOrrlb8K7KWumfMxj/gAifswTBC4o68Aa+C/GA73ccRp/6W1VlHvF/dlOR4KLsA+5SKnhjH36xzPsWg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "prop-types": "^15.7.2" + } + }, + "@stardust-ui/react-component-ref": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@stardust-ui/react-component-ref/-/react-component-ref-0.38.0.tgz", + "integrity": "sha512-xjs6WnvJVueSIXMWw0C3oWIgAPpcD03qw43oGOjUXqFktvpNkB73JoKIhS4sCrtQxBdct75qqr4ZL6JiyPcESw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "prop-types": "^15.7.2", + "react-is": "^16.6.3" + } + }, + "@storybook/addon-actions": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.6.17.tgz", + "integrity": "sha512-TBphs4v6LRfyTpFo/WINF0TkMaE3rrNog7wW5mbz6n0j8o53kDN4o9ZEcygSL5zQX43CAaghQTeDCss7ueG7ZQ==", + "dev": true, + "requires": { + "@storybook/core-events": "7.6.17", + "@storybook/global": "^5.0.0", + "@types/uuid": "^9.0.1", + "dequal": "^2.0.2", + "polished": "^4.2.2", + "uuid": "^9.0.0" + } + }, + "@storybook/addon-backgrounds": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.6.17.tgz", + "integrity": "sha512-7dize7x8+37PH77kmt69b0xSaeDqOcZ4fpzW6+hk53hIaCVU26eGs4+j+743Xva31eOgZWNLupUhOpUDc6SqZw==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/addon-controls": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.6.17.tgz", + "integrity": "sha512-zR0aLaUF7FtV/nMRyfniFbCls/e0DAAoXACuOAUAwNAv0lbIS8AyZZiHSmKucCvziUQ6WceeCC7+du3C+9y0rQ==", + "dev": true, + "requires": { + "@storybook/blocks": "7.6.17", + "lodash": "^4.17.21", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/addon-docs": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.6.17.tgz", + "integrity": "sha512-FKa4Mdy7nhgvEVZJHpMkHriDzpVHbohn87zv9NCL+Ctjs1iAmzGwxEm0culszyDS1HN2ToVoY0h8CSi2RSSZqA==", + "dev": true, + "requires": { + "@jest/transform": "^29.3.1", + "@mdx-js/react": "^2.1.5", + "@storybook/blocks": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/components": "7.6.17", + "@storybook/csf-plugin": "7.6.17", + "@storybook/csf-tools": "7.6.17", + "@storybook/global": "^5.0.0", + "@storybook/mdx2-csf": "^1.0.0", + "@storybook/node-logger": "7.6.17", + "@storybook/postinstall": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/react-dom-shim": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", + "fs-extra": "^11.1.0", + "remark-external-links": "^8.0.0", + "remark-slug": "^6.0.0", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "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" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + } + } + }, + "@storybook/addon-essentials": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.6.17.tgz", + "integrity": "sha512-qlSpamxuYfT2taF953nC9QijGF2pSbg1ewMNpdwLTj16PTZvR/d8NCDMTJujI1bDwM2m18u8Yc43ibh5LEmxCw==", + "dev": true, + "requires": { + "@storybook/addon-actions": "7.6.17", + "@storybook/addon-backgrounds": "7.6.17", + "@storybook/addon-controls": "7.6.17", + "@storybook/addon-docs": "7.6.17", + "@storybook/addon-highlight": "7.6.17", + "@storybook/addon-measure": "7.6.17", + "@storybook/addon-outline": "7.6.17", + "@storybook/addon-toolbars": "7.6.17", + "@storybook/addon-viewport": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/manager-api": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview-api": "7.6.17", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/addon-highlight": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.6.17.tgz", + "integrity": "sha512-R1yBPUUqGn+60aJakn8q+5Zt34E/gU3n3VmgPdryP0LJUdZ5q1/RZShoVDV+yYQ40htMH6oaCv3OyyPzFAGJ6A==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0" + } + }, + "@storybook/addon-measure": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.6.17.tgz", + "integrity": "sha512-O5vnHZNkduvZ95jf1UssbOl6ivIxzl5tv+4EpScPYId7w700bxWsJH+QX7ip6KlrCf2o3iUhmPe8bm05ghG2KA==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0", + "tiny-invariant": "^1.3.1" + } + }, + "@storybook/addon-outline": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.6.17.tgz", + "integrity": "sha512-9o9JXDsYjNaDgz/cY5+jv694+aik/1aiRGGvsCv68e1p/ob0glkGKav4lnJe2VJqD+gCmaARoD8GOJlhoQl8JQ==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/addon-toolbars": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.6.17.tgz", + "integrity": "sha512-UMrchbUHiyWrh6WuGnpy34Jqzkx/63B+MSgb3CW7YsQaXz64kE0Rol0TNSznnB+mYXplcqH+ndI4r4kFsmgwDg==", + "dev": true + }, + "@storybook/addon-viewport": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.6.17.tgz", + "integrity": "sha512-sA0QCcf4QAMixWvn8uvRYPfkKCSl6JajJaAspoPqXSxHEpK7uwOlpg3kqFU5XJJPXD0X957M+ONgNvBzYqSpEw==", + "dev": true, + "requires": { + "memoizerific": "^1.11.3" + } + }, + "@storybook/addons": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-7.6.17.tgz", + "integrity": "sha512-Ok18Y698Ccyg++MoUNJNHY0cXUvo8ETFIRLJk1g9ElJ70j6kPgNnzW2pAtZkBNmswHtofZ7pT156cj96k/LgfA==", + "dev": true, + "requires": { + "@storybook/manager-api": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/types": "7.6.17" + } + }, + "@storybook/blocks": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.6.17.tgz", + "integrity": "sha512-PsNVoe0bX1mMn4Kk3nbKZ0ItDZZ0YJnYAFJ6toAbsyBAbgzg1sce88sQinzvbn58/RT9MPKeWMPB45ZS7ggiNg==", + "dev": true, + "requires": { + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/components": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/docs-tools": "7.6.17", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", + "@types/lodash": "^4.14.167", + "color-convert": "^2.0.1", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.8", + "memoizerific": "^1.11.3", + "polished": "^4.2.2", + "react-colorful": "^5.1.2", + "telejson": "^7.2.0", + "tocbot": "^4.20.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/builder-manager": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.6.17.tgz", + "integrity": "sha512-Sj8hcDYiPCCMfeLzus37czl0zdrAxAz4IyYam2jBjVymrIrcDAFyL1OCZvnq33ft179QYQWhUs9qwzVmlR/ZWg==", + "dev": true, + "requires": { + "@fal-works/esbuild-plugin-global-externals": "^2.1.2", + "@storybook/core-common": "7.6.17", + "@storybook/manager": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@types/ejs": "^3.1.1", + "@types/find-cache-dir": "^3.2.1", + "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", + "browser-assert": "^1.2.1", + "ejs": "^3.1.8", + "esbuild": "^0.18.0", + "esbuild-plugin-alias": "^0.2.1", + "express": "^4.17.3", + "find-cache-dir": "^3.0.0", + "fs-extra": "^11.1.0", + "process": "^0.11.10", + "util": "^0.12.4" + }, + "dependencies": { + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "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" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + } + } + }, + "@storybook/builder-vite": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.6.17.tgz", + "integrity": "sha512-2Q32qalI401EsKKr9Hkk8TAOcHEerqwsjCpQgTNJnCu6GgCVKoVUcb99oRbR9Vyg0xh+jb19XiWqqQujFtLYlQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/csf-plugin": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/types": "7.6.17", + "@types/find-cache-dir": "^3.2.1", + "browser-assert": "^1.2.1", + "es-module-lexer": "^0.9.3", + "express": "^4.17.3", + "find-cache-dir": "^3.0.0", + "fs-extra": "^11.1.0", + "magic-string": "^0.30.0", + "rollup": "^2.25.0 || ^3.3.0" + }, + "dependencies": { + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "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" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + } + } + }, + "@storybook/channels": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.17.tgz", + "integrity": "sha512-GFG40pzaSxk1hUr/J/TMqW5AFDDPUSu+HkeE/oqSWJbOodBOLJzHN6CReJS6y1DjYSZLNFt1jftPWZZInG/XUA==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + } + }, + "@storybook/cli": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.6.17.tgz", + "integrity": "sha512-1sCo+nCqyR+nKfTcEidVu8XzNoECC7Y1l+uW38/r7s2f/TdDorXaIGAVrpjbSaXSoQpx5DxYJVaKCcQuOgqwcA==", + "dev": true, + "requires": { + "@babel/core": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/types": "^7.23.0", + "@ndelangen/get-tarball": "^3.0.7", + "@storybook/codemod": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/core-server": "7.6.17", + "@storybook/csf-tools": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/telemetry": "7.6.17", + "@storybook/types": "7.6.17", + "@types/semver": "^7.3.4", + "@yarnpkg/fslib": "2.10.3", + "@yarnpkg/libzip": "2.3.0", + "chalk": "^4.1.0", + "commander": "^6.2.1", + "cross-spawn": "^7.0.3", + "detect-indent": "^6.1.0", + "envinfo": "^7.7.3", + "execa": "^5.0.0", + "express": "^4.17.3", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "get-npm-tarball-url": "^2.0.3", + "get-port": "^5.1.1", + "giget": "^1.0.0", + "globby": "^11.0.2", + "jscodeshift": "^0.15.1", + "leven": "^3.1.0", + "ora": "^5.4.1", + "prettier": "^2.8.0", + "prompts": "^2.4.0", + "puppeteer-core": "^2.1.1", + "read-pkg-up": "^7.0.1", + "semver": "^7.3.7", + "strip-json-comments": "^3.0.1", + "tempy": "^1.0.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "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" + } + }, + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + }, + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "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 + }, + "jscodeshift": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", + "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", + "dev": true, + "requires": { + "@babel/core": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/preset-flow": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@babel/register": "^7.22.15", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.23.3", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + } + }, + "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" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@storybook/client-logger": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.17.tgz", + "integrity": "sha512-6WBYqixAXNAXlSaBWwgljWpAu10tPRBJrcFvx2gPUne58EeMM20Gi/iHYBz2kMCY+JLAgeIH7ZxInqwO8vDwiQ==", + "dev": true, + "requires": { + "@storybook/global": "^5.0.0" + } + }, + "@storybook/codemod": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.6.17.tgz", + "integrity": "sha512-JuTmf2u3C4fCnjO7o3dqRgrq3ozNYfWlrRP8xuIdvT7niMap7a396hJtSKqS10FxCgKFcMAOsRgrCalH1dWxUg==", + "dev": true, + "requires": { + "@babel/core": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/types": "^7.23.0", + "@storybook/csf": "^0.1.2", + "@storybook/csf-tools": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/types": "7.6.17", + "@types/cross-spawn": "^6.0.2", + "cross-spawn": "^7.0.3", + "globby": "^11.0.2", + "jscodeshift": "^0.15.1", + "lodash": "^4.17.21", + "prettier": "^2.8.0", + "recast": "^0.23.1" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "jscodeshift": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", + "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", + "dev": true, + "requires": { + "@babel/core": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.23.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", + "@babel/plugin-transform-optional-chaining": "^7.23.0", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/preset-flow": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@babel/register": "^7.22.15", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.23.3", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + } + }, + "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" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } + } + }, + "@storybook/components": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.17.tgz", + "integrity": "sha512-lbh7GynMidA+CZcJnstVku6Nhs+YkqjYaZ+mKPugvlVhGVWv0DaaeQFVuZ8cJtUGJ/5FFU4Y+n+gylYUHkGBMA==", + "dev": true, + "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/core-client": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.17.tgz", + "integrity": "sha512-LuDbADK+DPNAOOCXOlvY09hdGVueXlDetsdOJ/DgYnSa9QSWv9Uv+F8QcEgR3QckZJbPlztKJIVLgP2n/Xkijw==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.6.17", + "@storybook/preview-api": "7.6.17" + } + }, + "@storybook/core-common": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.17.tgz", + "integrity": "sha512-me2TP3Q9/qzqCLoDHUSsUF+VS1MHxfHbTVF6vAz0D/COTxzsxLpu9TxTbzJoBCxse6XRb6wWI1RgF1mIcjic7g==", + "dev": true, + "requires": { + "@storybook/core-events": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/types": "7.6.17", + "@types/find-cache-dir": "^3.2.1", + "@types/node": "^18.0.0", + "@types/node-fetch": "^2.6.4", + "@types/pretty-hrtime": "^1.0.0", + "chalk": "^4.1.0", + "esbuild": "^0.18.0", + "esbuild-register": "^3.5.0", + "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "glob": "^10.0.0", + "handlebars": "^4.7.7", + "lazy-universal-dotenv": "^4.0.0", + "node-fetch": "^2.0.0", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "@types/node": { + "version": "18.19.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.21.tgz", + "integrity": "sha512-2Q2NeB6BmiTFQi4DHBzncSoq/cJMLDdhPaAoJFnFCyD9a8VPZRf7a1GAwp1Edb7ROaZc5Jz/tnZyL6EsWMRaqw==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.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" + } + }, + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "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 + }, + "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" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "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" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + } + } + }, + "@storybook/core-events": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.17.tgz", + "integrity": "sha512-AriWMCm/k1cxlv10f+jZ1wavThTRpLaN3kY019kHWbYT9XgaSuLU67G7GPr3cGnJ6HuA6uhbzu8qtqVCd6OfXA==", + "dev": true, + "requires": { + "ts-dedent": "^2.0.0" + } + }, + "@storybook/core-server": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.6.17.tgz", + "integrity": "sha512-KWGhTTaL1Q14FolcoKKZgytlPJUbH6sbJ1Ptj/84EYWFewcnEgVs0Zlnh1VStRZg+Rd1WC1V4yVd/bbDzxrvQA==", + "dev": true, + "requires": { + "@aw-web-design/x-default-browser": "1.4.126", + "@discoveryjs/json-ext": "^0.5.3", + "@storybook/builder-manager": "7.6.17", + "@storybook/channels": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/csf-tools": "7.6.17", + "@storybook/docs-mdx": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/manager": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/telemetry": "7.6.17", + "@storybook/types": "7.6.17", + "@types/detect-port": "^1.3.0", + "@types/node": "^18.0.0", + "@types/pretty-hrtime": "^1.0.0", + "@types/semver": "^7.3.4", + "better-opn": "^3.0.2", + "chalk": "^4.1.0", + "cli-table3": "^0.6.1", + "compression": "^1.7.4", + "detect-port": "^1.3.0", + "express": "^4.17.3", + "fs-extra": "^11.1.0", + "globby": "^11.0.2", + "ip": "^2.0.1", + "lodash": "^4.17.21", + "open": "^8.4.0", + "pretty-hrtime": "^1.0.3", + "prompts": "^2.4.0", + "read-pkg-up": "^7.0.1", + "semver": "^7.3.7", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1", + "ts-dedent": "^2.0.0", + "util": "^0.12.4", + "util-deprecate": "^1.0.2", + "watchpack": "^2.2.0", + "ws": "^8.2.3" + }, + "dependencies": { + "@types/node": { + "version": "18.19.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.21.tgz", + "integrity": "sha512-2Q2NeB6BmiTFQi4DHBzncSoq/cJMLDdhPaAoJFnFCyD9a8VPZRf7a1GAwp1Edb7ROaZc5Jz/tnZyL6EsWMRaqw==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "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" + } + }, + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "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 + }, + "ip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", + "dev": true + }, + "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" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + }, + "ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@storybook/csf": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.2.tgz", + "integrity": "sha512-ePrvE/pS1vsKR9Xr+o+YwdqNgHUyXvg+1Xjx0h9LrVx7Zq4zNe06pd63F5EvzTbCbJsHj7GHr9tkiaqm7U8WRA==", + "dev": true, + "requires": { + "type-fest": "^2.19.0" + } + }, + "@storybook/csf-plugin": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.6.17.tgz", + "integrity": "sha512-xTHv9BUh3bkDVCvcbmdfVF0/e96BdrEgqPJ3G3RmKbSzWLOkQ2U9yiPfHzT0KJWPhVwj12fjfZp0zunu+pcS6Q==", + "dev": true, + "requires": { + "@storybook/csf-tools": "7.6.17", + "unplugin": "^1.3.1" + } + }, + "@storybook/csf-tools": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.6.17.tgz", + "integrity": "sha512-dAQtam0EBPeTJYcQPLxXgz4L9JFqD+HWbLFG9CmNIhMMjticrB0mpk1EFIS6vPXk/VsVWpBgMLD7dZlD6YMKcQ==", + "dev": true, + "requires": { + "@babel/generator": "^7.23.0", + "@babel/parser": "^7.23.0", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "@storybook/csf": "^0.1.2", + "@storybook/types": "7.6.17", + "fs-extra": "^11.1.0", + "recast": "^0.23.1", + "ts-dedent": "^2.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "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" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + } + } + }, + "@storybook/docs-mdx": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz", + "integrity": "sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==", + "dev": true + }, + "@storybook/docs-tools": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.17.tgz", + "integrity": "sha512-bYrLoj06adqklyLkEwD32C0Ww6t+9ZVvrJHiVT42bIhTRpFiFPAetl1a9KPHtFLnfduh4n2IxIr1jv32ThPDTA==", + "dev": true, + "requires": { + "@storybook/core-common": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/types": "7.6.17", + "@types/doctrine": "^0.0.3", + "assert": "^2.1.0", + "doctrine": "^3.0.0", + "lodash": "^4.17.21" + } + }, + "@storybook/global": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", + "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", + "dev": true + }, + "@storybook/manager": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.17.tgz", + "integrity": "sha512-A1LDDIqMpwRzq/dqkbbiza0QI04o4ZHCl2a3UMDZUV/+QLc2nsr2DAaLk4CVL4/cIc5zGqmIcaOTvprx2YKVBw==", + "dev": true + }, + "@storybook/manager-api": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.17.tgz", + "integrity": "sha512-IJIV1Yc6yw1dhCY4tReHCfBnUKDqEBnMyHp3mbXpsaHxnxJZrXO45WjRAZIKlQKhl/Ge1CrnznmHRCmYgqmrWg==", + "dev": true, + "requires": { + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + } + }, + "@storybook/mdx2-csf": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-1.1.0.tgz", + "integrity": "sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==", + "dev": true + }, + "@storybook/node-logger": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.17.tgz", + "integrity": "sha512-w59MQuXhhUNrUVmVkXhMwIg2nvFWjdDczLTwYLorhfsE36CWeUOY5QCZWQy0Qf/h+jz8Uo7Evy64qn18v9C4wA==", + "dev": true + }, + "@storybook/postinstall": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.6.17.tgz", + "integrity": "sha512-WaWqB8o9vUc9aaVls+povQSVirf1Xd1LZcVhUKfAocAF3mzYUsnJsVqvnbjRj/F96UFVihOyDt9Zjl/9OvrCvQ==", + "dev": true + }, + "@storybook/preview": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.6.17.tgz", + "integrity": "sha512-LvkMYK/y6alGjwRVNDIKL1lFlbyZ0H0c8iAbcQkiMoaFiujMQyVswMDKlWcj42Upfr/B1igydiruomc+eUt0mw==", + "dev": true + }, + "@storybook/preview-api": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.17.tgz", + "integrity": "sha512-wLfDdI9RWo1f2zzFe54yRhg+2YWyxLZvqdZnSQ45mTs4/7xXV5Wfbv3QNTtcdw8tT3U5KRTrN1mTfTCiRJc0Kw==", + "dev": true, + "requires": { + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/types": "7.6.17", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + } + }, + "@storybook/react": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.6.17.tgz", + "integrity": "sha512-lVqzQSU03rRJWYW+gK2gq6mSo3/qtnVICY8B8oP7gc36jVu4ksDIu45bTfukM618ODkUZy0vZe6T4engK3azjA==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.6.17", + "@storybook/core-client": "7.6.17", + "@storybook/docs-tools": "7.6.17", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "7.6.17", + "@storybook/react-dom-shim": "7.6.17", + "@storybook/types": "7.6.17", + "@types/escodegen": "^0.0.6", + "@types/estree": "^0.0.51", + "@types/node": "^18.0.0", + "acorn": "^7.4.1", + "acorn-jsx": "^5.3.1", + "acorn-walk": "^7.2.0", + "escodegen": "^2.1.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2", + "react-element-to-jsx-string": "^15.0.0", + "ts-dedent": "^2.0.0", + "type-fest": "~2.19", + "util-deprecate": "^1.0.2" + }, + "dependencies": { + "@types/node": { + "version": "18.19.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.14.tgz", + "integrity": "sha512-EnQ4Us2rmOS64nHDWr0XqAD8DsO6f3XR6lf9UIIrZQpUzPVdN/oPuEzfDWNHSyXLvoGgjuEm/sPwFGSSs35Wtg==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + } + } + }, + "@storybook/react-dom-shim": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.17.tgz", + "integrity": "sha512-32Sa/G+WnvaPiQ1Wvjjw5UM9rr2c4GDohwCcWVv3/LJuiFPqNS6zglAtmnsrlIBnUwRBMLMh/ekCTdqMiUmfDw==", + "dev": true + }, + "@storybook/react-vite": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-7.6.17.tgz", + "integrity": "sha512-4dIm3CuRl44X1TLzN3WoZh/bChzJF7Ud28li9atj9C8db0bb/y0zl8cahrsRFoR7/LyfqdOVLqaztrnA5SsWfg==", + "dev": true, + "requires": { + "@joshwooding/vite-plugin-react-docgen-typescript": "0.3.0", + "@rollup/pluginutils": "^5.0.2", + "@storybook/builder-vite": "7.6.17", + "@storybook/react": "7.6.17", + "@vitejs/plugin-react": "^3.0.1", + "magic-string": "^0.30.0", + "react-docgen": "^7.0.0" + } + }, + "@storybook/router": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.17.tgz", + "integrity": "sha512-GnyC0j6Wi5hT4qRhSyT8NPtJfGmf82uZw97LQRWeyYu5gWEshUdM7aj40XlNiScd5cZDp0owO1idduVF2k2l2A==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.6.17", + "memoizerific": "^1.11.3", + "qs": "^6.10.0" + } + }, + "@storybook/telemetry": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.6.17.tgz", + "integrity": "sha512-WOcOAmmengYnGInH98Px44F47DSpLyk20BM+Z/IIQDzfttGOLlxNqBBG1XTEhNRn+AYuk4aZ2JEed2lCjVIxcA==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/csf-tools": "7.6.17", + "chalk": "^4.1.0", + "detect-package-manager": "^2.0.1", + "fetch-retry": "^5.0.2", + "fs-extra": "^11.1.0", + "read-pkg-up": "^7.0.1" + }, + "dependencies": { + "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" + } + }, + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "requires": { + "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 + }, + "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" + } + }, + "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" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + } + } + }, + "@storybook/theming": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.17.tgz", + "integrity": "sha512-ZbaBt3KAbmBtfjNqgMY7wPMBshhSJlhodyMNQypv+95xLD/R+Az6aBYbpVAOygLaUQaQk4ar7H/Ww6lFIoiFbA==", + "dev": true, + "requires": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.6.17", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + } + }, + "@storybook/types": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.17.tgz", + "integrity": "sha512-GRY0xEJQ0PrL7DY2qCNUdIfUOE0Gsue6N+GBJw9ku1IUDFLJRDOF+4Dx2BvYcVCPI5XPqdWKlEyZdMdKjiQN7Q==", + "dev": true, + "requires": { + "@storybook/channels": "7.6.17", + "@types/babel__core": "^7.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" + } + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true + }, + "@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/detect-port": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/detect-port/-/detect-port-1.3.5.tgz", + "integrity": "sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==", + "dev": true + }, + "@types/doctrine": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.3.tgz", + "integrity": "sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==", + "dev": true + }, + "@types/ejs": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.5.tgz", + "integrity": "sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==", + "dev": true + }, + "@types/emscripten": { + "version": "1.39.10", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.10.tgz", + "integrity": "sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==", + "dev": true + }, + "@types/escodegen": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/escodegen/-/escodegen-0.0.6.tgz", + "integrity": "sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==", + "dev": true + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.43", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", + "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/find-cache-dir": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz", + "integrity": "sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==", + "dev": true + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "dev": true, + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "@types/lodash": { + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", + "dev": true + }, + "@types/mdx": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.11.tgz", + "integrity": "sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw==", + "dev": true + }, + "@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "@types/mime-types": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", + "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==", + "dev": true + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "@types/node": { + "version": "16.7.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.13.tgz", + "integrity": "sha512-pLUPDn+YG3FYEt/pHI74HmnJOWzeR+tOIQzUx93pi9M7D8OE7PSLr97HboXwk5F+JS+TLtWuzCOW97AHjmOXXA==", + "dev": true + }, + "@types/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true + }, + "@types/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", + "dev": true + }, + "@types/qs": { + "version": "6.9.12", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.12.tgz", + "integrity": "sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "@types/react": { + "version": "18.0.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", + "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "@types/react-dom": { + "version": "18.0.11", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", + "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-native": { + "version": "0.73.0", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.73.0.tgz", + "integrity": "sha512-6ZRPQrYM72qYKGWidEttRe6M5DZBEV5F+MHMHqd4TTYx0tfkcdrUFGdef6CCxY0jXU7wldvd/zA/b0A/kTeJmA==", + "dev": true, + "requires": { + "react-native": "*" + } + }, + "@types/resolve": { + "version": "1.20.6", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", + "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", + "dev": true + }, + "@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "dev": true + }, + "@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dev": true, + "requires": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "@types/styled-components": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.0.tgz", + "integrity": "sha512-ZFlLCuwF5r+4Vb7JUmd+Yr2S0UBdBGmI7ctFTgJMypIp3xOHI4LCFVn2dKMvpk6xDB2hLRykrEWMBwJEpUAUIQ==", + "dev": true, + "requires": { + "@types/hoist-non-react-statics": "*", + "@types/react": "*", + "@types/react-native": "*", + "csstype": "^2.2.0" + }, + "dependencies": { + "csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "dev": true + } + } + }, + "@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "dev": true + }, + "@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true + }, + "@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "@vitejs/plugin-react": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz", + "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==", + "dev": true, + "requires": { + "@babel/core": "^7.20.12", + "@babel/plugin-transform-react-jsx-self": "^7.18.6", + "@babel/plugin-transform-react-jsx-source": "^7.19.6", + "magic-string": "^0.27.0", + "react-refresh": "^0.14.0" + }, + "dependencies": { + "magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.13" + } + } + } + }, + "@yarnpkg/esbuild-plugin-pnp": { + "version": "3.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz", + "integrity": "sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==", + "dev": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "@yarnpkg/fslib": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@yarnpkg/fslib/-/fslib-2.10.3.tgz", + "integrity": "sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==", + "dev": true, + "requires": { + "@yarnpkg/libzip": "^2.3.0", + "tslib": "^1.13.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@yarnpkg/libzip": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz", + "integrity": "sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==", + "dev": true, + "requires": { + "@types/emscripten": "^1.39.6", + "tslib": "^1.13.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true + }, + "agent-base": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "dev": true + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", + "dev": true + }, + "ansi-fragments": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", + "dev": true, + "requires": { + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + } + } + }, + "app-root-dir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/app-root-dir/-/app-root-dir-1.0.2.tgz", + "integrity": "sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==", + "dev": true + }, + "appdirsjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", + "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, + "assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, + "ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + } + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, + "babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "dev": true + }, + "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": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + } + } + }, + "babel-merge": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/babel-merge/-/babel-merge-3.0.0.tgz", + "integrity": "sha512-eBOBtHnzt9xvnjpYNI5HmaPp/b2vMveE5XggzqHnQeHJ8mFIBrBv6WZEVIj5jJ2uwTItkqKo9gWzEEcBxEq0yw==", + "requires": { + "deepmerge": "^2.2.1", + "object.omit": "^3.0.0" + }, + "dependencies": { + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" + } + } + }, + "babel-plugin-annotate-pure-calls": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-annotate-pure-calls/-/babel-plugin-annotate-pure-calls-0.4.0.tgz", + "integrity": "sha512-oi4M/PWUJOU9ZyRGoPTfPMqdyMp06jbJAomd3RcyYuzUtBOddv98BqLm96Lucpi2QFoQHkdGQt0ACvw7VzVEQA==", + "dev": true + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "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" + }, + "dependencies": { + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "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" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", + "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.1", + "semver": "^6.3.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", + "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.6.1" + } + }, + "babel-plugin-styled-components": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.13.2.tgz", + "integrity": "sha512-Vb1R3d4g+MUfPQPVDMCGjm3cDocJEUTR7Xq7QS95JWWeksN1wdFRYpD2kulDgI3Huuaf1CZd+NK4KQmqUFh5dA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-module-imports": "^7.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11" + } + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", + "dev": true + }, + "babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "dev": true, + "requires": { + "open": "^8.0.4" + }, + "dependencies": { + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + } + } + }, + "big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "bplist-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", + "integrity": "sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q==", + "dev": true, + "requires": { + "big-integer": "^1.6.7" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browser-assert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz", + "integrity": "sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==", + "dev": true + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==", + "dev": true, + "requires": { + "pako": "~0.2.0" + } + }, + "browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "requires": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001611", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001611.tgz", + "integrity": "sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "dev": true, + "requires": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + } + } + }, + "chromium-edge-launcher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz", + "integrity": "sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==", + "dev": true, + "requires": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true + }, + "citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "dev": true, + "requires": { + "consola": "^3.2.3" + } + }, + "classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true + }, + "cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "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 + }, + "colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true + }, + "colors": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", + "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "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" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "core-js-compat": { + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", + "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", + "dev": true, + "requires": { + "browserslist": "^4.23.0" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true + }, + "css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "dev": true + }, + "css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "dev": true + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "dev": true, + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "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 + } + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "dependencies": { + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } + } + }, + "cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + } + }, + "cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "dayjs": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true + }, + "deep-equal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "dev": true, + "requires": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + } + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true + }, + "default-browser-id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-2.0.0.tgz", + "integrity": "sha512-+LePblg9HDIx3CIla8BxfI/zYUFs8Kp67U5feqb7iTJcAxBOvcZ7ZNXKFsBDnGE5x0ap66o848VHE0fq7cgpPg==", + "dev": true, + "requires": { + "bplist-parser": "^0.1.0", + "pify": "^2.3.0", + "untildify": "^2.0.0" + } + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "dev": true + }, + "del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dev": true, + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "denodeify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "deprecated-react-native-prop-types": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz", + "integrity": "sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==", + "dev": true, + "requires": { + "@react-native/normalize-colors": "^0.73.0", + "invariant": "^2.2.4", + "prop-types": "^15.8.1" + } + }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true + }, + "detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "dev": true + }, + "detect-package-manager": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", + "integrity": "sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==", + "dev": true, + "requires": { + "execa": "^5.1.1" + } + }, + "detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dev": true, + "requires": { + "address": "^1.0.1", + "debug": "4" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "dependencies": { + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "dev": true + }, + "dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, + "electron-to-chromium": { + "version": "1.4.740", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.740.tgz", + "integrity": "sha512-Yvg5i+iyv7Xm18BRdVPVm8lc7kgxM3r6iwqCH2zB7QZy1kZRNmd0Zqm0zcD9XoFREE5/5rwIuIAOT+/mzGcnZg==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + }, + "envinfo": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", + "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dev": true, + "requires": { + "stackframe": "^1.3.4" + } + }, + "errorhandler": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "escape-html": "~1.0.3" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "esbuild-plugin-alias": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", + "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==", + "dev": true + }, + "esbuild-register": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.5.0.tgz", + "integrity": "sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==", + "dev": true, + "requires": { + "debug": "^4.3.4" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "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 + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==", + "dev": true + }, + "express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dev": true, + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-xml-parser": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.4.tgz", + "integrity": "sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==", + "dev": true, + "requires": { + "strnum": "^1.0.5" + } + }, + "fastq": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz", + "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "fetch-retry": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-5.0.6.tgz", + "integrity": "sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==", + "dev": true + }, + "file-system-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", + "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", + "dev": true, + "requires": { + "fs-extra": "11.1.1", + "ramda": "0.29.0" + }, + "dependencies": { + "fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "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" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + } + } + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "dev": true + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "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==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "dev": true + }, + "flow-parser": { + "version": "0.206.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz", + "integrity": "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==", + "dev": true + }, + "focus-visible": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/focus-visible/-/focus-visible-5.2.0.tgz", + "integrity": "sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + } + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "dev": true + }, + "get-npm-tarball-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.1.0.tgz", + "integrity": "sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "giget": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.1.tgz", + "integrity": "sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==", + "dev": true, + "requires": { + "citty": "^0.1.5", + "consola": "^3.2.3", + "defu": "^6.1.3", + "node-fetch-native": "^1.6.1", + "nypm": "^0.3.3", + "ohash": "^1.1.3", + "pathe": "^1.1.1", + "tar": "^6.2.0" + } + }, + "github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-promise": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz", + "integrity": "sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==", + "dev": true, + "requires": { + "@types/glob": "^7.1.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==", + "dev": true + }, + "gunzip-maybe": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz", + "integrity": "sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==", + "dev": true, + "requires": { + "browserify-zlib": "^0.1.4", + "is-deflate": "^1.0.0", + "is-gzip": "^1.0.0", + "peek-stream": "^1.1.0", + "pumpify": "^1.3.3", + "through2": "^2.0.3" + } + }, + "handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "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 + } + } + }, + "happy-dom": { + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-10.8.0.tgz", + "integrity": "sha512-ux5UfhNA9ANGf4keV7FCd9GqeQr3Bz1u9qnoPtTL0NcO1MEOeUXIUwNTB9r84Z7Q8/bsgkwi6K114zjYvnCmag==", + "dev": true, + "requires": { + "css.escape": "^1.5.1", + "entities": "^4.5.0", + "iconv-lite": "^0.6.3", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.3" + } + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "hermes-estree": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.15.0.tgz", + "integrity": "sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==", + "dev": true + }, + "hermes-parser": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.15.0.tgz", + "integrity": "sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==", + "dev": true, + "requires": { + "hermes-estree": "0.15.0" + } + }, + "hermes-profile-transformer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", + "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", + "dev": true, + "requires": { + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + } + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "requires": { + "react-is": "^16.7.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-element-attributes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-element-attributes/-/html-element-attributes-1.3.1.tgz", + "integrity": "sha512-UrRKgp5sQmRnDy4TEwAUsu14XBUlzKB8U3hjIYDjcZ3Hbp86Jtftzxfgrv6E/ii/h78tsaZwAnAE8HwnHr0dPA==" + }, + "html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "https-proxy-agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "dev": true, + "requires": { + "agent-base": "5", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true + }, + "image-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", + "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", + "dev": true, + "requires": { + "queue": "6.0.2" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + } + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", + "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "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 + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "requires": { + "builtin-modules": "^3.3.0" + } + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-deflate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz", + "integrity": "sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==", + "dev": true + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-gzip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", + "integrity": "sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==", + "dev": true + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.14" + } + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true + }, + "jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "dependencies": { + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + } + } + }, + "jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "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" + } + } + } + }, + "jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + } + }, + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "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" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "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" + } + }, + "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 + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "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" + } + } + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "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 + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true + }, + "joi": { + "version": "17.12.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.1.tgz", + "integrity": "sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsc-android": { + "version": "250231.0.0", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz", + "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==", + "dev": true + }, + "jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", + "dev": true + }, + "jscodeshift": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", + "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", + "dev": true, + "requires": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.21.0", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "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" + } + }, + "ast-types": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", + "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", + "dev": true, + "requires": { + "tslib": "^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" + } + }, + "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 + }, + "recast": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", + "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", + "dev": true, + "requires": { + "ast-types": "0.15.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + } + }, + "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": "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" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "keyboard-key": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keyboard-key/-/keyboard-key-1.1.0.tgz", + "integrity": "sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "lazy-universal-dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz", + "integrity": "sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==", + "dev": true, + "requires": { + "app-root-dir": "^1.0.2", + "dotenv": "^16.0.0", + "dotenv-expand": "^10.0.0" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "marky": "^1.2.2" + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "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==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } + } + }, + "logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "dev": true, + "requires": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + }, + "dependencies": { + "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" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", + "dev": true + }, + "markdown-to-jsx": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.1.tgz", + "integrity": "sha512-GbrbkTnHp9u6+HqbPRFJbObi369AgJNXi/sGqq5HRsoZW063xR1XDCaConqq+whfEIAlzB1YPnOgsPc7B7bc/A==", + "dev": true + }, + "marky": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", + "dev": true + }, + "mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "dev": true, + "requires": { + "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.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "dev": true + }, + "memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", + "dev": true, + "requires": { + "map-or-similar": "^1.5.0" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "metro": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.5.tgz", + "integrity": "sha512-OE/CGbOgbi8BlTN1QqJgKOBaC27dS0JBQw473JcivrpgVnqIsluROA7AavEaTVUrB9wPUZvoNVDROn5uiM2jfw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "accepts": "^1.3.7", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "error-stack-parser": "^2.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.18.2", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.80.5", + "metro-cache": "0.80.5", + "metro-cache-key": "0.80.5", + "metro-config": "0.80.5", + "metro-core": "0.80.5", + "metro-file-map": "0.80.5", + "metro-resolver": "0.80.5", + "metro-runtime": "0.80.5", + "metro-source-map": "0.80.5", + "metro-symbolicate": "0.80.5", + "metro-transform-plugins": "0.80.5", + "metro-transform-worker": "0.80.5", + "mime-types": "^2.1.27", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "rimraf": "^3.0.2", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "throat": "^5.0.0", + "ws": "^7.5.1", + "yargs": "^17.6.2" + }, + "dependencies": { + "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" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "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" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "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 + }, + "hermes-estree": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.18.2.tgz", + "integrity": "sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ==", + "dev": true + }, + "hermes-parser": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.18.2.tgz", + "integrity": "sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew==", + "dev": true, + "requires": { + "hermes-estree": "0.18.2" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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" + } + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true + } + } + }, + "metro-babel-transformer": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.80.5.tgz", + "integrity": "sha512-sxH6hcWCorhTbk4kaShCWsadzu99WBL4Nvq4m/sDTbp32//iGuxtAnUK+ZV+6IEygr2u9Z0/4XoZ8Sbcl71MpA==", + "dev": true, + "requires": { + "@babel/core": "^7.20.0", + "hermes-parser": "0.18.2", + "nullthrows": "^1.1.1" + }, + "dependencies": { + "hermes-estree": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.18.2.tgz", + "integrity": "sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ==", + "dev": true + }, + "hermes-parser": { + "version": "0.18.2", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.18.2.tgz", + "integrity": "sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew==", + "dev": true, + "requires": { + "hermes-estree": "0.18.2" + } + } + } + }, + "metro-cache": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.80.5.tgz", + "integrity": "sha512-2u+dQ4PZwmC7eZo9uMBNhQQMig9f+w4QWBZwXCdVy/RYOHM0eObgGdMEOwODo73uxie82T9lWzxr3aZOZ+Nqtw==", + "dev": true, + "requires": { + "metro-core": "0.80.5", + "rimraf": "^3.0.2" + } + }, + "metro-cache-key": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.80.5.tgz", + "integrity": "sha512-fr3QLZUarsB3tRbVcmr34kCBsTHk0Sh9JXGvBY/w3b2lbre+Lq5gtgLyFElHPecGF7o4z1eK9r3ubxtScHWcbA==", + "dev": true + }, + "metro-config": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.80.5.tgz", + "integrity": "sha512-elqo/lwvF+VjZ1OPyvmW/9hSiGlmcqu+rQvDKw5F5WMX48ZC+ySTD1WcaD7e97pkgAlJHVYqZ98FCjRAYOAFRQ==", + "dev": true, + "requires": { + "connect": "^3.6.5", + "cosmiconfig": "^5.0.5", + "jest-validate": "^29.6.3", + "metro": "0.80.5", + "metro-cache": "0.80.5", + "metro-core": "0.80.5", + "metro-runtime": "0.80.5" + } + }, + "metro-core": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.80.5.tgz", + "integrity": "sha512-vkLuaBhnZxTVpaZO8ZJVEHzjaqSXpOdpAiztSZ+NDaYM6jEFgle3/XIbLW91jTSf2+T8Pj5yB1G7KuOX+BcVwg==", + "dev": true, + "requires": { + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.80.5" + } + }, + "metro-file-map": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.80.5.tgz", + "integrity": "sha512-bKCvJ05drjq6QhQxnDUt3I8x7bTcHo3IIKVobEr14BK++nmxFGn/BmFLRzVBlghM6an3gqwpNEYxS5qNc+VKcg==", + "dev": true, + "requires": { + "anymatch": "^3.0.3", + "debug": "^2.2.0", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-worker": "^29.6.3", + "micromatch": "^4.0.4", + "node-abort-controller": "^3.1.1", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "dependencies": { + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "metro-minify-terser": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.80.5.tgz", + "integrity": "sha512-S7oZLLcab6YXUT6jYFX/ZDMN7Fq6xBGGAG8liMFU1UljX6cTcEC2u+UIafYgCLrdVexp/+ClxrIetVPZ5LtL/g==", + "dev": true, + "requires": { + "terser": "^5.15.0" + } + }, + "metro-resolver": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.80.5.tgz", + "integrity": "sha512-haJ/Hveio3zv/Fr4eXVdKzjUeHHDogYok7OpRqPSXGhTXisNXB+sLN7CpcUrCddFRUDLnVaqQOYwhYsFndgUwA==", + "dev": true + }, + "metro-runtime": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.80.5.tgz", + "integrity": "sha512-L0syTWJUdWzfUmKgkScr6fSBVTh6QDr8eKEkRtn40OBd8LPagrJGySBboWSgbyn9eIb4ayW3Y347HxgXBSAjmg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0" + } + }, + "metro-source-map": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.80.5.tgz", + "integrity": "sha512-DwSF4l03mKPNqCtyQ6K23I43qzU1BViAXnuH81eYWdHglP+sDlPpY+/7rUahXEo6qXEHXfAJgVoo1sirbXbmsQ==", + "dev": true, + "requires": { + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.80.5", + "nullthrows": "^1.1.1", + "ob1": "0.80.5", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + } + }, + "metro-symbolicate": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.80.5.tgz", + "integrity": "sha512-IsM4mTYvmo9JvIqwEkCZ5+YeDVPST78Q17ZgljfLdHLSpIivOHp9oVoiwQ/YGbLx0xRHRIS/tKiXueWBnj3UWA==", + "dev": true, + "requires": { + "invariant": "^2.2.4", + "metro-source-map": "0.80.5", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + } + }, + "metro-transform-plugins": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.80.5.tgz", + "integrity": "sha512-7IdlTqK/k5+qE3RvIU5QdCJUPk4tHWEqgVuYZu8exeW+s6qOJ66hGIJjXY/P7ccucqF+D4nsbAAW5unkoUdS6g==", + "dev": true, + "requires": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "nullthrows": "^1.1.1" + } + }, + "metro-transform-worker": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.80.5.tgz", + "integrity": "sha512-Q1oM7hfP+RBgAtzRFBDjPhArELUJF8iRCZ8OidqCpYzQJVGuJZ7InSnIf3hn1JyqiUQwv2f1LXBO78i2rAjzyA==", + "dev": true, + "requires": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "metro": "0.80.5", + "metro-babel-transformer": "0.80.5", + "metro-cache": "0.80.5", + "metro-cache-key": "0.80.5", + "metro-minify-terser": "0.80.5", + "metro-source-map": "0.80.5", + "metro-transform-plugins": "0.80.5", + "nullthrows": "^1.1.1" + } + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "nocache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", + "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", + "dev": true + }, + "node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true + }, + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dev": true, + "requires": { + "minimatch": "^3.0.2" + } + }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-fetch-native": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.2.tgz", + "integrity": "sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true + }, + "nypm": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz", + "integrity": "sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==", + "dev": true, + "requires": { + "citty": "^0.1.6", + "consola": "^3.2.3", + "execa": "^8.0.1", + "pathe": "^1.1.2", + "ufo": "^1.4.0" + }, + "dependencies": { + "execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + } + }, + "get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true + }, + "human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, + "ob1": { + "version": "0.80.5", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.80.5.tgz", + "integrity": "sha512-zYDMnnNrFi/1Tqh0vo3PE4p97Tpl9/4MP2k2ECvkbLOZzQuAYZJLTUYVLZb7hJhbhjT+JJxAwBGS8iu5hCSd1w==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.omit": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz", + "integrity": "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==", + "requires": { + "is-extendable": "^1.0.0" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + } + } + }, + "ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + } + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "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" + } + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "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==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + } + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "dev": true + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true + } + } + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true + }, + "peek-stream": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", + "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "duplexify": "^3.5.0", + "through2": "^2.0.3" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true + }, + "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" + } + }, + "polished": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", + "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.17.8" + } + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "dev": true + }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true + }, + "postcss": { + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "dev": true, + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "dev": true + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true + }, + "postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true + }, + "postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + } + }, + "postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true + }, + "postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dev": true, + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + } + }, + "postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "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" + } + }, + "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 + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "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" + } + } + } + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "requires": { + "asap": "~2.0.6" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, + "puppeteer-core": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-2.1.1.tgz", + "integrity": "sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==", + "dev": true, + "requires": { + "@types/mime-types": "^2.1.0", + "debug": "^4.1.0", + "extract-zip": "^1.6.6", + "https-proxy-agent": "^4.0.0", + "mime": "^2.0.3", + "mime-types": "^2.1.25", + "progress": "^2.0.1", + "proxy-from-env": "^1.0.0", + "rimraf": "^2.6.1", + "ws": "^6.1.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + } + }, + "queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dev": true, + "requires": { + "inherits": "~2.0.3" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "ramda": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz", + "integrity": "sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==", + "dev": true + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "react-colorful": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/react-colorful/-/react-colorful-5.6.1.tgz", + "integrity": "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==", + "dev": true + }, + "react-devtools-core": { + "version": "4.28.5", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.5.tgz", + "integrity": "sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==", + "dev": true, + "requires": { + "shell-quote": "^1.6.1", + "ws": "^7" + }, + "dependencies": { + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true + } + } + }, + "react-docgen": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.3.tgz", + "integrity": "sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==", + "dev": true, + "requires": { + "@babel/core": "^7.18.9", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "@types/babel__core": "^7.18.0", + "@types/babel__traverse": "^7.18.0", + "@types/doctrine": "^0.0.9", + "@types/resolve": "^1.20.2", + "doctrine": "^3.0.0", + "resolve": "^1.22.1", + "strip-indent": "^4.0.0" + }, + "dependencies": { + "@types/doctrine": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", + "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", + "dev": true + } + } + }, + "react-docgen-typescript": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz", + "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", + "dev": true + }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + } + }, + "react-draggable": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.3.tgz", + "integrity": "sha512-jV4TE59MBuWm7gb6Ns3Q1mxX8Azffb7oTtDtBgFkxRvhDp38YAARmRplrj0+XGkhOJB5XziArX+4HUUABtyZ0w==", + "requires": { + "classnames": "^2.2.5", + "prop-types": "^15.6.0" + } + }, + "react-element-to-jsx-string": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz", + "integrity": "sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==", + "dev": true, + "requires": { + "@base2/pretty-print-object": "1.0.1", + "is-plain-object": "5.0.0", + "react-is": "18.1.0" + }, + "dependencies": { + "react-is": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", + "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", + "dev": true + } + } + }, + "react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" + }, + "react-html-attributes": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/react-html-attributes/-/react-html-attributes-1.4.6.tgz", + "integrity": "sha512-uS3MmThNKFH2EZUQQw4k5pIcU7XIr208UE5dktrj/GOH1CMagqxDl4DCLpt3o2l9x+IB5nVYBeN3Cr4IutBXAg==", + "requires": { + "html-element-attributes": "^1.0.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-native": { + "version": "0.73.3", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.73.3.tgz", + "integrity": "sha512-RSQDtT2DNUcmB4IgmW9NhRb5wqvXFl6DI2NEJmt0ps2OrVHpoA8Tkq+lkFOA/fvPscJKtFKEHFBDSR5UHR3PUw==", + "dev": true, + "requires": { + "@jest/create-cache-key-function": "^29.6.3", + "@react-native-community/cli": "12.3.2", + "@react-native-community/cli-platform-android": "12.3.2", + "@react-native-community/cli-platform-ios": "12.3.2", + "@react-native/assets-registry": "0.73.1", + "@react-native/codegen": "0.73.2", + "@react-native/community-cli-plugin": "0.73.14", + "@react-native/gradle-plugin": "0.73.4", + "@react-native/js-polyfills": "0.73.1", + "@react-native/normalize-colors": "0.73.2", + "@react-native/virtualized-lists": "0.73.4", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "ansi-regex": "^5.0.0", + "base64-js": "^1.5.1", + "chalk": "^4.0.0", + "deprecated-react-native-prop-types": "^5.0.0", + "event-target-shim": "^5.0.1", + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "jest-environment-node": "^29.6.3", + "jsc-android": "^250231.0.0", + "memoize-one": "^5.0.0", + "metro-runtime": "^0.80.3", + "metro-source-map": "^0.80.3", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.3.0", + "react-devtools-core": "^4.27.7", + "react-refresh": "^0.14.0", + "react-shallow-renderer": "^16.15.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "0.24.0-canary-efb381bbf-20230505", + "stacktrace-parser": "^0.1.10", + "whatwg-fetch": "^3.0.0", + "ws": "^6.2.2", + "yargs": "^17.6.2" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "scheduler": { + "version": "0.24.0-canary-efb381bbf-20230505", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz", + "integrity": "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "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" + } + } + } + }, + "react-popper": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", + "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "@hypnosphi/create-react-context": "^0.3.1", + "deep-equal": "^1.1.1", + "popper.js": "^1.14.4", + "prop-types": "^15.6.1", + "typed-styles": "^0.0.7", + "warning": "^4.0.2" + } + }, + "react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true + }, + "react-remove-scroll": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "dev": true, + "requires": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + } + }, + "react-remove-scroll-bar": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.5.tgz", + "integrity": "sha512-3cqjOqg6s0XbOjWvmasmqHch+RLxIEk2r/70rzGXuz3iIGQsQheEQyqYCBb5EECoD01Vo2SIbDqW4paLeLTASw==", + "dev": true, + "requires": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + } + }, + "react-shallow-renderer": { + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + } + }, + "react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dev": true, + "requires": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + } + }, + "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": { + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "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" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "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 + } + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", + "dev": true + }, + "recast": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.5.tgz", + "integrity": "sha512-M67zIddJiwXdfPQRYKJ0qZO1SLdH1I0hYeb0wzxA+pNOvAZiQHulWzuk+fYsEWRQ8VfZrgjyucqsCOtCyM01/A==", + "dev": true, + "requires": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.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 + } + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + } + }, + "regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "requires": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "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" + } + }, + "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" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "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 + }, + "resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "semantic-ui-react": { + "version": "0.88.2", + "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-0.88.2.tgz", + "integrity": "sha512-+02kN2z8PuA/cMdvDUsHhbJmBzxxgOXVHMFr9XK7zGb0wkW9A6OPQMFokWz7ozlVtKjN6r7zsb+Qvjk/qq1OWw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "@semantic-ui-react/event-stack": "^3.1.0", + "@stardust-ui/react-component-event-listener": "~0.38.0", + "@stardust-ui/react-component-ref": "~0.38.0", + "classnames": "^2.2.6", + "keyboard-key": "^1.0.4", + "lodash": "^4.17.15", + "prop-types": "^15.7.2", + "react-is": "^16.8.6", + "react-popper": "^1.3.4", + "shallowequal": "^1.1.0" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "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" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "dev": true + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "dev": true, + "requires": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + } + }, + "set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true + }, + "side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "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 + } + } + }, + "space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "dev": true + }, + "spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, + "split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "dev": true + }, + "stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "requires": { + "type-fest": "^0.7.1" + }, + "dependencies": { + "type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "store2": { + "version": "2.14.3", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.3.tgz", + "integrity": "sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==", + "dev": true + }, + "storeon": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/storeon/-/storeon-3.1.5.tgz", + "integrity": "sha512-VuW4GQr3LGQr+gqscqsOz2c9asK9N+B+8+sWs7Pj4OqU7bngYIqsPF3IYpkbmccKNWjs7wwxUAlR+gtL9cEMEg==" + }, + "storybook": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.17.tgz", + "integrity": "sha512-8+EIo91bwmeFWPg1eysrxXlhIYv3OsXrznTr4+4Eq0NikqAoq6oBhtlN5K2RGS2lBVF537eN+9jTCNbR+WrzDA==", + "dev": true, + "requires": { + "@storybook/cli": "7.6.17" + } + }, + "stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "dev": true + }, + "strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + } + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "dev": true, + "requires": { + "min-indent": "^1.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "dev": true + }, + "styled-components": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.3.1.tgz", + "integrity": "sha512-JThv2JRzyH0NOIURrk9iskdxMSAAtCfj/b2Sf1WJaCUsloQkblepy1jaCLX/bYE+mhYo3unmwVSI9I5d9ncSiQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^0.8.8", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1.12.0", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + } + }, + "stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + } + }, + "stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "dev": true + }, + "sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "synchronous-promise": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz", + "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==", + "dev": true + }, + "tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, + "tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + }, + "dependencies": { + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + } + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "telejson": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", + "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", + "dev": true, + "requires": { + "memoizerific": "^1.11.3" + } + }, + "temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "dev": true, + "requires": { + "rimraf": "~2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true + }, + "tempy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", + "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "dev": true, + "requires": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true + } + } + }, + "terser": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", + "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "dev": true + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + }, + "tocbot": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.25.0.tgz", + "integrity": "sha512-kE5wyCQJ40hqUaRVkyQ4z5+4juzYsv/eK+aqD97N62YH0TxFhzJvo22RUQQZdO3YnXAk42ZOfOpjVdy+Z0YokA==", + "dev": true + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "dev": true + }, + "ts-invariant": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", + "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", + "requires": { + "tslib": "^2.1.0" + } + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type-coverage-core": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/type-coverage-core/-/type-coverage-core-2.27.1.tgz", + "integrity": "sha512-W+PMYbhUsq+UWkrb7UkmyO7zF3zt4qZuQukyDM6eaiCIkMJclcVmR3O02clDk4FKpKPbzHictOmoIu3fYp+53g==", + "dev": true, + "requires": { + "fast-glob": "3", + "minimatch": "6 || 7 || 8 || 9", + "normalize-path": "3", + "tslib": "1 || 2", + "tsutils": "3" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-styles": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "typescript": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", + "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", + "dev": true + }, + "typescript-coverage-report": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/typescript-coverage-report/-/typescript-coverage-report-0.7.0.tgz", + "integrity": "sha512-ODeA510qAN2C76NjDCoZj2wcGGkkuaf2FQJElyJS9ABmGbpkgrhtoWOfiKkoeaPHkvysqOfhFEVUWNrOUlww7w==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "cli-table3": "^0.6.1", + "commander": "^5.0.0", + "ncp": "^2.0.0", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "rimraf": "^3.0.2", + "semantic-ui-react": "^0.88.2", + "type-coverage-core": "^2.23.0" + }, + "dependencies": { + "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" + } + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "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 + }, + "react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "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" + } + } + } + }, + "ufo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz", + "integrity": "sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==", + "dev": true + }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true + }, + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unplugin": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.8.2.tgz", + "integrity": "sha512-fgldo8hwP8dV94ne3rwQqlZkZWdcqH4K48bXax+N0MrBapfvoTbIQt9L2Vj/DzZAbWI/+kd2b9ZDsB7QZgz/hw==", + "dev": true, + "requires": { + "acorn": "^8.11.3", + "chokidar": "^3.6.0", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.6.1" + }, + "dependencies": { + "acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true + } + } + }, + "untildify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", + "integrity": "sha512-sJjbDp2GodvkB0FZZcn7k6afVisqX5BZD7Yq3xp4nN2O15BBK0cLm3Vwn2vQaF7UDS0UUsrQMkkplmDI5fskig==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, + "update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "use-callback-ref": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.1.tgz", + "integrity": "sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, + "use-resize-observer": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/use-resize-observer/-/use-resize-observer-9.1.0.tgz", + "integrity": "sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==", + "dev": true, + "requires": { + "@juggle/resize-observer": "^3.3.1" + } + }, + "use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dev": true, + "requires": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + } + }, + "util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validator": { + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz", + "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vite": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", + "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", + "dev": true, + "requires": { + "esbuild": "^0.18.10", + "fsevents": "~2.3.2", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + } + }, + "vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", + "dev": true + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "webpack-virtual-modules": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", + "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==", + "dev": true + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", + "dev": true + }, + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "which-typed-array": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "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" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "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" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + }, + "z-schema": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", + "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", + "dev": true, + "requires": { + "commander": "^9.4.1", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "dependencies": { + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "optional": true + } + } + } + } +} diff --git a/packages/plasma-giga/package.json b/packages/plasma-giga/package.json new file mode 100644 index 0000000000..719548fe8d --- /dev/null +++ b/packages/plasma-giga/package.json @@ -0,0 +1,138 @@ +{ + "name": "@salutejs/plasma-giga", + "version": "0.206.0-dev.0", + "description": "Salute Design System / React UI kit for PLASMA GIGA web applications", + "author": "Salute Frontend Team <salute.developers@gmail.com>", + "license": "MIT", + "keywords": [ + "design-system", + "react-components", + "ui-kit", + "react" + ], + "files": [ + "emotion", + "styled-components", + "components", + "mixins", + "es", + "api", + "tokens", + "index.d.ts", + "api-extractor.json", + "CHANGELOG.md" + ], + "main": "index.js", + "module": "es/index.js", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "ssh://git@github.com:salute-developers/plasma.git", + "directory": "packages/plasma-giga" + }, + "dependencies": { + "@salutejs/plasma-new-hope": "0.227.0-dev.0", + "@salutejs/plasma-themes": "0.27.0-dev.0" + }, + "peerDependencies": { + "@emotion/react": ">=11", + "@emotion/styled": ">=11", + "react": ">=16.13.1", + "react-dom": ">=16.13.1", + "styled-components": "^5.3.1" + }, + "devDependencies": { + "@babel/cli": "7.24.1", + "@babel/core": "7.24.4", + "@babel/plugin-transform-class-properties": "7.24.1", + "@babel/plugin-transform-react-constant-elements": "7.24.1", + "@babel/preset-env": "7.24.4", + "@babel/preset-react": "7.24.1", + "@babel/preset-typescript": "7.24.1", + "@emotion/babel-plugin": "11.11.0", + "@emotion/react": ">=11", + "@emotion/styled": ">=11", + "@ironkinoko/rollup-plugin-styles": "^4.0.3", + "@linaria/core": "5.0.2", + "@linaria/react": "5.0.3", + "@linaria/rollup": "5.0.4", + "@linaria/vite": "5.0.4", + "@microsoft/api-extractor": "7.38.3", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^25.0.4", + "@rollup/plugin-node-resolve": "^15.1.0", + "@salutejs/plasma-colors": "0.13.1-dev.0", + "@salutejs/plasma-core": "1.189.1-dev.0", + "@salutejs/plasma-cy-utils": "0.120.1-dev.0", + "@salutejs/plasma-icons": "1.209.1-dev.0", + "@salutejs/plasma-sb-utils": "0.188.1-dev.0", + "@storybook/addon-docs": "7.6.17", + "@storybook/addon-essentials": "7.6.17", + "@storybook/addons": "7.6.17", + "@storybook/react": "7.6.17", + "@storybook/react-vite": "7.6.17", + "@storybook/theming": "7.6.17", + "@types/node": "16.7.13", + "@types/react": "18.0.28", + "@types/react-dom": "18.0.11", + "@types/styled-components": "5.1.0", + "@vitejs/plugin-react": "3.1.0", + "babel-loader": "8.2.2", + "babel-plugin-annotate-pure-calls": "0.4.0", + "babel-plugin-styled-components": "1.13.2", + "default-browser-id": "2.0.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "storybook": "7.6.17", + "styled-components": "5.3.1", + "typescript": "4.2.4", + "typescript-coverage-report": "0.7.0", + "vite": "4.5.3" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "preapi-report": "npm run generate:typings", + "api-report": "npx api-extractor run --local", + "prepare": "npm run build", + "prebuild": "rm -rf ./components ./es ./helpers ./hocs ./hooks ./mixins ./tokens ./types ./utils index.d.ts index.d.ts.map index.js index.js.map && npm run prebuild:emotion && npm run prebuild:css", + "prebuild:emotion": "rm -rf src-emotion && cp -R src src-emotion && npm run build:replace-st-emotion", + "prebuild:css": "rm -rf src-css && ./scripts/copy-linaria-components.sh", + "build": "npm run build:styled-components && npm run build:emotion && npm run build:css", + "build:replace-st-emotion": "./scripts/replace-st_emotion.sh", + "postbuild": "npm run generate:typings", + "build:emotion": "npm run build:emotion:esm && npm run build:emotion:cjs", + "build:emotion:cjs": "rm -rf emotion/cjs && BABEL_ENV=cjs EMOTION=true SC_NAMESPACE=plasma-giga babel ./src-emotion --out-dir ./emotion/cjs --extensions .ts,.tsx --copy-files", + "build:emotion:esm": "rm -rf emotion/es && BABEL_ENV=esm EMOTION=true SC_NAMESPACE=plasma-giga babel ./src-emotion --out-dir ./emotion/es --extensions .ts,.tsx --copy-files", + "build:styled-components": "npm run build:styled-components:esm && npm run build:styled-components:cjs", + "build:styled-components:cjs": "BABEL_ENV=cjs SC_NAMESPACE=plasma-giga babel ./src --out-dir ./styled-components/cjs --extensions .ts,.tsx", + "build:styled-components:esm": "BABEL_ENV=esm SC_NAMESPACE=plasma-giga babel ./src --out-dir ./styled-components/es --extensions .ts,.tsx", + "build:css": "BABEL_ENV=esm SC_NAMESPACE=plasma-giga rollup -c", + "postbuild:css": "rm -rf src-css", + "postbuild:styled-components": "npm run generate:typings", + "postbuild:emotion": "rm -rf src-emotion && npm run generate:typings", + "generate:typings": "tsc --outDir . --emitDeclarationOnly", + "storybook": "npm run storybook:sc", + "prestorybook:emotion": "npm run prebuild:emotion", + "storybook:emotion": "USE_EMOTION_COMPONENTS=true storybook dev -p ${PORT:-7002} -c .storybook", + "storybook:sc": "USE_STYLED_COMPONENTS=true storybook dev -p ${PORT:-7002} -c .storybook", + "storybook:build": "storybook build -c .storybook -o build-sb", + "typescript-coverage": "npx typescript-coverage-report > /dev/null", + "lint": "../../node_modules/.bin/eslint ./src --ext .js,.ts,.tsx --quiet" + }, + "typeCoverage": { + "ignoreFiles": [ + "src/**/*component-test.tsx", + "src/**/*stories.tsx", + "src/**/*perftest.tsx" + ], + "atLeast": 99.96 + }, + "contributors": [ + "Vasiliy Loginevskiy" + ], + "sideEffects": [ + "*.css" + ] +} diff --git a/packages/plasma-giga/rollup.config.mjs b/packages/plasma-giga/rollup.config.mjs new file mode 100644 index 0000000000..dda21fb606 --- /dev/null +++ b/packages/plasma-giga/rollup.config.mjs @@ -0,0 +1,146 @@ +import path from 'path'; +import { createRequire } from 'module' +import { createFilter } from '@rollup/pluginutils' + +import { nodeResolve } from '@rollup/plugin-node-resolve'; + +import linaria from '@linaria/rollup'; +import { babel } from '@rollup/plugin-babel'; + +import styles from "@ironkinoko/rollup-plugin-styles"; + + +const inputDir = 'src-css'; +const require = createRequire(import.meta.url) + +export default { + input: path.join(inputDir, 'index.ts'), + treeshake: { + propertyReadSideEffects: false, + }, + output: [{ + preserveModules: true, + dir: './es', + format: 'es', + freeze: false, + esModule: true, + sourcemap: true, + exports: 'named', + assetFileNames: "[name][extname]", + }, { + preserveModules: true, + dir: './', + format: 'cjs', + freeze: false, + esModule: true, + sourcemap: true, + exports: 'named', + assetFileNames: "[name][extname]", + }], + external: (id) => { + if (id.startsWith('regenerator-runtime') || id === 'tslib') { + return false; + } + + return !id.startsWith('.') && !path.isAbsolute(id); + }, + plugins: [ + linaria({ + exclude: ['plasma-core/src/collectPackageInfo.ts'], + tagResolver: (source, tag) => { + if (source === '@salutejs/plasma-new-hope') { + if (tag === 'css') { + // TODO: move to node@20 + // return import.meta.resolve('@linaria/core/processors/css'); + return require.resolve('@linaria/core/processors/css'); + } + + if (tag === 'styled') { + return require.resolve('@linaria/react/processors/styled'); + } + } + + return null; + }, + }), + nodeResolve({ + extensions: ['.tsx', '.ts'], + }), + importCssPlugin(), + // TODO: #717 remove this plugin: it generates index.css but we don't need it + styles({ + mode: "extract", + modules: true, + }), + babel({ babelHelpers: 'bundled', extensions: ['.ts', '.tsx'], }), + ], +}; + +function importCssPlugin() { + const filter = createFilter(['**/*.css']); + const styles = {}; + + return { + name: 'importCssPlugin', + transform(code, id) { + if (!filter(id)) { + return; + } + + if (styles[id] !== code && (styles[id] || code)) { + styles[path.relative(inputDir, id)] = code + } + + return { code }; + }, + generateBundle(options, bundle) { + const files = Object.keys(bundle); + files.forEach((file) => { + const root = bundle[file].facadeModuleId + const modules = this.getModuleInfo(root); + + // ADD IMPORT FOR CSS MODULES + if (file.endsWith('.css.js')) { + const { code } = bundle[file]; + // TODO: #718 cjs modules => require('./file.css'); + const importString = `import './${file.replace('.css.js', '.css.css')}';\n`; + this.emitFile({ + type: 'asset', + fileName: file, + source: importString + code, + }); + } else if (file.endsWith('.js')) { + // ADD IMPORT FOR LINARIA + // linaria + const cssFiles = modules.importedIds + .filter(a => a.includes(inputDir)) + .filter(a => !a.endsWith('.module.css') && a.endsWith('.css')) + .map(a => path.relative(inputDir, a)) + + if (!cssFiles.length) { + return; + } + const imports = []; + cssFiles.forEach(cssFile => { + imports.push(`import './${path.relative(path.dirname(file), cssFile)}';`); + this.emitFile({ + type: 'asset', + fileName: cssFile, + source: styles[cssFile], + }); + }) + if (imports.length) { + const { code } = bundle[file]; + this.emitFile({ + type: 'asset', + fileName: file, + source: imports.join('\n') + '\n' + code, + }); + + console.log(`Added css: ${cssFiles} for ${file}`); + } + } + }); + }, + }; + } diff --git a/packages/plasma-giga/scripts/copy-linaria-components.sh b/packages/plasma-giga/scripts/copy-linaria-components.sh new file mode 100755 index 0000000000..6bd8bf87a6 --- /dev/null +++ b/packages/plasma-giga/scripts/copy-linaria-components.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +# Example: Calendar +components=$(grep -R plasma-new-hope src/components | cut -d / -f 3 | sort -u) + +mkdir -p src-css/components/ +touch src-css/index.ts +touch src-css/index.d.ts +for component in $components; do + cp -R src/components/$component src-css/components/; + grep -E "\<$component\>" src/index.ts >> src-css/index.ts + echo "export * from '../components/$component';" >> src-css/index.d.ts; + +done; + +# remove unused tests +rm -rf src-css/components/**/*.component-test.tsx +rm -rf src-css/components/**/*.perftest.tsx +rm -rf src-css/components/**/*.stories.tsx + +# plasma-new-hope/styled-components +files=$(find src-css/components -name '*.ts' -or -name '*.tsx'); + +for file in $files; do + echo $file; +done; + +# plasma-new-hope/styled-components => plasma-new-hope +perl -p -i -e "s/\/styled-components//g" $files + +#TODO: #1024 удалить обертку styled в спиннере +perl -p -i -e "s/import styled from 'styled-components';//g" src-css/components/Spinner/Spinner.tsx +perl -p -i -e "s/styled\(SpinnerComponent\)\`\`/SpinnerComponent/g" src-css/components/Spinner/Spinner.tsx diff --git a/packages/plasma-giga/scripts/replace-st_emotion.sh b/packages/plasma-giga/scripts/replace-st_emotion.sh new file mode 100755 index 0000000000..27400d7fd6 --- /dev/null +++ b/packages/plasma-giga/scripts/replace-st_emotion.sh @@ -0,0 +1,9 @@ +#!/bin/bash + + +# TODO: rewrite to node.js + +files=$(find src-emotion -name '*.*'); + +perl -p -i -e "s/from '\@salutejs\/plasma-new-hope\/styled-components'/from '\@salutejs\/plasma-new-hope\/emotion'/g" $files +perl -p -i -e "s/from '\styled-components'/from '\@emotion\/styled'/g" $files \ No newline at end of file diff --git a/packages/plasma-giga/scripts/replace-st_linaria.sh b/packages/plasma-giga/scripts/replace-st_linaria.sh new file mode 100755 index 0000000000..b4eb22ae12 --- /dev/null +++ b/packages/plasma-giga/scripts/replace-st_linaria.sh @@ -0,0 +1,10 @@ +#!/bin/bash + + +# TODO: rewrite to node.js + +files=$(find src-linaria -name '*.*'); + +perl -p -i -e "s/import { css,/import { css } from '\@linaria\/core'; import {/g" $files +perl -p -i -e "s/from '\@salutejs\/plasma-new-hope\/styled-components'/from '\@salutejs\/plasma-new-hope'/g" $files +perl -p -i -e "s/import styled from 'styled-components'/import { styled } from '\@linaria\/react'/g" $files \ No newline at end of file diff --git a/packages/plasma-giga/src/components/Accordion/Accordion.config.ts b/packages/plasma-giga/src/components/Accordion/Accordion.config.ts new file mode 100644 index 0000000000..51fd77265a --- /dev/null +++ b/packages/plasma-giga/src/components/Accordion/Accordion.config.ts @@ -0,0 +1,124 @@ +import { css, accordionTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + view: { + default: css` + ${accordionTokens.accordionGap}: 0.125rem; + ${accordionTokens.accordionWidth}: 20rem; + ${accordionTokens.accordionItemPadding}: var(${accordionTokens.accordionItemPaddingVertical}) var(${accordionTokens.accordionItemPaddingHorizontal}); + ${accordionTokens.accordionItemBackground}: var(--surface-solid-card); + ${accordionTokens.accordionItemTitleColor}: var(--text-primary); + ${accordionTokens.accordionItemTextColor}: var(--text-primary); + ${accordionTokens.accordionItemIconColor}: var(--text-primary); + ${accordionTokens.accordionItemFocus}: var(--surface-accent); + ${accordionTokens.accordionBackground}: var(--surface-clear); + ${accordionTokens.accordionItemBorderBottom}: 0; + ${accordionTokens.accordionItemPaddingHorizontalLeft}: var(${accordionTokens.accordionItemPaddingHorizontal}); + `, + clear: css` + ${accordionTokens.accordionGap}: 0; + ${accordionTokens.accordionWidth}: 20rem; + ${accordionTokens.accordionItemPadding}: var(${accordionTokens.accordionItemPaddingVertical}) 0rem; + ${accordionTokens.accordionItemBackground}: var(--surface-clear); + ${accordionTokens.accordionItemTitleColor}: var(--text-primary); + ${accordionTokens.accordionItemTextColor}: var(--text-primary); + ${accordionTokens.accordionItemIconColor}: var(--text-primary); + ${accordionTokens.accordionItemFocus}: var(--surface-accent); + ${accordionTokens.accordionItemBorderRadius}: 0rem !important; + ${accordionTokens.accordionBackground}: var(--surface-clear); + ${accordionTokens.accordionItemBorderBottom}: 0.125rem solid var(--surface-solid-tertiary); + ${accordionTokens.accordionItemPaddingHorizontalLeft}: 0; + `, + }, + size: { + l: css` + ${accordionTokens.accordionItemPaddingVertical}: 1.0625rem; + ${accordionTokens.accordionItemPaddingHorizontal}: 1.25rem; + ${accordionTokens.accordionItemGap}: 0.5rem; + ${accordionTokens.accordionItemBorderRadius}: 0.875rem; + + ${accordionTokens.accordionItemTitleFontFamily}: var(--plasma-typo-body-l-font-family); + ${accordionTokens.accordionItemTitleFontSize}: var(--plasma-typo-body-l-font-size); + ${accordionTokens.accordionItemTitleFontStyle}: var(--plasma-typo-body-l-font-style); + ${accordionTokens.accordionItemTitleFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${accordionTokens.accordionItemTitleLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${accordionTokens.accordionItemTitleLineHeight}: var(--plasma-typo-body-l-line-height); + + ${accordionTokens.accordionItemTextFontFamily}: var(--plasma-typo-body-l-font-family); + ${accordionTokens.accordionItemTextFontSize}: var(--plasma-typo-body-l-font-size); + ${accordionTokens.accordionItemTextFontStyle}: var(--plasma-typo-body-l-font-style); + ${accordionTokens.accordionItemTextFontWeight}: var(--plasma-typo-body-l-font-weight); + ${accordionTokens.accordionItemTextLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${accordionTokens.accordionItemTextLineHeight}: var(--plasma-typo-body-l-line-height); + `, + m: css` + ${accordionTokens.accordionItemPaddingVertical}: 0.875rem; + ${accordionTokens.accordionItemPaddingHorizontal}: 1.125rem; + + ${accordionTokens.accordionItemGap}: 0.375rem; + ${accordionTokens.accordionItemBorderRadius}: 0.75rem; + + ${accordionTokens.accordionItemTitleFontFamily}: var(--plasma-typo-body-m-font-family); + ${accordionTokens.accordionItemTitleFontSize}: var(--plasma-typo-body-m-font-size); + ${accordionTokens.accordionItemTitleFontStyle}: var(--plasma-typo-body-m-font-style); + ${accordionTokens.accordionItemTitleFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${accordionTokens.accordionItemTitleLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${accordionTokens.accordionItemTitleLineHeight}: var(--plasma-typo-body-m-line-height); + + ${accordionTokens.accordionItemTextFontFamily}: var(--plasma-typo-body-m-font-family); + ${accordionTokens.accordionItemTextFontSize}: var(--plasma-typo-body-m-font-size); + ${accordionTokens.accordionItemTextFontStyle}: var(--plasma-typo-body-m-font-style); + ${accordionTokens.accordionItemTextFontWeight}: var(--plasma-typo-body-m-font-weight); + ${accordionTokens.accordionItemTextLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${accordionTokens.accordionItemTextLineHeight}: var(--plasma-typo-body-m-line-height); + `, + s: css` + ${accordionTokens.accordionItemPaddingVertical}: 0.6875rem; + ${accordionTokens.accordionItemPaddingHorizontal}: 0.875rem; + + ${accordionTokens.accordionItemGap}: 0.375rem; + ${accordionTokens.accordionItemBorderRadius}: 0.625rem; + + ${accordionTokens.accordionItemTitleFontFamily}: var(--plasma-typo-body-s-font-family); + ${accordionTokens.accordionItemTitleFontSize}: var(--plasma-typo-body-s-font-size); + ${accordionTokens.accordionItemTitleFontStyle}: var(--plasma-typo-body-s-font-style); + ${accordionTokens.accordionItemTitleFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${accordionTokens.accordionItemTitleLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${accordionTokens.accordionItemTitleLineHeight}: var(--plasma-typo-body-s-line-height); + + ${accordionTokens.accordionItemTextFontFamily}: var(--plasma-typo-body-s-font-family); + ${accordionTokens.accordionItemTextFontSize}: var(--plasma-typo-body-s-font-size); + ${accordionTokens.accordionItemTextFontStyle}: var(--plasma-typo-body-s-font-style); + ${accordionTokens.accordionItemTextFontWeight}: var(--plasma-typo-body-s-font-weight); + ${accordionTokens.accordionItemTextLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${accordionTokens.accordionItemTextLineHeight}: var(--plasma-typo-body-s-line-height); + `, + xs: css` + ${accordionTokens.accordionItemPaddingVertical}: 0.5rem; + ${accordionTokens.accordionItemPaddingHorizontal}: 0.75rem; + + ${accordionTokens.accordionItemGap}: 0.25rem; + ${accordionTokens.accordionItemBorderRadius}: 0.5rem; + + ${accordionTokens.accordionItemTitleFontFamily}: var(--plasma-typo-body-xs-font-family); + ${accordionTokens.accordionItemTitleFontSize}: var(--plasma-typo-body-xs-font-size); + ${accordionTokens.accordionItemTitleFontStyle}: var(--plasma-typo-body-xs-font-style); + ${accordionTokens.accordionItemTitleFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${accordionTokens.accordionItemTitleLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${accordionTokens.accordionItemTitleLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${accordionTokens.accordionItemTextFontFamily}: var(--plasma-typo-body-xs-font-family); + ${accordionTokens.accordionItemTextFontSize}: var(--plasma-typo-body-xs-font-size); + ${accordionTokens.accordionItemTextFontStyle}: var(--plasma-typo-body-xs-font-style); + ${accordionTokens.accordionItemTextFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${accordionTokens.accordionItemTextLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${accordionTokens.accordionItemTextLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Accordion/Accordion.stories.tsx b/packages/plasma-giga/src/components/Accordion/Accordion.stories.tsx new file mode 100644 index 0000000000..030b1736d6 --- /dev/null +++ b/packages/plasma-giga/src/components/Accordion/Accordion.stories.tsx @@ -0,0 +1,165 @@ +import React, { useState, ComponentProps, ReactNode } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; +import { IconPlus } from '@salutejs/plasma-icons'; + +import { IconButton } from '../IconButton/IconButton'; + +import { Accordion, AccordionItem } from './Accordion'; + +type AccordionItemCustomProps = { + type: 'arrow' | 'sign' | 'clear'; + title: string; + body: ReactNode; + pin?: + | 'square-square' + | 'square-clear' + | 'clear-square' + | 'clear-clear' + | 'clear-circle' + | 'circle-clear' + | 'circle-circle'; +}; + +type AccordionProps = ComponentProps<typeof Accordion> & AccordionItemCustomProps; + +const meta: Meta<AccordionProps> = { + title: 'Data Display/Accordion', + decorators: [InSpacingDecorator], + component: Accordion, + args: { + singleActive: false, + view: 'default', + size: 'm', + stretching: 'filled', + disabled: false, + type: 'arrow', + pin: undefined, + title: 'Как оплатить заправку бонусами СберСпасибо?', + body: + 'После указания деталей заправки нажмите кнопку «К оплате». Откроется окно оплаты, где вы сможете списать бонусы и оплатить ими до 99% стоимости топлива', + }, + argTypes: { + ...disableProps(['text']), + view: { + options: ['default', 'clear'], + control: { + type: 'select', + }, + }, + size: { + options: ['xs', 's', 'm', 'l'], + control: { + type: 'select', + }, + }, + stretching: { + options: ['filled', 'fixed'], + control: { + type: 'select', + }, + }, + type: { + options: ['arrow', 'sign', 'clear'], + control: { + type: 'select', + }, + }, + pin: { + options: [ + 'square-square', + 'square-clear', + 'clear-square', + 'clear-clear', + 'clear-circle', + 'circle-clear', + 'circle-circle', + ], + control: { + type: 'select', + }, + }, + }, +}; + +export default meta; + +export const Default: StoryObj<AccordionProps> = { + render: (props: AccordionProps) => { + const args = { ...props, text: undefined }; + + return ( + <Accordion {...args}> + <AccordionItem type={args.type} pin={args.pin} title={args.title}> + {args.body} + </AccordionItem> + <AccordionItem type={args.type} pin={args.pin} title={args.title}> + {args.body} + </AccordionItem> + <AccordionItem type={args.type} pin={args.pin} title={args.title}> + {args.body} + </AccordionItem> + </Accordion> + ); + }, +}; + +const getSizeForIcon = (size) => (size === 'xs' ? 'xs' : 's'); + +const ControlledAccordion = (props: ComponentProps<typeof Accordion>) => { + const args = { ...props, text: undefined }; + const [activeFirst, setActiveFirst] = useState(false); + const [activeSecond, setActiveSecond] = useState(false); + const [activeThree, setActiveThree] = useState(false); + + return ( + <Accordion {...args}> + <AccordionItem + contentRight={ + <IconButton view="secondary" size={args.size} onClick={() => setActiveFirst(!activeFirst)}> + <IconPlus size={getSizeForIcon(args.size)} /> + </IconButton> + } + alignWithTitle={args.alignWithTitle} + type={args.type} + pin={args.pin} + title={args.title} + opened={activeFirst} + > + {args.body} + </AccordionItem> + <AccordionItem + contentRight={ + <IconButton view="secondary" size={args.size} onClick={() => setActiveSecond(!activeSecond)}> + <IconPlus size={getSizeForIcon(args.size)} /> + </IconButton> + } + alignWithTitle={args.alignWithTitle} + type={args.type} + pin={args.pin} + title={args.title} + opened={activeSecond} + > + {args.body} + </AccordionItem> + <AccordionItem + contentRight={ + <IconButton view="secondary" size={args.size} onClick={() => setActiveThree(!activeThree)}> + <IconPlus size={getSizeForIcon(args.size)} /> + </IconButton> + } + alignWithTitle={args.alignWithTitle} + type={args.type} + pin={args.pin} + title={args.title} + opened={activeThree} + > + {args.body} + </AccordionItem> + </Accordion> + ); +}; + +export const Controlled: StoryObj<ComponentProps<typeof Accordion>> = { + render: (props: ComponentProps<typeof Accordion>) => ControlledAccordion(props), +}; diff --git a/packages/plasma-giga/src/components/Accordion/Accordion.ts b/packages/plasma-giga/src/components/Accordion/Accordion.ts new file mode 100644 index 0000000000..4498feb929 --- /dev/null +++ b/packages/plasma-giga/src/components/Accordion/Accordion.ts @@ -0,0 +1,9 @@ +import { component, mergeConfig, accordionConfig, AccordionItem } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Accordion.config'; + +const mergedConfig = mergeConfig(accordionConfig, config); + +export const Accordion = component(mergedConfig); + +export { AccordionItem }; diff --git a/packages/plasma-giga/src/components/Accordion/index.ts b/packages/plasma-giga/src/components/Accordion/index.ts new file mode 100644 index 0000000000..3b1514e062 --- /dev/null +++ b/packages/plasma-giga/src/components/Accordion/index.ts @@ -0,0 +1 @@ +export { Accordion, AccordionItem } from './Accordion'; diff --git a/packages/plasma-giga/src/components/Attach/Attach.config.ts b/packages/plasma-giga/src/components/Attach/Attach.config.ts new file mode 100644 index 0000000000..e37f1f79ae --- /dev/null +++ b/packages/plasma-giga/src/components/Attach/Attach.config.ts @@ -0,0 +1,743 @@ +import { css, attachTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + focused: 'true', + size: 'm', + }, + variations: { + view: { + default: css` + ${attachTokens.buttonColor}: var(--inverse-text-primary); + ${attachTokens.buttonValueColor}: var(--inverse-text-secondary); + ${attachTokens.buttonBackgroundColor}: var(--surface-solid-default); + ${attachTokens.buttonLoadingBackgroundColor}: var(${attachTokens.buttonBackgroundColor}); + ${attachTokens.buttonColorHover}: var(--inverse-text-primary); + ${attachTokens.buttonBackgroundColorHover}: var(--surface-solid-default-hover); + ${attachTokens.buttonColorActive}: var(--inverse-text-primary); + ${attachTokens.buttonBackgroundColorActive}: var(--surface-solid-default-active); + + ${attachTokens.buttonDisabledOpacity}: 0.4; + ${attachTokens.buttonFocusColor}: var(--surface-accent); + + ${attachTokens.cellColor}: var(--text-primary); + ${attachTokens.cellLabelColor}: var(--text-secondary); + ${attachTokens.cellTitleColor}: var(--text-primary); + ${attachTokens.cellSubtitleColor}: var(--text-secondary); + ${attachTokens.cellBackgroundColor}: transparent; + + ${attachTokens.iconButtonColor}: var(--inverse-text-primary); + ${attachTokens.iconButtonBackgroundColor}: var(--surface-solid-default); + ${attachTokens.iconButtonLoadingBackgroundColor}: var(${attachTokens.iconButtonBackgroundColor}); + ${attachTokens.iconButtonColorHover}: var(--inverse-text-primary); + ${attachTokens.iconButtonBackgroundColorHover}: var(--surface-solid-default-hover); + ${attachTokens.iconButtonColorActive}: var(--inverse-text-primary); + ${attachTokens.iconButtonBackgroundColorActive}: var(--surface-solid-default-active); + + ${attachTokens.iconButtonDisabledOpacity}: 0.4; + ${attachTokens.iconButtonFocusColor}: var(--surface-accent); + + ${attachTokens.iconButtonCancelColor}: var(--text-secondary); + ${attachTokens.iconButtonCancelBackgroundColor}: var(--surface-clear); + ${attachTokens.iconButtonCancelLoadingBackgroundColor}: var(${attachTokens.iconButtonCancelBackgroundColor}); + ${attachTokens.iconButtonCancelColorHover}: var(--text-secondary-hover); + ${attachTokens.iconButtonCancelBackgroundColorHover}: var(--surface-clear); + ${attachTokens.iconButtonCancelColorActive}: var(--text-secondary-active); + ${attachTokens.iconButtonCancelBackgroundColorActive}: var(--surface-clear); + + ${attachTokens.iconButtonCancelDisabledOpacity}: 0.4; + ${attachTokens.iconButtonCancelFocusColor}: var(--surface-accent); + `, + accent: css` + ${attachTokens.buttonColor}: var(--on-dark-text-primary); + ${attachTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${attachTokens.buttonBackgroundColor}: var(--surface-accent); + ${attachTokens.buttonLoadingBackgroundColor}: var(${attachTokens.buttonBackgroundColor}); + ${attachTokens.buttonColorHover}: var(--on-dark-text-primary); + ${attachTokens.buttonBackgroundColorHover}: var(--surface-accent-hover); + ${attachTokens.buttonColorActive}: var(--on-dark-text-primary); + ${attachTokens.buttonBackgroundColorActive}: var(--surface-accent-active); + + ${attachTokens.buttonDisabledOpacity}: 0.4; + ${attachTokens.buttonFocusColor}: var(--surface-accent); + + ${attachTokens.cellColor}: var(--text-primary); + ${attachTokens.cellLabelColor}: var(--text-secondary); + ${attachTokens.cellTitleColor}: var(--text-primary); + ${attachTokens.cellSubtitleColor}: var(--text-secondary); + ${attachTokens.cellBackgroundColor}: transparent; + + ${attachTokens.iconButtonColor}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColor}: var(--surface-accent); + ${attachTokens.iconButtonLoadingBackgroundColor}: var(${attachTokens.iconButtonBackgroundColor}); + ${attachTokens.iconButtonColorHover}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColorHover}: var(--surface-accent-hover); + ${attachTokens.iconButtonColorActive}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColorActive}: var(--surface-accent-active); + + ${attachTokens.iconButtonDisabledOpacity}: 0.4; + ${attachTokens.iconButtonFocusColor}: var(--surface-accent); + + ${attachTokens.iconButtonCancelColor}: var(--text-secondary); + ${attachTokens.iconButtonCancelBackgroundColor}: var(--surface-clear); + ${attachTokens.iconButtonCancelLoadingBackgroundColor}: var(${attachTokens.iconButtonCancelBackgroundColor}); + ${attachTokens.iconButtonCancelColorHover}: var(--text-secondary-hover); + ${attachTokens.iconButtonCancelBackgroundColorHover}: var(--surface-clear); + ${attachTokens.iconButtonCancelColorActive}: var(--text-secondary-active); + ${attachTokens.iconButtonCancelBackgroundColorActive}: var(--surface-clear); + + ${attachTokens.iconButtonCancelDisabledOpacity}: 0.4; + ${attachTokens.iconButtonCancelFocusColor}: var(--surface-accent); + `, + secondary: css` + ${attachTokens.buttonColor}: var(--text-primary); + ${attachTokens.buttonValueColor}: var(--text-secondary); + ${attachTokens.buttonBackgroundColor}: var(--surface-transparent-secondary); + ${attachTokens.buttonLoadingBackgroundColor}: var(${attachTokens.buttonBackgroundColor}); + ${attachTokens.buttonColorHover}: var(--text-primary); + ${attachTokens.buttonBackgroundColorHover}: var(--surface-transparent-secondary-hover); + ${attachTokens.buttonColorActive}: var(--text-primary); + ${attachTokens.buttonBackgroundColorActive}: var(--surface-transparent-secondary-active); + + ${attachTokens.buttonDisabledOpacity}: 0.4; + ${attachTokens.buttonFocusColor}: var(--surface-accent); + + ${attachTokens.cellColor}: var(--text-primary); + ${attachTokens.cellLabelColor}: var(--text-secondary); + ${attachTokens.cellTitleColor}: var(--text-primary); + ${attachTokens.cellSubtitleColor}: var(--text-secondary); + ${attachTokens.cellBackgroundColor}: transparent; + + ${attachTokens.iconButtonColor}: var(--text-primary); + ${attachTokens.iconButtonBackgroundColor}: var(--surface-transparent-secondary); + ${attachTokens.iconButtonLoadingBackgroundColor}: var(${attachTokens.iconButtonBackgroundColor}); + ${attachTokens.iconButtonColorHover}: var(--text-primary); + ${attachTokens.iconButtonBackgroundColorHover}: var(--surface-transparent-secondary-hover); + ${attachTokens.iconButtonColorActive}: var(--text-primary); + ${attachTokens.iconButtonBackgroundColorActive}: var(--surface-transparent-secondary-active); + + ${attachTokens.iconButtonDisabledOpacity}: 0.4; + ${attachTokens.iconButtonFocusColor}: var(--surface-accent); + + ${attachTokens.iconButtonCancelColor}: var(--text-secondary); + ${attachTokens.iconButtonCancelBackgroundColor}: var(--surface-clear); + ${attachTokens.iconButtonCancelLoadingBackgroundColor}: var(${attachTokens.iconButtonCancelBackgroundColor}); + ${attachTokens.iconButtonCancelColorHover}: var(--text-secondary-hover); + ${attachTokens.iconButtonCancelBackgroundColorHover}: var(--surface-clear); + ${attachTokens.iconButtonCancelColorActive}: var(--text-secondary-active); + ${attachTokens.iconButtonCancelBackgroundColorActive}: var(--surface-clear); + + ${attachTokens.iconButtonCancelDisabledOpacity}: 0.4; + ${attachTokens.iconButtonCancelFocusColor}: var(--surface-accent); + `, + clear: css` + ${attachTokens.buttonColor}: var(--text-primary); + ${attachTokens.buttonValueColor}: var(--text-secondary); + ${attachTokens.buttonBackgroundColor}: var(--surface-clear); + ${attachTokens.buttonLoadingBackgroundColor}: var(${attachTokens.buttonBackgroundColor}); + ${attachTokens.buttonColorHover}: var(--text-primary-hover); + ${attachTokens.buttonBackgroundColorHover}: var(--surface-clear); + ${attachTokens.buttonColorActive}: var(--text-primary-active); + ${attachTokens.buttonBackgroundColorActive}: var(--surface-clear); + + ${attachTokens.buttonDisabledOpacity}: 0.4; + ${attachTokens.buttonFocusColor}: var(--surface-accent); + + ${attachTokens.cellColor}: var(--text-primary); + ${attachTokens.cellLabelColor}: var(--text-secondary); + ${attachTokens.cellTitleColor}: var(--text-primary); + ${attachTokens.cellSubtitleColor}: var(--text-secondary); + ${attachTokens.cellBackgroundColor}: transparent; + + ${attachTokens.iconButtonColor}: var(--text-primary); + ${attachTokens.iconButtonBackgroundColor}: var(--surface-clear); + ${attachTokens.iconButtonLoadingBackgroundColor}: var(${attachTokens.iconButtonBackgroundColor}); + ${attachTokens.iconButtonColorHover}: var(--text-primary-hover); + ${attachTokens.iconButtonBackgroundColorHover}: var(--surface-clear); + ${attachTokens.iconButtonColorActive}: var(--text-primary-active); + ${attachTokens.iconButtonBackgroundColorActive}: var(--surface-clear); + + ${attachTokens.iconButtonDisabledOpacity}: 0.4; + ${attachTokens.iconButtonFocusColor}: var(--surface-accent); + + ${attachTokens.iconButtonCancelColor}: var(--text-secondary); + ${attachTokens.iconButtonCancelBackgroundColor}: var(--surface-clear); + ${attachTokens.iconButtonCancelLoadingBackgroundColor}: var(${attachTokens.iconButtonCancelBackgroundColor}); + ${attachTokens.iconButtonCancelColorHover}: var(--text-secondary-hover); + ${attachTokens.iconButtonCancelBackgroundColorHover}: var(--surface-clear); + ${attachTokens.iconButtonCancelColorActive}: var(--text-secondary-active); + ${attachTokens.iconButtonCancelBackgroundColorActive}: var(--surface-clear); + + ${attachTokens.iconButtonCancelDisabledOpacity}: 0.4; + ${attachTokens.iconButtonCancelFocusColor}: var(--surface-accent); + `, + success: css` + ${attachTokens.buttonColor}: var(--on-dark-text-primary); + ${attachTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${attachTokens.buttonBackgroundColor}: var(--surface-positive); + ${attachTokens.buttonLoadingBackgroundColor}: var(${attachTokens.buttonBackgroundColor}); + ${attachTokens.buttonColorHover}: var(--on-dark-text-primary); + ${attachTokens.buttonBackgroundColorHover}: var(--surface-positive-hover); + ${attachTokens.buttonColorActive}: var(--on-dark-text-primary); + ${attachTokens.buttonBackgroundColorActive}: var(--surface-positive-active); + + ${attachTokens.cellColor}: var(--text-primary); + ${attachTokens.cellLabelColor}: var(--text-secondary); + ${attachTokens.cellTitleColor}: var(--text-primary); + ${attachTokens.cellSubtitleColor}: var(--text-secondary); + ${attachTokens.cellBackgroundColor}: transparent; + + ${attachTokens.iconButtonColor}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColor}: var(--surface-positive); + ${attachTokens.iconButtonLoadingBackgroundColor}: var(${attachTokens.iconButtonBackgroundColor}); + ${attachTokens.iconButtonColorHover}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColorHover}: var(--surface-positive-hover); + ${attachTokens.iconButtonColorActive}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColorActive}: var(--surface-positive-active); + + ${attachTokens.iconButtonDisabledOpacity}: 0.4; + ${attachTokens.iconButtonFocusColor}: var(--surface-accent); + + ${attachTokens.iconButtonCancelColor}: var(--text-secondary); + ${attachTokens.iconButtonCancelBackgroundColor}: var(--surface-clear); + ${attachTokens.iconButtonCancelLoadingBackgroundColor}: var(${attachTokens.iconButtonCancelBackgroundColor}); + ${attachTokens.iconButtonCancelColorHover}: var(--text-secondary-hover); + ${attachTokens.iconButtonCancelBackgroundColorHover}: var(--surface-clear); + ${attachTokens.iconButtonCancelColorActive}: var(--text-secondary-active); + ${attachTokens.iconButtonCancelBackgroundColorActive}: var(--surface-clear); + + ${attachTokens.iconButtonCancelDisabledOpacity}: 0.4; + ${attachTokens.iconButtonCancelFocusColor}: var(--surface-accent); + `, + warning: css` + ${attachTokens.buttonColor}: var(--on-dark-text-primary); + ${attachTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${attachTokens.buttonBackgroundColor}: var(--surface-warning); + ${attachTokens.buttonLoadingBackgroundColor}: var(${attachTokens.buttonBackgroundColor}); + ${attachTokens.buttonColorHover}: var(--on-dark-text-primary); + ${attachTokens.buttonBackgroundColorHover}: var(--surface-warning-hover); + ${attachTokens.buttonColorActive}: var(--on-dark-text-primary); + ${attachTokens.buttonBackgroundColorActive}: var(--surface-warning-active); + + ${attachTokens.buttonDisabledOpacity}: 0.4; + ${attachTokens.buttonFocusColor}: var(--surface-accent); + + ${attachTokens.cellColor}: var(--text-primary); + ${attachTokens.cellLabelColor}: var(--text-secondary); + ${attachTokens.cellTitleColor}: var(--text-primary); + ${attachTokens.cellSubtitleColor}: var(--text-secondary); + ${attachTokens.cellBackgroundColor}: transparent; + + ${attachTokens.iconButtonColor}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColor}: var(--surface-warning); + ${attachTokens.iconButtonLoadingBackgroundColor}: var(${attachTokens.iconButtonBackgroundColor}); + ${attachTokens.iconButtonColorHover}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColorHover}: var(--surface-warning-hover); + ${attachTokens.iconButtonColorActive}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColorActive}: var(--surface-warning-active); + + ${attachTokens.iconButtonDisabledOpacity}: 0.4; + ${attachTokens.iconButtonFocusColor}: var(--surface-accent); + + ${attachTokens.iconButtonCancelColor}: var(--text-secondary); + ${attachTokens.iconButtonCancelBackgroundColor}: var(--surface-clear); + ${attachTokens.iconButtonCancelLoadingBackgroundColor}: var(${attachTokens.iconButtonCancelBackgroundColor}); + ${attachTokens.iconButtonCancelColorHover}: var(--text-secondary-hover); + ${attachTokens.iconButtonCancelBackgroundColorHover}: var(--surface-clear); + ${attachTokens.iconButtonCancelColorActive}: var(--text-secondary-active); + ${attachTokens.iconButtonCancelBackgroundColorActive}: var(--surface-clear); + + ${attachTokens.iconButtonCancelDisabledOpacity}: 0.4; + ${attachTokens.iconButtonCancelFocusColor}: var(--surface-accent); + `, + critical: css` + ${attachTokens.buttonColor}: var(--on-dark-text-primary); + ${attachTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${attachTokens.buttonBackgroundColor}: var(--surface-negative); + ${attachTokens.buttonLoadingBackgroundColor}: var(${attachTokens.buttonBackgroundColor}); + ${attachTokens.buttonColorHover}: var(--on-dark-text-primary); + ${attachTokens.buttonBackgroundColorHover}: var(--surface-negative-hover); + ${attachTokens.buttonColorActive}: var(--on-dark-text-primary); + ${attachTokens.buttonBackgroundColorActive}: var(--surface-negative-active); + + ${attachTokens.cellColor}: var(--text-primary); + ${attachTokens.cellLabelColor}: var(--text-secondary); + ${attachTokens.cellTitleColor}: var(--text-primary); + ${attachTokens.cellSubtitleColor}: var(--text-secondary); + ${attachTokens.cellBackgroundColor}: transparent; + + ${attachTokens.iconButtonColor}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColor}: var(--surface-negative); + ${attachTokens.iconButtonLoadingBackgroundColor}: var(${attachTokens.iconButtonBackgroundColor}); + ${attachTokens.iconButtonColorHover}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColorHover}: var(--surface-negative-hover); + ${attachTokens.iconButtonColorActive}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColorActive}: var(--surface-negative-active); + + ${attachTokens.iconButtonDisabledOpacity}: 0.4; + ${attachTokens.iconButtonFocusColor}: var(--surface-accent); + + ${attachTokens.iconButtonCancelColor}: var(--text-secondary); + ${attachTokens.iconButtonCancelBackgroundColor}: var(--surface-clear); + ${attachTokens.iconButtonCancelLoadingBackgroundColor}: var(${attachTokens.iconButtonCancelBackgroundColor}); + ${attachTokens.iconButtonCancelColorHover}: var(--text-secondary-hover); + ${attachTokens.iconButtonCancelBackgroundColorHover}: var(--surface-clear); + ${attachTokens.iconButtonCancelColorActive}: var(--text-secondary-active); + ${attachTokens.iconButtonCancelBackgroundColorActive}: var(--surface-clear); + + ${attachTokens.iconButtonCancelDisabledOpacity}: 0.4; + ${attachTokens.iconButtonCancelFocusColor}: var(--surface-accent); + `, + dark: css` + ${attachTokens.buttonColor}: var(--on-dark-text-primary); + ${attachTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${attachTokens.buttonBackgroundColor}: var(--on-light-surface-transparent-deep); + ${attachTokens.buttonLoadingBackgroundColor}: var(${attachTokens.buttonBackgroundColor}); + ${attachTokens.buttonColorHover}: var(--on-dark-text-primary); + ${attachTokens.buttonBackgroundColorHover}: var(--on-light-surface-transparent-deep-hover); + ${attachTokens.buttonColorActive}: var(--on-dark-text-primary); + ${attachTokens.buttonBackgroundColorActive}: var(--on-light-surface-transparent-deep-active); + + ${attachTokens.buttonDisabledOpacity}: 0.4; + ${attachTokens.buttonFocusColor}: var(--surface-accent); + + ${attachTokens.cellColor}: var(--text-primary); + ${attachTokens.cellLabelColor}: var(--text-secondary); + ${attachTokens.cellTitleColor}: var(--text-primary); + ${attachTokens.cellSubtitleColor}: var(--text-secondary); + ${attachTokens.cellBackgroundColor}: transparent; + + ${attachTokens.iconButtonColor}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColor}: var(--on-light-surface-transparent-deep); + ${attachTokens.iconButtonLoadingBackgroundColor}: var(${attachTokens.iconButtonBackgroundColor}); + ${attachTokens.iconButtonColorHover}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColorHover}: var(--on-light-surface-transparent-deep-hover); + ${attachTokens.iconButtonColorActive}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColorActive}: var(--on-light-surface-transparent-deep-active); + + ${attachTokens.iconButtonDisabledOpacity}: 0.4; + ${attachTokens.iconButtonFocusColor}: var(--surface-accent); + + ${attachTokens.iconButtonCancelColor}: var(--text-secondary); + ${attachTokens.iconButtonCancelBackgroundColor}: var(--surface-clear); + ${attachTokens.iconButtonCancelLoadingBackgroundColor}: var(${attachTokens.iconButtonCancelBackgroundColor}); + ${attachTokens.iconButtonCancelColorHover}: var(--text-secondary-hover); + ${attachTokens.iconButtonCancelBackgroundColorHover}: var(--surface-clear); + ${attachTokens.iconButtonCancelColorActive}: var(--text-secondary-active); + ${attachTokens.iconButtonCancelBackgroundColorActive}: var(--surface-clear); + + ${attachTokens.iconButtonCancelDisabledOpacity}: 0.4; + ${attachTokens.iconButtonCancelFocusColor}: var(--surface-accent); + `, + black: css` + ${attachTokens.buttonColor}: var(--on-dark-text-primary); + ${attachTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${attachTokens.buttonBackgroundColor}: var(--on-light-surface-solid-default); + ${attachTokens.buttonLoadingBackgroundColor}: var(${attachTokens.buttonBackgroundColor}); + ${attachTokens.buttonColorHover}: var(--on-dark-text-primary); + ${attachTokens.buttonBackgroundColorHover}: var(--on-light-surface-solid-default-hover); + ${attachTokens.buttonColorActive}: var(--on-dark-text-primary); + ${attachTokens.buttonBackgroundColorActive}: var(--on-light-surface-solid-default-active); + + ${attachTokens.buttonDisabledOpacity}: 0.4; + ${attachTokens.buttonFocusColor}: var(--surface-accent); + + ${attachTokens.cellColor}: var(--text-primary); + ${attachTokens.cellLabelColor}: var(--text-secondary); + ${attachTokens.cellTitleColor}: var(--text-primary); + ${attachTokens.cellSubtitleColor}: var(--text-secondary); + ${attachTokens.cellBackgroundColor}: transparent; + + ${attachTokens.iconButtonColor}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColor}: var(--on-light-surface-solid-default); + ${attachTokens.iconButtonLoadingBackgroundColor}: var(${attachTokens.iconButtonBackgroundColor}); + ${attachTokens.iconButtonColorHover}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColorHover}: var(--on-light-surface-solid-default-hover); + ${attachTokens.iconButtonColorActive}: var(--on-dark-text-primary); + ${attachTokens.iconButtonBackgroundColorActive}: var(--on-light-surface-solid-default-active); + + ${attachTokens.iconButtonDisabledOpacity}: 0.4; + ${attachTokens.iconButtonFocusColor}: var(--surface-accent); + + ${attachTokens.iconButtonCancelColor}: var(--text-secondary); + ${attachTokens.iconButtonCancelBackgroundColor}: var(--surface-clear); + ${attachTokens.iconButtonCancelLoadingBackgroundColor}: var(${attachTokens.iconButtonCancelBackgroundColor}); + ${attachTokens.iconButtonCancelColorHover}: var(--text-secondary-hover); + ${attachTokens.iconButtonCancelBackgroundColorHover}: var(--surface-clear); + ${attachTokens.iconButtonCancelColorActive}: var(--text-secondary-active); + ${attachTokens.iconButtonCancelBackgroundColorActive}: var(--surface-clear); + + ${attachTokens.iconButtonCancelDisabledOpacity}: 0.4; + ${attachTokens.iconButtonCancelFocusColor}: var(--surface-accent); + `, + white: css` + ${attachTokens.buttonColor}: var(--on-light-text-primary); + ${attachTokens.buttonValueColor}: var(--on-light-text-secondary); + ${attachTokens.buttonBackgroundColor}: var(--on-dark-surface-solid-default); + ${attachTokens.buttonLoadingBackgroundColor}: var(${attachTokens.buttonBackgroundColor}); + ${attachTokens.buttonColorHover}: var(--on-light-text-primary); + ${attachTokens.buttonBackgroundColorHover}: var(--on-dark-surface-solid-default-hover); + ${attachTokens.buttonColorActive}: var(--on-light-text-primary); + ${attachTokens.buttonBackgroundColorActive}: var(--on-dark-surface-solid-default-active); + + ${attachTokens.buttonDisabledOpacity}: 0.4; + ${attachTokens.buttonFocusColor}: var(--surface-accent); + + ${attachTokens.cellColor}: var(--text-primary); + ${attachTokens.cellLabelColor}: var(--text-secondary); + ${attachTokens.cellTitleColor}: var(--text-primary); + ${attachTokens.cellSubtitleColor}: var(--text-secondary); + ${attachTokens.cellBackgroundColor}: transparent; + + ${attachTokens.iconButtonColor}: var(--on-light-text-primary); + ${attachTokens.iconButtonBackgroundColor}: var(--on-dark-surface-solid-default); + ${attachTokens.iconButtonLoadingBackgroundColor}: var(${attachTokens.iconButtonBackgroundColor}); + ${attachTokens.iconButtonColorHover}: var(--on-light-text-primary); + ${attachTokens.iconButtonBackgroundColorHover}: var(--on-dark-surface-solid-default-hover); + ${attachTokens.iconButtonColorActive}: var(--on-light-text-primary); + ${attachTokens.iconButtonBackgroundColorActive}: var(--on-dark-surface-solid-default-active); + + ${attachTokens.iconButtonDisabledOpacity}: 0.4; + ${attachTokens.iconButtonFocusColor}: var(--surface-accent); + + ${attachTokens.iconButtonCancelColor}: var(--text-secondary); + ${attachTokens.iconButtonCancelBackgroundColor}: var(--surface-clear); + ${attachTokens.iconButtonCancelLoadingBackgroundColor}: var(${attachTokens.iconButtonCancelBackgroundColor}); + ${attachTokens.iconButtonCancelColorHover}: var(--text-secondary-hover); + ${attachTokens.iconButtonCancelBackgroundColorHover}: var(--surface-clear); + ${attachTokens.iconButtonCancelColorActive}: var(--text-secondary-active); + ${attachTokens.iconButtonCancelBackgroundColorActive}: var(--surface-clear); + + ${attachTokens.iconButtonCancelDisabledOpacity}: 0.4; + ${attachTokens.iconButtonCancelFocusColor}: var(--surface-accent); + `, + }, + size: { + l: css` + ${attachTokens.horizontalGap}: 1.5rem; + ${attachTokens.verticalGap}: 0.5rem; + + ${attachTokens.buttonHeight}: 3.5rem; + ${attachTokens.buttonWidth}: 12.5rem; + ${attachTokens.buttonPadding}: 1.5rem; + ${attachTokens.buttonRadius}: 0.875rem; + ${attachTokens.buttonFontFamily}: var(--plasma-typo-body-l-font-family); + ${attachTokens.buttonFontSize}: var(--plasma-typo-body-l-font-size); + ${attachTokens.buttonFontStyle}: var(--plasma-typo-body-l-font-style); + ${attachTokens.buttonFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${attachTokens.buttonLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${attachTokens.buttonLineHeight}: var(--plasma-typo-body-l-line-height); + + ${attachTokens.buttonSpinnerSize}: 1.375rem; + ${attachTokens.buttonSpinnerColor}: inherit; + + ${attachTokens.buttonLeftContentMargin}: 0 0.5rem 0 -0.125rem; + ${attachTokens.buttonRightContentMargin}: 0 -0.125rem 0 0.5rem; + ${attachTokens.buttonValueMargin}: 0 0 0 0.25rem; + + ${attachTokens.cellWidth}: fit-content; + + ${attachTokens.cellPadding}: 0rem; + ${attachTokens.cellPaddingLeftContent}: 0rem; + ${attachTokens.cellPaddingContent}: 0rem; + ${attachTokens.cellPaddingRightContent}: 0rem; + + ${attachTokens.cellTextboxGap}: 0.125rem; + ${attachTokens.cellGap}: 0.375rem; + + ${attachTokens.cellLabelFontFamily}: var(--plasma-typo-body-m-font-family); + ${attachTokens.cellLabelFontSize}: var(--plasma-typo-body-m-font-size); + ${attachTokens.cellLabelFontStyle}: var(--plasma-typo-body-m-font-style); + ${attachTokens.cellLabelFontWeight}: var(--plasma-typo-body-m-font-weight); + ${attachTokens.cellLabelLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${attachTokens.cellLabelLineHeight}: var(--plasma-typo-body-m-line-height); + + ${attachTokens.cellTitleFontFamily}: var(--plasma-typo-body-l-font-family); + ${attachTokens.cellTitleFontSize}: var(--plasma-typo-body-l-font-size); + ${attachTokens.cellTitleFontStyle}: var(--plasma-typo-body-l-font-style); + ${attachTokens.cellTitleFontWeight}: var(--plasma-typo-body-l-font-weight); + ${attachTokens.cellTitleLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${attachTokens.cellTitleLineHeight}: var(--plasma-typo-body-l-line-height); + + ${attachTokens.cellSubtitleFontFamily}: var(--plasma-typo-body-m-font-family); + ${attachTokens.cellSubtitleFontSize}: var(--plasma-typo-body-m-font-size); + ${attachTokens.cellSubtitleFontStyle}: var(--plasma-typo-body-m-font-style); + ${attachTokens.cellSubtitleFontWeight}: var(--plasma-typo-body-m-font-weight); + ${attachTokens.cellSubtitleLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${attachTokens.cellSubtitleLineHeight}: var(--plasma-typo-body-m-line-height); + + ${attachTokens.iconButtonHeight}: 3.5rem; + ${attachTokens.iconButtonWidth}: 3.5rem; + ${attachTokens.iconButtonPadding}: 1.5rem; + ${attachTokens.iconButtonRadius}: 0.875rem; + ${attachTokens.iconButtonFontFamily}: var(--plasma-typo-body-l-font-family); + ${attachTokens.iconButtonFontSize}: var(--plasma-typo-body-l-font-size); + ${attachTokens.iconButtonFontStyle}: var(--plasma-typo-body-l-font-style); + ${attachTokens.iconButtonFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${attachTokens.iconButtonLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${attachTokens.iconButtonLineHeight}: var(--plasma-typo-body-l-line-height); + + ${attachTokens.iconButtonSpinnerSize}: 1.375rem; + ${attachTokens.iconButtonSpinnerColor}: inherit; + + ${attachTokens.iconButtonCancelHeight}: 2rem; + ${attachTokens.iconButtonCancelWidth}: 2rem; + ${attachTokens.iconButtonCancelPadding}: 0.75rem; + ${attachTokens.iconButtonCancelRadius}: 0.5rem; + ${attachTokens.iconButtonCancelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${attachTokens.iconButtonCancelFontSize}: var(--plasma-typo-body-xs-font-size); + ${attachTokens.iconButtonCancelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${attachTokens.iconButtonCancelFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${attachTokens.iconButtonCancelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${attachTokens.iconButtonCancelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${attachTokens.iconButtonCancelSpinnerSize}: 1rem; + ${attachTokens.iconButtonCancelSpinnerColor}: inherit; + `, + m: css` + ${attachTokens.horizontalGap}: 1.25rem; + ${attachTokens.verticalGap}: 0.5rem; + + ${attachTokens.buttonHeight}: 3rem; + ${attachTokens.buttonWidth}: 11.25rem; + ${attachTokens.buttonPadding}: 1.25rem; + ${attachTokens.buttonRadius}: 0.75rem; + ${attachTokens.buttonFontFamily}: var(--plasma-typo-body-m-font-family); + ${attachTokens.buttonFontSize}: var(--plasma-typo-body-m-font-size); + ${attachTokens.buttonFontStyle}: var(--plasma-typo-body-m-font-style); + ${attachTokens.buttonFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${attachTokens.buttonLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${attachTokens.buttonLineHeight}: var(--plasma-typo-body-m-line-height); + + ${attachTokens.buttonSpinnerSize}: 1.375rem; + ${attachTokens.buttonSpinnerColor}: inherit; + + ${attachTokens.buttonLeftContentMargin}: 0 0.375rem 0 -0.125rem; + ${attachTokens.buttonRightContentMargin}: 0 -0.125rem 0 0.375rem; + ${attachTokens.buttonValueMargin}: 0 0 0 0.25rem; + + ${attachTokens.cellWidth}: fit-content; + + ${attachTokens.cellPadding}: 0rem; + ${attachTokens.cellPaddingLeftContent}: 0rem; + ${attachTokens.cellPaddingContent}: 0rem; + ${attachTokens.cellPaddingRightContent}: 0rem; + + ${attachTokens.cellTextboxGap}: 0.125rem; + ${attachTokens.cellGap}: 0.375rem; + + ${attachTokens.cellLabelFontFamily}: var(--plasma-typo-body-s-font-family); + ${attachTokens.cellLabelFontSize}: var(--plasma-typo-body-s-font-size); + ${attachTokens.cellLabelFontStyle}: var(--plasma-typo-body-s-font-style); + ${attachTokens.cellLabelFontWeight}: var(--plasma-typo-body-s-font-weight); + ${attachTokens.cellLabelLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${attachTokens.cellLabelLineHeight}: var(--plasma-typo-body-s-line-height); + + ${attachTokens.cellTitleFontFamily}: var(--plasma-typo-body-m-font-family); + ${attachTokens.cellTitleFontSize}: var(--plasma-typo-body-m-font-size); + ${attachTokens.cellTitleFontStyle}: var(--plasma-typo-body-m-font-style); + ${attachTokens.cellTitleFontWeight}: var(--plasma-typo-body-m-font-weight); + ${attachTokens.cellTitleLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${attachTokens.cellTitleLineHeight}: var(--plasma-typo-body-m-line-height); + + ${attachTokens.cellSubtitleFontFamily}: var(--plasma-typo-body-s-font-family); + ${attachTokens.cellSubtitleFontSize}: var(--plasma-typo-body-s-font-size); + ${attachTokens.cellSubtitleFontStyle}: var(--plasma-typo-body-s-font-style); + ${attachTokens.cellSubtitleFontWeight}: var(--plasma-typo-body-s-font-weight); + ${attachTokens.cellSubtitleLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${attachTokens.cellSubtitleLineHeight}: var(--plasma-typo-body-s-line-height); + + ${attachTokens.iconButtonHeight}: 3rem; + ${attachTokens.iconButtonWidth}: 3rem; + ${attachTokens.iconButtonPadding}: 1.25rem; + ${attachTokens.iconButtonRadius}: 0.75rem; + ${attachTokens.iconButtonFontFamily}: var(--plasma-typo-body-m-font-family); + ${attachTokens.iconButtonFontSize}: var(--plasma-typo-body-m-font-size); + ${attachTokens.iconButtonFontStyle}: var(--plasma-typo-body-m-font-style); + ${attachTokens.iconButtonFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${attachTokens.iconButtonLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${attachTokens.iconButtonLineHeight}: var(--plasma-typo-body-m-line-height); + + ${attachTokens.iconButtonSpinnerSize}: 1.375rem; + ${attachTokens.iconButtonSpinnerColor}: inherit; + + ${attachTokens.iconButtonCancelHeight}: 2rem; + ${attachTokens.iconButtonCancelWidth}: 2rem; + ${attachTokens.iconButtonCancelPadding}: 0.75rem; + ${attachTokens.iconButtonCancelRadius}: 0.5rem; + ${attachTokens.iconButtonCancelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${attachTokens.iconButtonCancelFontSize}: var(--plasma-typo-body-xs-font-size); + ${attachTokens.iconButtonCancelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${attachTokens.iconButtonCancelFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${attachTokens.iconButtonCancelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${attachTokens.iconButtonCancelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${attachTokens.iconButtonCancelSpinnerSize}: 1rem; + ${attachTokens.iconButtonCancelSpinnerColor}: inherit; + `, + s: css` + ${attachTokens.horizontalGap}: 1rem; + ${attachTokens.verticalGap}: 0.375rem; + + ${attachTokens.buttonHeight}: 2.5rem; + ${attachTokens.buttonWidth}: 11.25rem; + ${attachTokens.buttonPadding}: 1rem; + ${attachTokens.buttonRadius}: 0.625rem; + ${attachTokens.buttonFontFamily}: var(--plasma-typo-body-s-font-family); + ${attachTokens.buttonFontSize}: var(--plasma-typo-body-s-font-size); + ${attachTokens.buttonFontStyle}: var(--plasma-typo-body-s-font-style); + ${attachTokens.buttonFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${attachTokens.buttonLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${attachTokens.buttonLineHeight}: var(--plasma-typo-body-s-line-height); + + ${attachTokens.buttonSpinnerSize}: 1.375rem; + ${attachTokens.buttonSpinnerColor}: inherit; + + ${attachTokens.buttonLeftContentMargin}: 0 0.25rem 0 -0.125rem; + ${attachTokens.buttonRightContentMargin}: 0 -0.125rem 0 0.25rem; + ${attachTokens.buttonValueMargin}: 0 0 0 0.25rem; + + ${attachTokens.cellWidth}: fit-content; + + ${attachTokens.cellPadding}: 0rem; + ${attachTokens.cellPaddingLeftContent}: 0rem; + ${attachTokens.cellPaddingContent}: 0rem; + ${attachTokens.cellPaddingRightContent}: 0rem; + + ${attachTokens.cellTextboxGap}: 0.125rem; + ${attachTokens.cellGap}: 0.375rem; + + ${attachTokens.cellLabelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${attachTokens.cellLabelFontSize}: var(--plasma-typo-body-xs-font-size); + ${attachTokens.cellLabelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${attachTokens.cellLabelFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${attachTokens.cellLabelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${attachTokens.cellLabelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${attachTokens.cellTitleFontFamily}: var(--plasma-typo-body-s-font-family); + ${attachTokens.cellTitleFontSize}: var(--plasma-typo-body-s-font-size); + ${attachTokens.cellTitleFontStyle}: var(--plasma-typo-body-s-font-style); + ${attachTokens.cellTitleFontWeight}: var(--plasma-typo-body-s-font-weight); + ${attachTokens.cellTitleLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${attachTokens.cellTitleLineHeight}: var(--plasma-typo-body-s-line-height); + + ${attachTokens.cellSubtitleFontFamily}: var(--plasma-typo-body-xs-font-family); + ${attachTokens.cellSubtitleFontSize}: var(--plasma-typo-body-xs-font-size); + ${attachTokens.cellSubtitleFontStyle}: var(--plasma-typo-body-xs-font-style); + ${attachTokens.cellSubtitleFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${attachTokens.cellSubtitleLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${attachTokens.cellSubtitleLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${attachTokens.iconButtonHeight}: 2.5rem; + ${attachTokens.iconButtonWidth}: 2.5rem; + ${attachTokens.iconButtonPadding}: 1rem; + ${attachTokens.iconButtonRadius}: 0.625rem; + ${attachTokens.iconButtonFontFamily}: var(--plasma-typo-body-s-font-family); + ${attachTokens.iconButtonFontSize}: var(--plasma-typo-body-s-font-size); + ${attachTokens.iconButtonFontStyle}: var(--plasma-typo-body-s-font-style); + ${attachTokens.iconButtonFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${attachTokens.iconButtonLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${attachTokens.iconButtonLineHeight}: var(--plasma-typo-body-s-line-height); + + ${attachTokens.iconButtonSpinnerSize}: 1.375rem; + ${attachTokens.iconButtonSpinnerColor}: inherit; + + ${attachTokens.iconButtonCancelHeight}: 2rem; + ${attachTokens.iconButtonCancelWidth}: 2rem; + ${attachTokens.iconButtonCancelPadding}: 0.75rem; + ${attachTokens.iconButtonCancelRadius}: 0.5rem; + ${attachTokens.iconButtonCancelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${attachTokens.iconButtonCancelFontSize}: var(--plasma-typo-body-xs-font-size); + ${attachTokens.iconButtonCancelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${attachTokens.iconButtonCancelFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${attachTokens.iconButtonCancelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${attachTokens.iconButtonCancelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${attachTokens.iconButtonCancelSpinnerSize}: 1rem; + ${attachTokens.iconButtonCancelSpinnerColor}: inherit; + `, + xs: css` + ${attachTokens.horizontalGap}: 0.75rem; + ${attachTokens.verticalGap}: 0.25rem; + + ${attachTokens.buttonHeight}: 2rem; + ${attachTokens.buttonWidth}: 10rem; + ${attachTokens.buttonPadding}: 0.75rem; + ${attachTokens.buttonRadius}: 0.5rem; + ${attachTokens.buttonFontFamily}: var(--plasma-typo-body-xs-font-family); + ${attachTokens.buttonFontSize}: var(--plasma-typo-body-xs-font-size); + ${attachTokens.buttonFontStyle}: var(--plasma-typo-body-xs-font-style); + ${attachTokens.buttonFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${attachTokens.buttonLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${attachTokens.buttonLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${attachTokens.buttonSpinnerSize}: 1rem; + ${attachTokens.buttonSpinnerColor}: inherit; + + ${attachTokens.buttonLeftContentMargin}: 0 0.25rem 0 -0.125rem; + ${attachTokens.buttonRightContentMargin}: 0 -0.125rem 0 0.25rem; + ${attachTokens.buttonValueMargin}: 0 0 0 0.25rem; + + ${attachTokens.cellWidth}: fit-content; + + ${attachTokens.cellPadding}: 0rem; + ${attachTokens.cellPaddingLeftContent}: 0rem; + ${attachTokens.cellPaddingContent}: 0rem; + ${attachTokens.cellPaddingRightContent}: 0rem; + + ${attachTokens.cellTextboxGap}: 0.125rem; + ${attachTokens.cellGap}: 0.25rem; + + ${attachTokens.cellLabelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${attachTokens.cellLabelFontSize}: var(--plasma-typo-body-xs-font-size); + ${attachTokens.cellLabelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${attachTokens.cellLabelFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${attachTokens.cellLabelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${attachTokens.cellLabelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${attachTokens.cellTitleFontFamily}: var(--plasma-typo-body-xs-font-family); + ${attachTokens.cellTitleFontSize}: var(--plasma-typo-body-xs-font-size); + ${attachTokens.cellTitleFontStyle}: var(--plasma-typo-body-xs-font-style); + ${attachTokens.cellTitleFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${attachTokens.cellTitleLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${attachTokens.cellTitleLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${attachTokens.cellSubtitleFontFamily}: var(--plasma-typo-body-xs-font-family); + ${attachTokens.cellSubtitleFontSize}: var(--plasma-typo-body-xs-font-size); + ${attachTokens.cellSubtitleFontStyle}: var(--plasma-typo-body-xs-font-style); + ${attachTokens.cellSubtitleFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${attachTokens.cellSubtitleLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${attachTokens.cellSubtitleLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${attachTokens.iconButtonHeight}: 2rem; + ${attachTokens.iconButtonWidth}: 2rem; + ${attachTokens.iconButtonPadding}: 0.75rem; + ${attachTokens.iconButtonRadius}: 0.5rem; + ${attachTokens.iconButtonFontFamily}: var(--plasma-typo-body-xs-font-family); + ${attachTokens.iconButtonFontSize}: var(--plasma-typo-body-xs-font-size); + ${attachTokens.iconButtonFontStyle}: var(--plasma-typo-body-xs-font-style); + ${attachTokens.iconButtonFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${attachTokens.iconButtonLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${attachTokens.iconButtonLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${attachTokens.iconButtonSpinnerSize}: 1rem; + ${attachTokens.iconButtonSpinnerColor}: inherit; + + ${attachTokens.iconButtonCancelHeight}: 2rem; + ${attachTokens.iconButtonCancelWidth}: 2rem; + ${attachTokens.iconButtonCancelPadding}: 0.75rem; + ${attachTokens.iconButtonCancelRadius}: 0.5rem; + ${attachTokens.iconButtonCancelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${attachTokens.iconButtonCancelFontSize}: var(--plasma-typo-body-xs-font-size); + ${attachTokens.iconButtonCancelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${attachTokens.iconButtonCancelFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${attachTokens.iconButtonCancelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${attachTokens.iconButtonCancelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${attachTokens.iconButtonCancelSpinnerSize}: 1rem; + ${attachTokens.iconButtonCancelSpinnerColor}: inherit; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Attach/Attach.stories.tsx b/packages/plasma-giga/src/components/Attach/Attach.stories.tsx new file mode 100644 index 0000000000..a214d0ada2 --- /dev/null +++ b/packages/plasma-giga/src/components/Attach/Attach.stories.tsx @@ -0,0 +1,156 @@ +import React from 'react'; +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import { IconPlasma } from '@salutejs/plasma-icons'; + +import { Attach } from './Attach'; + +const viewOptions = [ + 'default', + 'accent', + 'secondary', + 'clear', + 'success', + 'warning', + 'critical', + 'dark', + 'black', + 'white', +]; +const flowOptions = ['horizontal', 'vertical', 'auto']; +const fileFormatOptions = ['all', '.doc', '.xls', '.pdf', '.csv', '.txt']; +const sizeOptions = ['xs', 's', 'm', 'l']; + +type StoryAttachProps = ComponentProps<typeof Attach> & { + enableContentLeft: boolean; + enableContentRight: boolean; + buttonText?: string; + buttonValue?: string; + fileFormat?: string; + width?: string; +}; + +const meta: Meta<StoryAttachProps> = { + title: 'Data Entry/Attach', + decorators: [InSpacingDecorator], + component: Attach, + argTypes: { + fileFormat: { + options: fileFormatOptions, + control: { + type: 'select', + }, + }, + flow: { + options: flowOptions, + control: { + type: 'select', + }, + }, + size: { + options: sizeOptions, + control: { + type: 'select', + }, + }, + view: { + options: viewOptions, + control: { + type: 'select', + }, + }, + }, +}; + +export default meta; + +const StoryButton = (props: StoryAttachProps) => { + return <Attach {...props} />; +}; + +export const Button: StoryObj<StoryAttachProps> = { + args: { + fileFormat: 'all', + flow: 'horizontal', + hasAttachment: true, + width: '400px', + buttonText: 'Загрузить файл', + buttonValue: '', + enableContentLeft: false, + enableContentRight: false, + size: 'm', + view: 'accent', + }, + render: (args) => { + const { + buttonText, + buttonValue, + width, + size, + fileFormat, + enableContentLeft, + enableContentRight, + ...rest + } = args; + const accepted = fileFormat && fileFormat !== 'all' ? [fileFormat] : undefined; + const iconSize = size === 'xs' ? 'xs' : 's'; + + return ( + <StoryButton + style={{ width }} + size={size} + buttonType="button" + contentLeft={enableContentLeft ? <IconPlasma size={iconSize} color="inherit" /> : undefined} + contentRight={enableContentRight ? <IconPlasma size={iconSize} color="inherit" /> : undefined} + acceptedFileFormats={accepted} + text={buttonText} + value={buttonValue} + {...rest} + /> + ); + }, +}; + +const StoryIconButton = (props: StoryAttachProps) => { + return <Attach {...props} />; +}; + +export const IconButton: StoryObj<StoryAttachProps> = { + args: { + fileFormat: 'all', + flow: 'horizontal', + hasAttachment: true, + width: '400px', + size: 'm', + view: 'accent', + }, + render: (args) => { + const { + buttonText, + buttonValue, + width, + size, + fileFormat, + enableContentLeft, + enableContentRight, + ...rest + } = args; + const accepted = fileFormat && fileFormat !== 'all' ? [fileFormat] : undefined; + const iconSize = size === 'xs' ? 'xs' : 's'; + + return ( + <StoryIconButton + style={{ width }} + size={size} + buttonType="iconButton" + contentLeft={enableContentLeft ? <IconPlasma size={iconSize} color="inherit" /> : undefined} + contentRight={enableContentRight ? <IconPlasma size={iconSize} color="inherit" /> : undefined} + acceptedFileFormats={accepted} + text={buttonText} + value={buttonValue} + {...rest} + /> + ); + }, +}; diff --git a/packages/plasma-giga/src/components/Attach/Attach.ts b/packages/plasma-giga/src/components/Attach/Attach.ts new file mode 100644 index 0000000000..31e5fe6177 --- /dev/null +++ b/packages/plasma-giga/src/components/Attach/Attach.ts @@ -0,0 +1,10 @@ +import { attachConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Attach.config'; + +const mergedConfig = mergeConfig(attachConfig, config); + +/** + * Компонент, позволяющий прикрепить локальный файл + */ +export const Attach = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/Attach/index.ts b/packages/plasma-giga/src/components/Attach/index.ts new file mode 100644 index 0000000000..8a99c9be80 --- /dev/null +++ b/packages/plasma-giga/src/components/Attach/index.ts @@ -0,0 +1 @@ +export { Attach } from './Attach'; diff --git a/packages/plasma-giga/src/components/Autocomplete/Autocomplete.config.ts b/packages/plasma-giga/src/components/Autocomplete/Autocomplete.config.ts new file mode 100644 index 0000000000..1027cd98d9 --- /dev/null +++ b/packages/plasma-giga/src/components/Autocomplete/Autocomplete.config.ts @@ -0,0 +1,466 @@ +import { css, autocompleteTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'l', + labelPlacement: 'outer', + }, + variations: { + view: { + default: css` + ${tokens.textFieldColor}: var(--text-primary); + ${tokens.textFieldClearColor}: var(--text-primary); + + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + ${tokens.textFieldClearPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldClearPlaceholderColorFocus}: var(--text-tertiary); + + ${tokens.textFieldBackgroundColor}: var(--surface-transparent-primary); + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-secondary); + ${tokens.textFieldCaretColor}: var(--text-accent); + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + ${tokens.textFieldLabelColor}: var(--text-primary); + ${tokens.textFieldLeftHelperColor}: var(--text-secondary); + ${tokens.textFieldFocusColor}: var(--text-accent); + + ${tokens.textFieldContentSlotColor}: var(--text-secondary); + ${tokens.textFieldContentSlotColorHover}: var(--text-secondary-hover); + ${tokens.textFieldContentSlotColorActive}: var(--text-secondary-active); + + ${tokens.focusColor}: var(--surface-accent); + ${tokens.textFieldIndicatorColor}: var(--surface-negative); + ${tokens.textFieldOptionalColor}: var(--text-tertiary); + + ${tokens.textFieldDividerColor}: var(--surface-transparent-tertiary); + ${tokens.textFieldDividerColorHover}: var(--text-secondary); + ${tokens.textFieldDividerColorFocus}: var(--surface-accent); + + ${tokens.background}: var(--surface-solid-card); + ${tokens.boxShadow}: 0px 4px 14px -4px rgba(8, 8, 8, 0.08), 0px 1px 4px -1px rgba(0, 0, 0, 0.04); + ${tokens.itemBackground}: var(--plasma-colors-transparent); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + ${tokens.itemColor}: var(--text-primary); + + ${tokens.textFieldContentSlotColor}: ${tokens.textFieldColor}; + ${tokens.textFieldContentSlotRightColor}: ${tokens.textFieldColor}; + ${tokens.infiniteLoaderSpinnerColor}: var(--text-primary); + `, + positive: css` + ${tokens.textFieldColor}: var(--text-primary); + ${tokens.textFieldClearColor}: var(--text-positive); + + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + ${tokens.textFieldClearPlaceholderColor}: var(--text-positive); + ${tokens.textFieldClearPlaceholderColorFocus}: var(--text-positive); + + ${tokens.textFieldBackgroundColor}: var(--surface-transparent-positive); + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-positive-active); + ${tokens.textFieldCaretColor}: var(--text-accent); + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + ${tokens.textFieldLabelColor}: var(--text-primary); + ${tokens.textFieldLeftHelperColor}: var(--text-positive); + ${tokens.textFieldFocusColor}: var(--text-accent); + + ${tokens.textFieldContentSlotColor}: var(--text-secondary); + ${tokens.textFieldContentSlotColorHover}: var(--text-secondary-hover); + ${tokens.textFieldContentSlotColorActive}: var(--text-secondary-active); + + ${tokens.focusColor}: var(--surface-accent); + ${tokens.textFieldIndicatorColor}: var(--surface-negative); + ${tokens.textFieldOptionalColor}: var(--text-tertiary); + + ${tokens.textFieldDividerColor}: var(--surface-positive); + ${tokens.textFieldDividerColorHover}: var(--surface-positive); + ${tokens.textFieldDividerColorFocus}: var(--surface-accent); + + ${tokens.background}: var(--surface-solid-card); + ${tokens.boxShadow}: 0px 4px 14px -4px rgba(8, 8, 8, 0.08), 0px 1px 4px -1px rgba(0, 0, 0, 0.04); + ${tokens.itemBackground}: var(--plasma-colors-transparent); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + ${tokens.itemColor}: var(--text-primary); + + ${tokens.textFieldContentSlotColor}: ${tokens.textFieldColor}; + ${tokens.textFieldContentSlotRightColor}: ${tokens.textFieldColor}; + ${tokens.infiniteLoaderSpinnerColor}: var(--text-primary); + `, + warning: css` + ${tokens.textFieldColor}: var(--text-primary); + ${tokens.textFieldClearColor}: var(--text-warning); + + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + ${tokens.textFieldClearPlaceholderColor}: var(--text-warning); + ${tokens.textFieldClearPlaceholderColorFocus}: var(--text-warning); + + ${tokens.textFieldBackgroundColor}: var(--surface-transparent-warning); + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-warning-active); + ${tokens.textFieldCaretColor}: var(--text-accent); + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + ${tokens.textFieldLabelColor}: var(--text-primary); + ${tokens.textFieldLeftHelperColor}: var(--text-warning); + ${tokens.textFieldFocusColor}: var(--text-accent); + + ${tokens.textFieldContentSlotColor}: var(--text-secondary); + ${tokens.textFieldContentSlotColorHover}: var(--text-secondary-hover); + ${tokens.textFieldContentSlotColorActive}: var(--text-secondary-active); + + ${tokens.focusColor}: var(--surface-accent); + ${tokens.textFieldIndicatorColor}: var(--surface-negative); + ${tokens.textFieldOptionalColor}: var(--text-tertiary); + + ${tokens.textFieldDividerColor}: var(--surface-warning); + ${tokens.textFieldDividerColorHover}: var(--surface-warning); + ${tokens.textFieldDividerColorFocus}: var(--surface-accent); + + ${tokens.background}: var(--surface-solid-card); + ${tokens.boxShadow}: 0px 4px 14px -4px rgba(8, 8, 8, 0.08), 0px 1px 4px -1px rgba(0, 0, 0, 0.04); + ${tokens.itemBackground}: var(--plasma-colors-transparent); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + ${tokens.itemColor}: var(--text-primary); + + ${tokens.textFieldContentSlotColor}: ${tokens.textFieldColor}; + ${tokens.textFieldContentSlotRightColor}: ${tokens.textFieldColor}; + ${tokens.infiniteLoaderSpinnerColor}: var(--text-primary); + `, + negative: css` + ${tokens.textFieldColor}: var(--text-primary); + ${tokens.textFieldClearColor}: var(--text-negative); + + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + ${tokens.textFieldClearPlaceholderColor}: var(--text-negative); + ${tokens.textFieldClearPlaceholderColorFocus}: var(--text-negative); + + ${tokens.textFieldBackgroundColor}: var(--surface-transparent-negative); + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-negative-active); + ${tokens.textFieldCaretColor}: var(--text-accent); + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + ${tokens.textFieldLabelColor}: var(--text-primary); + ${tokens.textFieldLeftHelperColor}: var(--text-negative); + ${tokens.textFieldFocusColor}: var(--text-accent); + + ${tokens.textFieldContentSlotColor}: var(--text-secondary); + ${tokens.textFieldContentSlotColorHover}: var(--text-secondary-hover); + ${tokens.textFieldContentSlotColorActive}: var(--text-secondary-active); + + ${tokens.focusColor}: var(--surface-accent); + ${tokens.textFieldIndicatorColor}: var(--surface-negative); + ${tokens.textFieldOptionalColor}: var(--text-tertiary); + + ${tokens.textFieldDividerColor}: var(--surface-negative); + ${tokens.textFieldDividerColorHover}: var(--surface-negative); + ${tokens.textFieldDividerColorFocus}: var(--surface-accent); + + ${tokens.background}: var(--surface-solid-card); + ${tokens.boxShadow}: 0px 4px 14px -4px rgba(8, 8, 8, 0.08), 0px 1px 4px -1px rgba(0, 0, 0, 0.04); + ${tokens.itemBackground}: var(--plasma-colors-transparent); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + ${tokens.itemColor}: var(--text-primary); + + ${tokens.textFieldContentSlotColor}: ${tokens.textFieldColor}; + ${tokens.textFieldContentSlotRightColor}: ${tokens.textFieldColor}; + ${tokens.infiniteLoaderSpinnerColor}: var(--text-primary); + `, + }, + size: { + l: css` + ${tokens.textFieldHeight}: 3.5rem; + ${tokens.textFieldPadding}: 1.0625rem 1.125rem 1.0625rem 1.125rem; + ${tokens.textFieldBorderRadius}: 0.875rem; + + ${tokens.textFieldLeftContentMargin}: -0.0625rem 0.5rem -0.0625rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.textFieldLabelOffset}: 0.75rem; + ${tokens.textFieldClearLabelOffset}: 0.25rem; + ${tokens.textFieldLabelFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.textFieldLabelFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.textFieldLabelFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.textFieldLeftHelperOffset}: 0.25rem; + ${tokens.textFieldLeftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLeftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLeftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLeftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLeftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLeftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelInnerPadding}: 0.5625rem 0 0.125rem 0; + ${tokens.textFieldContentLabelInnerPadding}: 1.5625rem 0 0.5625rem 0; + + ${tokens.textFieldIndicatorSizeInner}: 0.5rem; + ${tokens.textFieldIndicatorSizeOuter}: 0.375rem; + ${tokens.textFieldIndicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.textFieldIndicatorLabelPlacementOuter}: 0.5rem auto auto -0.75rem; + ${tokens.textFieldIndicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.textFieldIndicatorLabelPlacementOuterRight}: 0.25rem -0.625rem auto auto; + ${tokens.textFieldClearIndicatorLabelPlacementInner}: 1.5rem auto auto -0.875rem; + ${tokens.textFieldClearIndicatorLabelPlacementInnerRight}: 1.5rem -0.875rem auto auto; + ${tokens.textFieldClearIndicatorHintInnerRight}: 1.5rem -2.25rem auto auto; + + ${tokens.borderRadius}: 0.875rem; + ${tokens.padding}: 0.125rem; + ${tokens.itemPadding}: 1.0625rem 1rem; + ${tokens.itemBorderRadius}: 0.75rem; + + ${tokens.itemFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.itemFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.itemFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.itemFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.itemFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.itemFontLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.emptyStatePadding}: 2rem 1rem 1rem 1rem; + ${tokens.emptyStateGap}: 0.5rem; + + ${tokens.infiniteLoaderSpinnerSize}: 1.5rem; + ${tokens.infiniteLoaderGap}: 0.5rem; + `, + m: css` + ${tokens.textFieldHeight}: 3rem; + ${tokens.textFieldPadding}: 0.875rem 1rem 0.875rem 1rem; + ${tokens.textFieldBorderRadius}: 0.75rem; + + ${tokens.textFieldLeftContentMargin}: -0.125rem 0.375rem -0.125rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.125rem -0.125rem -0.125rem 0.75rem; + + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.textFieldLabelOffset}: 0.625rem; + ${tokens.textFieldClearLabelOffset}: 0.25rem; + ${tokens.textFieldLabelFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.textFieldLabelFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.textFieldLabelFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.textFieldLeftHelperOffset}: 0.25rem; + ${tokens.textFieldLeftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLeftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLeftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLeftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLeftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLeftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelInnerPadding}: 0.375rem 0 0.125rem 0; + ${tokens.textFieldContentLabelInnerPadding}: 1.375rem 0 0.375rem 0; + + ${tokens.textFieldIndicatorSizeInner}: 0.5rem; + ${tokens.textFieldIndicatorSizeOuter}: 0.375rem; + ${tokens.textFieldIndicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.textFieldIndicatorLabelPlacementOuter}: 0.375rem auto auto -0.75rem; + ${tokens.textFieldIndicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.textFieldIndicatorLabelPlacementOuterRight}: 0.25rem -0.6875rem auto auto; + ${tokens.textFieldClearIndicatorLabelPlacementInner}: 1.25rem auto auto -0.875rem; + ${tokens.textFieldClearIndicatorLabelPlacementInnerRight}: 1.25rem -0.875rem auto auto; + ${tokens.textFieldClearIndicatorHintInnerRight}: 1.25rem -2.25rem auto auto; + + ${tokens.borderRadius}: 0.75rem; + ${tokens.padding}: 0.125rem; + ${tokens.itemPadding}: 0.875rem 0.875rem 0.875rem 0.875rem; + ${tokens.itemBorderRadius}: 0.625rem; + + ${tokens.itemFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.itemFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.itemFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.itemFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.itemFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.itemFontLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.emptyStatePadding}: 1.625rem 0.875rem 0.875rem 0.875rem; + ${tokens.emptyStateGap}: 0.375rem; + + ${tokens.infiniteLoaderSpinnerSize}: 1.5rem; + ${tokens.infiniteLoaderGap}: 0.375rem; + `, + s: css` + ${tokens.textFieldHeight}: 2.5rem; + ${tokens.textFieldPadding}: 0.6875rem 0.875rem 0.6875rem 0.875rem; + ${tokens.textFieldBorderRadius}: 0.625rem; + + ${tokens.textFieldLeftContentMargin}: -0.1875rem 0.25rem -0.1875rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.1875rem -0.125rem -0.1875rem 0.75rem; + + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.textFieldLabelOffset}: 0.5rem; + ${tokens.textFieldClearLabelOffset}: 0.25rem; + ${tokens.textFieldLabelFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.textFieldLabelFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.textFieldLabelFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.textFieldLeftHelperOffset}: 0.25rem; + ${tokens.textFieldLeftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLeftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLeftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLeftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLeftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLeftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelInnerPadding}: 0.3125rem 0 0 0; + ${tokens.textFieldContentLabelInnerPadding}: 1.0625rem 0 0.3125rem 0; + + ${tokens.textFieldIndicatorSizeInner}: 0.375rem; + ${tokens.textFieldIndicatorSizeOuter}: 0.375rem; + ${tokens.textFieldIndicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.textFieldIndicatorLabelPlacementOuter}: 0.3125rem auto auto -0.6875rem; + ${tokens.textFieldIndicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.textFieldIndicatorLabelPlacementOuterRight}: 0.25rem -0.625rem auto auto; + ${tokens.textFieldClearIndicatorLabelPlacementInner}: 1.063rem auto auto -0.75rem; + ${tokens.textFieldClearIndicatorLabelPlacementInnerRight}: 1.063rem -0.75rem auto auto; + ${tokens.textFieldClearIndicatorHintInnerRight}: 1.063rem -2.125rem auto auto; + + ${tokens.borderRadius}: 0.625rem; + ${tokens.padding}: 0.125rem; + ${tokens.itemPadding}: 0.6875rem 0.75rem; + ${tokens.itemBorderRadius}: 0.5rem; + + ${tokens.itemFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.itemFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.itemFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.itemFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.itemFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.itemFontLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.emptyStatePadding}: 1.375rem 0.625rem 0.625rem 0.625rem; + ${tokens.emptyStateGap}: 0.25rem; + + ${tokens.infiniteLoaderSpinnerSize}: 1.5rem; + ${tokens.infiniteLoaderGap}: 0.25rem; + `, + xs: css` + ${tokens.textFieldHeight}: 2rem; + ${tokens.textFieldPadding}: 0.5625rem 0.625rem 0.5625rem 0.625rem; + ${tokens.textFieldBorderRadius}: 0.5rem; + + ${tokens.textFieldLeftContentMargin}: -0.0625rem 0.25rem -0.0625rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelOffset}: 0.375rem; + ${tokens.textFieldClearLabelOffset}: 0.25rem; + ${tokens.textFieldLabelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLabelFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLabelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLeftHelperOffset}: 0.25rem; + ${tokens.textFieldLeftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLeftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLeftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLeftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLeftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLeftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelInnerPadding}: 0.3125rem 0 0 0; + ${tokens.textFieldContentLabelInnerPadding}: 1.0625rem 0 0.3125rem 0; + + ${tokens.textFieldIndicatorSizeInner}: 0.375rem; + ${tokens.textFieldIndicatorSizeOuter}: 0.375rem; + ${tokens.textFieldIndicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.textFieldIndicatorLabelPlacementOuter}: 0.25rem auto auto -0.625rem; + ${tokens.textFieldIndicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.textFieldIndicatorLabelPlacementOuterRight}: 0.125rem -0.6875rem auto auto; + ${tokens.textFieldClearIndicatorLabelPlacementInner}: 0.813rem auto auto -0.625rem; + ${tokens.textFieldClearIndicatorLabelPlacementInnerRight}: 0.813rem -0.625rem auto auto; + ${tokens.textFieldClearIndicatorHintInnerRight}: 0.813rem -1.875rem auto auto; + + ${tokens.borderRadius}: 0.5rem; + ${tokens.padding}: 0.125rem; + ${tokens.itemPadding}: 0.5625rem 0.5rem; + ${tokens.itemBorderRadius}: 0.5rem; + + ${tokens.itemFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.itemFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.itemFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.itemFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.itemFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.itemFontLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.emptyStatePadding}: 1rem 0.5rem 0.5rem 0.5rem; + ${tokens.emptyStateGap}: 0.25rem; + + ${tokens.infiniteLoaderSpinnerSize}: 1rem; + ${tokens.infiniteLoaderGap}: 0.25rem; + `, + }, + labelPlacement: { + inner: css` + ${tokens.textFieldPlaceholderColor}: var(--plasma-input-label-color, var(--plasma-input-placeholder-color, var(--plasma-colors-secondary))); + ${tokens.textFieldLabelInnerFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLabelInnerFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLabelInnerFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLabelInnerFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLabelInnerLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLabelInnerLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + outer: css``, + }, + disabled: { + true: css` + ${tokens.textFieldDisabledOpacity}: 0.4; + `, + }, + readOnly: { + true: css` + ${tokens.textFieldColorReadOnly}: var(--text-secondary); + ${tokens.textFieldBackgroundColorReadOnly}: var(--surface-transparent-primary); + ${tokens.textFieldPlaceholderColorReadOnly}: var(--text-secondary); + ${tokens.textFieldLeftHelperColorReadOnly}: var(--text-secondary); + ${tokens.textFieldLabelColorReadOnly}: var(--text-secondary); + ${tokens.textFieldDividerColorReadOnly}: var(--surface-transparent-primary); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Autocomplete/Autocomplete.stories.tsx b/packages/plasma-giga/src/components/Autocomplete/Autocomplete.stories.tsx new file mode 100644 index 0000000000..ef1a2fddc7 --- /dev/null +++ b/packages/plasma-giga/src/components/Autocomplete/Autocomplete.stories.tsx @@ -0,0 +1,155 @@ +import type { ComponentProps } from 'react'; +import * as React from 'react'; +import type { Meta, StoryObj } from '@storybook/react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import { IconPlasma } from '@salutejs/plasma-icons'; + +import { Autocomplete } from './Autocomplete'; + +const sizes = ['l', 'm', 's', 'xs']; +const views = ['default', 'positive', 'warning', 'negative']; +const labelPlacements = ['outer', 'inner']; + +const suggestions = [ + { label: 'Алексей Смирнов' }, + { label: 'Екатерина Иванова' }, + { label: 'Дмитрий Петров' }, + { label: 'Ольга Васильева' }, + { label: 'Сергей Сидоров' }, + { label: 'Мария Кузнецова' }, + { label: 'Андрей Попов' }, + { label: 'Анна Николаева' }, + { label: 'Иван Федоров' }, + { label: 'Наталья Морозова' }, + { label: 'Михаил Павлов' }, + { label: 'Елена Романова' }, + { label: 'Владимир Киселев' }, + { label: 'Татьяна Захарова' }, + { label: 'Николай Семенов' }, + { label: 'Юлия Белова' }, + { label: 'Александр Гусев' }, + { label: 'Оксана Яковлева' }, + { label: 'Игорь Егорова' }, + { label: 'Вера Тихомирова' }, + { label: 'Артем Григорьев' }, + { label: 'Евгения Козлова' }, + { label: 'Максим Лебедев' }, + { label: 'Виктория Калашникова' }, + { label: 'Константин Абрамов' }, + { label: 'Светлана Новикова' }, + { label: 'Юрий Волков' }, + { label: 'Валентина Воробьева' }, + { label: 'Павел Сергеев' }, + { label: 'Людмила Виноградова' }, + { label: 'Антон Соловьев' }, + { label: 'Маргарита Цветкова' }, + { label: 'Роман Трофимов' }, + { label: 'Лариса Зайцева' }, + { label: 'Евгений Никитин' }, + { label: 'Галина Михайлова' }, + { label: 'Владислав Антонов' }, + { label: 'Дарья Филатова' }, + { label: 'Олег Буров' }, + { label: 'Инна Медведева' }, + { label: 'Вячеслав Крылов' }, + { label: 'Тамара Беляева' }, + { label: 'Кирилл Марков' }, + { label: 'Марина Пономарева' }, + { label: 'Борис Захаров' }, + { label: 'Жанна Савельева' }, + { label: 'Федор Жуков' }, + { label: 'Елизавета Логинова' }, + { label: 'Виктор Рыбаков' }, + { label: 'Лилия Макарова' }, +]; + +type StoryProps = ComponentProps<typeof Autocomplete> & { + enableContentLeft: boolean; + enableContentRight: boolean; +}; + +const meta: Meta<StoryProps> = { + title: 'Data Entry/Autocomplete', + decorators: [InSpacingDecorator], + component: Autocomplete, + argTypes: { + view: { + options: views, + control: { + type: 'select', + }, + }, + size: { + options: sizes, + control: { + type: 'inline-radio', + }, + }, + labelPlacement: { + options: labelPlacements, + control: { + type: 'inline-radio', + }, + }, + requiredPlacement: { + options: ['left', 'right'], + control: { + type: 'select', + }, + if: { arg: 'required', truthy: true }, + }, + required: { + control: { + type: 'boolean', + }, + if: { arg: 'optional', truthy: false }, + }, + optional: { + control: { + type: 'boolean', + }, + if: { arg: 'required', truthy: false }, + }, + }, + args: { + view: 'default', + size: 'l', + labelPlacement: 'outer', + disabled: false, + readOnly: false, + label: 'Label', + textBefore: '', + textAfter: '', + placeholder: 'Заполните поле', + leftHelper: 'Введите имя Алексей', + listWidth: '100%', + listMaxHeight: '200px', + threshold: 2, + enableContentLeft: true, + enableContentRight: true, + optional: false, + required: false, + requiredPlacement: 'right', + }, +}; + +export default meta; + +const DefaultStory = (args: StoryProps) => { + const { enableContentLeft, enableContentRight } = args; + + const iconSize = args.size === 'xs' ? 'xs' : 's'; + + return ( + <Autocomplete + {...args} + suggestions={suggestions} + contentLeft={enableContentLeft ? <IconPlasma size={iconSize} /> : undefined} + contentRight={enableContentRight ? <IconPlasma size={iconSize} /> : undefined} + /> + ); +}; + +export const Default: StoryObj<StoryProps> = { + render: (args) => <DefaultStory {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Autocomplete/Autocomplete.ts b/packages/plasma-giga/src/components/Autocomplete/Autocomplete.ts new file mode 100644 index 0000000000..5e4d15f60a --- /dev/null +++ b/packages/plasma-giga/src/components/Autocomplete/Autocomplete.ts @@ -0,0 +1,6 @@ +import { autocompleteConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Autocomplete.config'; + +const mergedConfig = mergeConfig(autocompleteConfig, config); +export const Autocomplete = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/Autocomplete/index.ts b/packages/plasma-giga/src/components/Autocomplete/index.ts new file mode 100644 index 0000000000..aa5b9344ae --- /dev/null +++ b/packages/plasma-giga/src/components/Autocomplete/index.ts @@ -0,0 +1 @@ +export { Autocomplete } from './Autocomplete'; diff --git a/packages/plasma-giga/src/components/Avatar/Avatar.config.tsx b/packages/plasma-giga/src/components/Avatar/Avatar.config.tsx new file mode 100644 index 0000000000..4629c3c544 --- /dev/null +++ b/packages/plasma-giga/src/components/Avatar/Avatar.config.tsx @@ -0,0 +1,65 @@ +import { css, avatarTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'xxl', + }, + variations: { + view: { + default: css` + ${tokens.color}: var(--text-accent-gradient); + ${tokens.backgroundColor}: linear-gradient(94deg, rgba(62, 121, 240, 0.2) 6.49%, rgba(39, 198, 229, 0.2) 93.51%); + ${tokens.statusOnlineColor}: var(--surface-positive); + ${tokens.statusOfflineColor}: var(--surface-solid-tertiary); + ${tokens.scaleHover}: 1.02; + ${tokens.fontFamily}: var(--plasma-typo-text-font-family); + `, + }, + size: { + // TODO: #1044 токены типографики в Avatar + xxl: css` + ${tokens.avatarSize}: 6.25rem; + ${tokens.fontSize}: 2rem; + ${tokens.fontWeight}: 600; + ${tokens.lineHeight}: 2rem; + ${tokens.statusIconSize}: 0.75rem; + `, + l: css` + ${tokens.avatarSize}: 3rem; + ${tokens.fontSize}: 1.25rem; + ${tokens.fontWeight}: 600; + ${tokens.lineHeight}: 1.25rem; + ${tokens.statusIconSize}: 0.5rem; + `, + m: css` + ${tokens.avatarSize}: 2.25rem; + ${tokens.fontSize}: 0.875rem; + ${tokens.fontWeight}: 600; + ${tokens.lineHeight}: 0.875rem; + ${tokens.statusIconSize}: 0.5rem; + `, + s: css` + ${tokens.avatarSize}: 1.5rem; + ${tokens.fontSize}: 0.5rem; + ${tokens.fontWeight}: 600; + ${tokens.lineHeight}: 0.5rem; + ${tokens.statusIconSize}: 0.375rem; + `, + fit: css` + ${tokens.avatarSize}: 100%; + ${tokens.fontSize}: 0; + ${tokens.fontWeight}: 0; + ${tokens.lineHeight}: 0; + ${tokens.statusIconSize}: 0; + `, + }, + focused: { + true: css` + ${tokens.outlineSize}: 0.1rem; + ${tokens.outlineOffset}: -0.2rem; + ${tokens.outlineColor}: var(--surface-accent); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Avatar/Avatar.stories.tsx b/packages/plasma-giga/src/components/Avatar/Avatar.stories.tsx new file mode 100644 index 0000000000..81c7c46ddc --- /dev/null +++ b/packages/plasma-giga/src/components/Avatar/Avatar.stories.tsx @@ -0,0 +1,44 @@ +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { disableProps } from '@salutejs/plasma-sb-utils'; + +import { Avatar } from './Avatar'; + +const meta: Meta<typeof Avatar> = { + title: 'Data Display/Avatar', + component: Avatar, + argTypes: { + view: { control: 'inline-radio', options: ['default'] }, + size: { control: 'select', options: ['xxl', 'l', 'm', 's', 'fit'] }, + status: { control: 'select', options: ['active', 'inactive'] }, + }, +}; + +export default meta; + +type Story = StoryObj<ComponentProps<typeof Avatar>>; + +export const Default: Story = { + args: { + view: 'default', + size: 'xxl', + name: 'Иван Фадеев', + url: 'https://avatars.githubusercontent.com/u/1813468?v=4', + status: 'active', + isScalable: false, + }, + argTypes: { + ...disableProps(['focused']), + }, +}; + +export const Accessibility: Story = { + args: { + role: 'button', + tabIndex: 0, + view: 'default', + size: 'xxl', + name: 'Иван Фадеев', + status: 'active', + }, +}; diff --git a/packages/plasma-giga/src/components/Avatar/Avatar.ts b/packages/plasma-giga/src/components/Avatar/Avatar.ts new file mode 100644 index 0000000000..bdf8183f70 --- /dev/null +++ b/packages/plasma-giga/src/components/Avatar/Avatar.ts @@ -0,0 +1,8 @@ +import { avatarConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Avatar.config'; + +const mergedConfig = mergeConfig(avatarConfig, config); +const Avatar = component(mergedConfig); + +export { Avatar, mergedConfig }; diff --git a/packages/plasma-giga/src/components/Avatar/index.ts b/packages/plasma-giga/src/components/Avatar/index.ts new file mode 100644 index 0000000000..9454037f2c --- /dev/null +++ b/packages/plasma-giga/src/components/Avatar/index.ts @@ -0,0 +1,3 @@ +export { Avatar } from './Avatar'; + +export type { AvatarProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/AvatarGroup/AvatarGroup.stories.tsx b/packages/plasma-giga/src/components/AvatarGroup/AvatarGroup.stories.tsx new file mode 100644 index 0000000000..bc97ab5259 --- /dev/null +++ b/packages/plasma-giga/src/components/AvatarGroup/AvatarGroup.stories.tsx @@ -0,0 +1,71 @@ +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import * as React from 'react'; + +import { Avatar } from '../Avatar'; + +import { AvatarGroup } from './AvatarGroup'; + +type Story = StoryObj<ComponentProps<typeof AvatarGroup>>; + +const meta: Meta<typeof AvatarGroup> = { + title: 'Data Display/AvatarGroup', + component: AvatarGroup, +}; + +export default meta; + +export const Default: Story = { + render: (args: ComponentProps<typeof AvatarGroup>) => { + return ( + <AvatarGroup {...args}> + {Array(5) + .fill(true) + .map(() => ( + <Avatar size="xxl" url="https://avatars.githubusercontent.com/u/1813468?v=4" /> + ))} + </AvatarGroup> + ); + }, +}; + +export const DynamicSize: Story = { + args: { totalCount: 10, visibleCount: 3 }, + render: (args: ComponentProps<typeof AvatarGroup>) => { + const itemLength = args.totalCount; + + return ( + <AvatarGroup {...args}> + {Array(args.visibleCount) + .fill(true) + .map((_, index) => ( + <Avatar size="xxl" customText={index + 1} /> + ))} + + {itemLength > args.visibleCount && ( + <Avatar size="xxl" customText={`+${itemLength - args.visibleCount}`} /> + )} + </AvatarGroup> + ); + }, +}; + +export const Accessibility: Story = { + render: (args: ComponentProps<typeof AvatarGroup>) => { + return ( + <AvatarGroup {...args}> + {Array(5) + .fill(true) + .map(() => ( + <Avatar + role="button" + tabIndex={0} + focused + size="xxl" + url="https://avatars.githubusercontent.com/u/1813468?v=4" + /> + ))} + </AvatarGroup> + ); + }, +}; diff --git a/packages/plasma-giga/src/components/AvatarGroup/AvatarGroup.ts b/packages/plasma-giga/src/components/AvatarGroup/AvatarGroup.ts new file mode 100644 index 0000000000..2c9ab0c04f --- /dev/null +++ b/packages/plasma-giga/src/components/AvatarGroup/AvatarGroup.ts @@ -0,0 +1,5 @@ +import { avatarGroupConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +const mergedConfig = mergeConfig(avatarGroupConfig); + +export const AvatarGroup = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/AvatarGroup/index.ts b/packages/plasma-giga/src/components/AvatarGroup/index.ts new file mode 100644 index 0000000000..81abbbf098 --- /dev/null +++ b/packages/plasma-giga/src/components/AvatarGroup/index.ts @@ -0,0 +1,3 @@ +export { AvatarGroup } from './AvatarGroup'; + +export type { AvatarGroupProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Badge/Badge.config.ts b/packages/plasma-giga/src/components/Badge/Badge.config.ts new file mode 100644 index 0000000000..3d8e8df196 --- /dev/null +++ b/packages/plasma-giga/src/components/Badge/Badge.config.ts @@ -0,0 +1,166 @@ +import { css, badgeTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + view: { + default: css` + ${badgeTokens.color}: var(--inverse-text-primary); + ${badgeTokens.background}: var(--surface-solid-default); + + ${badgeTokens.colorTransparent}: var(--text-primary); + ${badgeTokens.backgroundTransparent}: var(--surface-transparent-secondary); + + ${badgeTokens.colorClear}: var(--text-primary); + `, + accent: css` + ${badgeTokens.color}: var(--on-dark-text-primary); + ${badgeTokens.background}: var(--surface-accent); + + ${badgeTokens.colorTransparent}: var(--text-accent); + ${badgeTokens.backgroundTransparent}: var(--surface-transparent-accent); + + ${badgeTokens.colorClear}: var(--text-accent); + `, + positive: css` + ${badgeTokens.color}: var(--on-dark-text-primary); + ${badgeTokens.background}: var(--surface-positive); + + ${badgeTokens.colorTransparent}: var(--text-positive); + ${badgeTokens.backgroundTransparent}: var(--surface-transparent-positive); + + ${badgeTokens.colorClear}: var(--text-positive); + `, + warning: css` + ${badgeTokens.color}: var(--on-dark-text-primary); + ${badgeTokens.background}: var(--surface-warning); + + ${badgeTokens.colorTransparent}: var(--text-warning); + ${badgeTokens.backgroundTransparent}: var(--surface-transparent-warning); + + ${badgeTokens.colorClear}: var(--text-warning); + `, + negative: css` + ${badgeTokens.color}: var(--on-dark-text-primary); + ${badgeTokens.background}: var(--surface-negative); + + ${badgeTokens.colorTransparent}: var(--text-negative); + ${badgeTokens.backgroundTransparent}: var(--surface-transparent-negative); + + ${badgeTokens.colorClear}: var(--text-negative); + `, + dark: css` + ${badgeTokens.color}: var(--on-dark-text-primary); + ${badgeTokens.background}: var(--on-light-surface-solid-default); + + ${badgeTokens.colorTransparent}: var(--on-dark-text-primary); + ${badgeTokens.backgroundTransparent}: var(--on-light-surface-transparent-deep); + + ${badgeTokens.colorClear}: var(--on-light-text-primary); + `, + light: css` + ${badgeTokens.color}: var(--on-light-text-primary); + ${badgeTokens.background}: var(--on-dark-surface-solid-default); + + ${badgeTokens.colorTransparent}: var(--on-dark-text-primary); + ${badgeTokens.backgroundTransparent}: var(--on-dark-surface-transparent-card); + + ${badgeTokens.colorClear}: var(--on-dark-text-primary); + `, + }, + size: { + l: css` + ${badgeTokens.borderRadius}: 0.5rem; + ${badgeTokens.height}: 1.75rem; + ${badgeTokens.padding}: 0 0.6875rem; + ${badgeTokens.paddingIconOnly}: 0 0.375rem; + + ${badgeTokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${badgeTokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${badgeTokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${badgeTokens.fontWeight}: var(--plasma-typo-body-s-font-weight); + ${badgeTokens.letterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${badgeTokens.lineHeight}: var(--plasma-typo-body-s-line-height); + + ${badgeTokens.leftContentMarginLeft}: -0.0625rem; + ${badgeTokens.leftContentMarginRight}: 0.25rem; + + ${badgeTokens.rightContentMarginLeft}: 0.25rem; + ${badgeTokens.rightContentMarginRight}: -0.0625rem; + `, + m: css` + ${badgeTokens.borderRadius}: 0.375rem; + ${badgeTokens.height}: 1.5rem; + ${badgeTokens.padding}: 0 0.5625rem; + ${badgeTokens.paddingIconOnly}: 0 0.375rem; + + ${badgeTokens.fontFamily}: var(--plasma-typo-body-xs-font-family); + ${badgeTokens.fontSize}: var(--plasma-typo-body-xs-font-size); + ${badgeTokens.fontStyle}: var(--plasma-typo-body-xs-font-style); + ${badgeTokens.fontWeight}: var(--plasma-typo-body-xs-font-weight); + ${badgeTokens.letterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${badgeTokens.lineHeight}: var(--plasma-typo-body-xs-line-height); + + ${badgeTokens.leftContentMarginLeft}: -0.0625rem; + ${badgeTokens.leftContentMarginRight}: 0.1875rem; + + ${badgeTokens.rightContentMarginLeft}: 0.1875rem; + ${badgeTokens.rightContentMarginRight}: -0.0625rem; + `, + s: css` + ${badgeTokens.borderRadius}: 0.375rem; + ${badgeTokens.height}: 1.25rem; + ${badgeTokens.padding}: 0 0.4375rem; + ${badgeTokens.paddingIconOnly}: 0 0.25rem; + + ${badgeTokens.fontFamily}: var(--plasma-typo-body-xxs-font-family); + ${badgeTokens.fontSize}: var(--plasma-typo-body-xxs-font-size); + ${badgeTokens.fontStyle}: var(--plasma-typo-body-xxs-font-style); + ${badgeTokens.fontWeight}: var(--plasma-typo-body-xxs-font-weight); + ${badgeTokens.letterSpacing}: var(--plasma-typo-body-xxs-letter-spacing); + ${badgeTokens.lineHeight}: var(--plasma-typo-body-xxs-line-height); + + ${badgeTokens.leftContentMarginLeft}: -0.0625rem; + ${badgeTokens.leftContentMarginRight}: 0.125rem; + + ${badgeTokens.rightContentMarginLeft}: 0.125rem; + ${badgeTokens.rightContentMarginRight}: -0.0625rem; + `, + xs: css` + ${badgeTokens.borderRadius}: 0.25rem; + ${badgeTokens.height}: 1rem; + ${badgeTokens.padding}: 0 0.25rem; + ${badgeTokens.paddingIconOnly}: 0 0.188rem; + + ${badgeTokens.fontFamily}: var(--plasma-typo-body-xxs-font-family); + ${badgeTokens.fontSize}: var(--plasma-typo-body-xxs-font-size); + ${badgeTokens.fontStyle}: var(--plasma-typo-body-xxs-font-style); + ${badgeTokens.fontWeight}: var(--plasma-typo-body-xxs-font-weight); + ${badgeTokens.letterSpacing}: var(--plasma-typo-body-xxs-letter-spacing); + ${badgeTokens.lineHeight}: var(--plasma-typo-body-xxs-line-height); + + ${badgeTokens.leftContentMarginLeft}: -0.0625rem; + ${badgeTokens.leftContentMarginRight}: 0.125rem; + + ${badgeTokens.rightContentMarginLeft}: 0.125rem; + ${badgeTokens.rightContentMarginRight}: -0.0625rem; + `, + }, + pilled: { + true: css` + ${badgeTokens.pilledBorderRadius}: 1.25rem; + `, + }, + transparent: { + true: css``, + }, + clear: { + true: css` + ${badgeTokens.backgroundClear}: var(--surface-clear); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Badge/Badge.stories.tsx b/packages/plasma-giga/src/components/Badge/Badge.stories.tsx new file mode 100644 index 0000000000..b50a61036c --- /dev/null +++ b/packages/plasma-giga/src/components/Badge/Badge.stories.tsx @@ -0,0 +1,107 @@ +import React, { ComponentProps } from 'react'; +import { disableProps, InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import type { StoryObj, Meta } from '@storybook/react'; + +import { Badge } from './Badge'; + +const meta: Meta<typeof Badge> = { + title: 'Data Display/Badge', + component: Badge, + decorators: [InSpacingDecorator], + argTypes: { + size: { + options: ['l', 'm', 's', 'xs'], + control: { + type: 'select', + }, + }, + view: { + options: ['default', 'accent', 'positive', 'warning', 'negative', 'dark', 'light'], + control: { + type: 'select', + }, + }, + pilled: { + control: { type: 'boolean' }, + if: { arg: 'clear', truthy: false }, + }, + transparent: { + control: { type: 'boolean' }, + if: { arg: 'clear', truthy: false }, + }, + maxWidth: { + control: { type: 'text' }, + }, + text: { + control: { type: 'text' }, + if: { arg: 'enableText', truthy: true }, + }, + ...disableProps(['contentLeft', 'contentRight']), + }, +}; + +export default meta; + +type StoryProps = ComponentProps<typeof Badge> & { + enableContentLeft: boolean; + enableContentRight: boolean; + enableText: boolean; +}; +type Story = StoryObj<StoryProps>; + +const BellIcon = (props) => ( + <svg width="100%" viewBox="0 0 24 24" fill="none" {...props}> + <path + d="M11.501 21.28c1.088 0 1.978-.889 1.978-1.977H9.524c0 1.088.88 1.978 1.977 1.978zm5.933-5.932v-4.944c0-3.035-1.622-5.576-4.45-6.248v-.673c0-.82-.662-1.483-1.483-1.483-.82 0-1.483.662-1.483 1.483v.672c-2.838.673-4.45 3.204-4.45 6.25v4.943l-1.275 1.276c-.623.623-.188 1.69.692 1.69h13.022c.88 0 1.325-1.067.702-1.69l-1.275-1.276z" + fill="currentColor" + /> + </svg> +); + +export const Default: Story = { + argTypes: { + enableContentLeft: { + control: { type: 'boolean' }, + if: { arg: 'enableContentRight', truthy: false }, + }, + enableContentRight: { + control: { type: 'boolean' }, + if: { arg: 'enableText', truthy: true }, + }, + }, + args: { + view: 'default', + size: 'm', + enableText: true, + text: 'Hello', + enableContentLeft: false, + enableContentRight: false, + clear: false, + pilled: false, + transparent: false, + maxWidth: '', + }, + render: ({ enableContentLeft, enableContentRight, enableText, size, ...rest }: StoryProps) => { + const iconSize = () => { + switch (size) { + case 'l': + return '1rem'; + case 'xs': + return '0.625rem'; + default: + return '0.75rem'; + } + }; + + return ( + <Badge + contentLeft={ + enableContentLeft || !enableText ? <BellIcon width={iconSize()} height={iconSize()} /> : undefined + } + contentRight={enableContentRight ? <BellIcon width={iconSize()} height={iconSize()} /> : undefined} + size={size} + {...rest} + /> + ); + }, +}; diff --git a/packages/plasma-giga/src/components/Badge/Badge.tsx b/packages/plasma-giga/src/components/Badge/Badge.tsx new file mode 100644 index 0000000000..92b8cfced1 --- /dev/null +++ b/packages/plasma-giga/src/components/Badge/Badge.tsx @@ -0,0 +1,10 @@ +import { badgeConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Badge.config'; + +const mergedConfig = mergeConfig(badgeConfig, config); + +/** + * Компонент Badge. + */ +export const Badge = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/Badge/index.ts b/packages/plasma-giga/src/components/Badge/index.ts new file mode 100644 index 0000000000..586c160601 --- /dev/null +++ b/packages/plasma-giga/src/components/Badge/index.ts @@ -0,0 +1,3 @@ +export { Badge } from './Badge'; + +export type { BadgeProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Breadcrumbs/Breadcrumbs.config.ts b/packages/plasma-giga/src/components/Breadcrumbs/Breadcrumbs.config.ts new file mode 100644 index 0000000000..1661a5df0e --- /dev/null +++ b/packages/plasma-giga/src/components/Breadcrumbs/Breadcrumbs.config.ts @@ -0,0 +1,61 @@ +import { css, breadcrumbsTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + view: { + default: css` + ${breadcrumbsTokens.breadcrumbsColor}: var(--text-primary); + ${breadcrumbsTokens.breadcrumbsColorText}: var(--text-primary); + ${breadcrumbsTokens.breadcrumbsColorSeparator}: var(--text-primary); + ${breadcrumbsTokens.breadcrumbsOpacity}: 0.4; + ${breadcrumbsTokens.breadcrumbsFocusOutlineColor}: var(--surface-accent); + `, + }, + size: { + l: css` + ${breadcrumbsTokens.breadcrumbsGap}: 0.5rem; + + ${breadcrumbsTokens.breadcrumbsFontFamily}: var(--plasma-typo-body-l-font-family); + ${breadcrumbsTokens.breadcrumbsFontSize}: var(--plasma-typo-body-l-font-size); + ${breadcrumbsTokens.breadcrumbsFontStyle}: var(--plasma-typo-body-l-font-style); + ${breadcrumbsTokens.breadcrumbsFontWeight}: var(--plasma-typo-body-l-bold-weight); + ${breadcrumbsTokens.breadcrumbsLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${breadcrumbsTokens.breadcrumbsLineHeight}: var(--plasma-typo-body-l-line-height); + `, + m: css` + ${breadcrumbsTokens.breadcrumbsGap}: 0.375rem; + + ${breadcrumbsTokens.breadcrumbsFontFamily}: var(--plasma-typo-body-m-font-family); + ${breadcrumbsTokens.breadcrumbsFontSize}: var(--plasma-typo-body-m-font-size); + ${breadcrumbsTokens.breadcrumbsFontStyle}: var(--plasma-typo-body-m-font-style); + ${breadcrumbsTokens.breadcrumbsFontWeight}: var(--plasma-typo-body-m-bold-weight); + ${breadcrumbsTokens.breadcrumbsLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${breadcrumbsTokens.breadcrumbsLineHeight}: var(--plasma-typo-body-m-line-height); + `, + s: css` + ${breadcrumbsTokens.breadcrumbsGap}: 0.25rem; + + ${breadcrumbsTokens.breadcrumbsFontFamily}: var(--plasma-typo-body-s-font-family); + ${breadcrumbsTokens.breadcrumbsFontSize}: var(--plasma-typo-body-s-font-size); + ${breadcrumbsTokens.breadcrumbsFontStyle}: var(--plasma-typo-body-s-font-style); + ${breadcrumbsTokens.breadcrumbsFontWeight}: var(--plasma-typo-body-s-bold-weight); + ${breadcrumbsTokens.breadcrumbsLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${breadcrumbsTokens.breadcrumbsLineHeight}: var(--plasma-typo-body-s-line-height); + `, + xs: css` + ${breadcrumbsTokens.breadcrumbsGap}: 0rem; + + ${breadcrumbsTokens.breadcrumbsFontFamily}: var(--plasma-typo-body-xs-font-family); + ${breadcrumbsTokens.breadcrumbsFontSize}: var(--plasma-typo-body-xs-font-size); + ${breadcrumbsTokens.breadcrumbsFontStyle}: var(--plasma-typo-body-xs-font-style); + ${breadcrumbsTokens.breadcrumbsFontWeight}: var(--plasma-typo-body-xs-bold-weight); + ${breadcrumbsTokens.breadcrumbsLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${breadcrumbsTokens.breadcrumbsLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Breadcrumbs/Breadcrumbs.stories.tsx b/packages/plasma-giga/src/components/Breadcrumbs/Breadcrumbs.stories.tsx new file mode 100644 index 0000000000..81bfde8f6c --- /dev/null +++ b/packages/plasma-giga/src/components/Breadcrumbs/Breadcrumbs.stories.tsx @@ -0,0 +1,82 @@ +import * as React from 'react'; +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { disableProps } from '@salutejs/plasma-sb-utils'; + +import { Dropdown } from '../Dropdown'; + +import { Breadcrumbs } from '.'; + +type BreadcrumbsProps = ComponentProps<typeof Breadcrumbs>; + +const meta: Meta<BreadcrumbsProps> = { + title: 'Navigation/Breadcrumbs', + component: Breadcrumbs, + args: { + view: 'default', + size: 'm', + }, + argTypes: { + ...disableProps(['separator']), + }, +}; + +export default meta; + +export const Default: StoryObj<BreadcrumbsProps> = { + args: { + showItems: 2, + items: [ + { title: 'Home', href: '/' }, + { title: 'About as', href: '/' }, + { renderItem: () => <span>Custom Item</span> }, + { title: 'Contacts' }, + ], + }, + render: (props: BreadcrumbsProps) => { + return <Breadcrumbs {...props} />; + }, +}; + +export const CustomShorter: StoryObj<BreadcrumbsProps> = { + args: { + view: 'default', + size: 'm', + }, + render: (props: BreadcrumbsProps) => { + const items = [ + { title: 'Home', href: '/' }, + { title: 'About as', href: '/' }, + { + renderItem: () => { + const itemsDropdown = [ + { + value: 'Custom Item 1', + label: 'Custom Item 1', + }, + { + value: 'Custom Item 2', + label: 'Custom Item 2', + }, + ]; + return ( + <Dropdown + variant="tight" + placement="bottom" + items={itemsDropdown} + trigger="hover" + size={args.size} + > + <span>...</span> + </Dropdown> + ); + }, + }, + { title: 'Contacts' }, + ]; + + const args = { ...props, items }; + + return <Breadcrumbs {...args} />; + }, +}; diff --git a/packages/plasma-giga/src/components/Breadcrumbs/Breadcrumbs.tsx b/packages/plasma-giga/src/components/Breadcrumbs/Breadcrumbs.tsx new file mode 100644 index 0000000000..5d78f7bfc9 --- /dev/null +++ b/packages/plasma-giga/src/components/Breadcrumbs/Breadcrumbs.tsx @@ -0,0 +1,11 @@ +import { breadcrumbsConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Breadcrumbs.config'; + +const mergedConfig = mergeConfig(breadcrumbsConfig, config); +const BreadcrumbsComponent = component(mergedConfig); + +/** + * Breadcrumbs + */ +export const Breadcrumbs = BreadcrumbsComponent; diff --git a/packages/plasma-giga/src/components/Breadcrumbs/index.ts b/packages/plasma-giga/src/components/Breadcrumbs/index.ts new file mode 100644 index 0000000000..4c2c23a32b --- /dev/null +++ b/packages/plasma-giga/src/components/Breadcrumbs/index.ts @@ -0,0 +1,3 @@ +export { Breadcrumbs } from './Breadcrumbs'; + +export type { BreadcrumbsProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Button/Button.config.ts b/packages/plasma-giga/src/components/Button/Button.config.ts new file mode 100644 index 0000000000..f87fc5c801 --- /dev/null +++ b/packages/plasma-giga/src/components/Button/Button.config.ts @@ -0,0 +1,296 @@ +import { css, buttonTokens } from '@salutejs/plasma-new-hope/styled-components'; + +// INFO: Rounded radius. Should be removed after token will be added in theme +const roundedRadius = '1000px'; + +export const config = { + defaults: { + view: 'default', + focused: 'true', + size: 'm', + }, + variations: { + view: { + default: css` + ${buttonTokens.buttonColor}: var(--inverse-text-primary); + ${buttonTokens.buttonValueColor}: var(--inverse-text-secondary); + ${buttonTokens.buttonBackgroundColor}: var(--surface-solid-default); + ${buttonTokens.buttonLoadingBackgroundColor}: var(${buttonTokens.buttonBackgroundColor}); + ${buttonTokens.buttonColorHover}: var(--inverse-text-primary); + ${buttonTokens.buttonBackgroundColorHover}: var(--surface-solid-default-hover); + ${buttonTokens.buttonColorActive}: var(--inverse-text-primary); + ${buttonTokens.buttonBackgroundColorActive}: var(--surface-solid-default-active); + `, + accent: css` + ${buttonTokens.buttonColor}: var(--on-dark-text-primary); + ${buttonTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${buttonTokens.buttonBackgroundColor}: var(--surface-accent); + ${buttonTokens.buttonLoadingBackgroundColor}: var(${buttonTokens.buttonBackgroundColor}); + ${buttonTokens.buttonColorHover}: var(--on-dark-text-primary); + ${buttonTokens.buttonBackgroundColorHover}: var(--surface-accent-hover); + ${buttonTokens.buttonColorActive}: var(--on-dark-text-primary); + ${buttonTokens.buttonBackgroundColorActive}: var(--surface-accent-active); + `, + secondary: css` + ${buttonTokens.buttonColor}: var(--text-primary); + ${buttonTokens.buttonValueColor}: var(--text-secondary); + ${buttonTokens.buttonBackgroundColor}: var(--surface-transparent-secondary); + ${buttonTokens.buttonLoadingBackgroundColor}: var(${buttonTokens.buttonBackgroundColor}); + ${buttonTokens.buttonColorHover}: var(--text-primary); + ${buttonTokens.buttonBackgroundColorHover}: var(--surface-transparent-secondary-hover); + ${buttonTokens.buttonColorActive}: var(--text-primary); + ${buttonTokens.buttonBackgroundColorActive}: var(--surface-transparent-secondary-active); + `, + clear: css` + ${buttonTokens.buttonColor}: var(--text-primary); + ${buttonTokens.buttonValueColor}: var(--text-secondary); + ${buttonTokens.buttonBackgroundColor}: var(--surface-clear); + ${buttonTokens.buttonLoadingBackgroundColor}: var(${buttonTokens.buttonBackgroundColor}); + ${buttonTokens.buttonColorHover}: var(--text-primary-hover); + ${buttonTokens.buttonBackgroundColorHover}: var(--surface-clear); + ${buttonTokens.buttonColorActive}: var(--text-primary-active); + ${buttonTokens.buttonBackgroundColorActive}: var(--surface-clear); + `, + success: css` + ${buttonTokens.buttonColor}: var(--on-dark-text-primary); + ${buttonTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${buttonTokens.buttonBackgroundColor}: var(--surface-positive); + ${buttonTokens.buttonLoadingBackgroundColor}: var(${buttonTokens.buttonBackgroundColor}); + ${buttonTokens.buttonColorHover}: var(--on-dark-text-primary); + ${buttonTokens.buttonBackgroundColorHover}: var(--surface-positive-hover); + ${buttonTokens.buttonColorActive}: var(--on-dark-text-primary); + ${buttonTokens.buttonBackgroundColorActive}: var(--surface-positive-active); + `, + warning: css` + ${buttonTokens.buttonColor}: var(--on-dark-text-primary); + ${buttonTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${buttonTokens.buttonBackgroundColor}: var(--surface-warning); + ${buttonTokens.buttonLoadingBackgroundColor}: var(${buttonTokens.buttonBackgroundColor}); + ${buttonTokens.buttonColorHover}: var(--on-dark-text-primary); + ${buttonTokens.buttonBackgroundColorHover}: var(--surface-warning-hover); + ${buttonTokens.buttonColorActive}: var(--on-dark-text-primary); + ${buttonTokens.buttonBackgroundColorActive}: var(--surface-warning-active); + `, + critical: css` + ${buttonTokens.buttonColor}: var(--on-dark-text-primary); + ${buttonTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${buttonTokens.buttonBackgroundColor}: var(--surface-negative); + ${buttonTokens.buttonLoadingBackgroundColor}: var(${buttonTokens.buttonBackgroundColor}); + ${buttonTokens.buttonColorHover}: var(--on-dark-text-primary); + ${buttonTokens.buttonBackgroundColorHover}: var(--surface-negative-hover); + ${buttonTokens.buttonColorActive}: var(--on-dark-text-primary); + ${buttonTokens.buttonBackgroundColorActive}: var(--surface-negative-active); + `, + dark: css` + ${buttonTokens.buttonColor}: var(--on-dark-text-primary); + ${buttonTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${buttonTokens.buttonBackgroundColor}: var(--on-light-surface-transparent-deep); + ${buttonTokens.buttonLoadingBackgroundColor}: var(${buttonTokens.buttonBackgroundColor}); + ${buttonTokens.buttonColorHover}: var(--on-dark-text-primary); + ${buttonTokens.buttonBackgroundColorHover}: var(--on-light-surface-transparent-deep-hover); + ${buttonTokens.buttonColorActive}: var(--on-dark-text-primary); + ${buttonTokens.buttonBackgroundColorActive}: var(--on-light-surface-transparent-deep-active); + `, + black: css` + ${buttonTokens.buttonColor}: var(--on-dark-text-primary); + ${buttonTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${buttonTokens.buttonBackgroundColor}: var(--on-light-surface-solid-default); + ${buttonTokens.buttonLoadingBackgroundColor}: var(${buttonTokens.buttonBackgroundColor}); + ${buttonTokens.buttonColorHover}: var(--on-dark-text-primary); + ${buttonTokens.buttonBackgroundColorHover}: var(--on-light-surface-solid-default-hover); + ${buttonTokens.buttonColorActive}: var(--on-dark-text-primary); + ${buttonTokens.buttonBackgroundColorActive}: var(--on-light-surface-solid-default-active); + `, + white: css` + ${buttonTokens.buttonColor}: var(--on-light-text-primary); + ${buttonTokens.buttonValueColor}: var(--on-light-text-secondary); + ${buttonTokens.buttonBackgroundColor}: var(--on-dark-surface-solid-default); + ${buttonTokens.buttonLoadingBackgroundColor}: var(${buttonTokens.buttonBackgroundColor}); + ${buttonTokens.buttonColorHover}: var(--on-light-text-primary); + ${buttonTokens.buttonBackgroundColorHover}: var(--on-dark-surface-solid-default-hover); + ${buttonTokens.buttonColorActive}: var(--on-light-text-primary); + ${buttonTokens.buttonBackgroundColorActive}: var(--on-dark-surface-solid-default-active); + `, + }, + size: { + l: css` + ${buttonTokens.buttonHeight}: 3.5rem; + ${buttonTokens.buttonWidth}: 12.5rem; + ${buttonTokens.buttonPadding}: 1.5rem; + ${buttonTokens.buttonRadius}: ${roundedRadius}; + ${buttonTokens.buttonFontFamily}: var(--plasma-typo-body-l-font-family); + ${buttonTokens.buttonFontSize}: var(--plasma-typo-body-l-font-size); + ${buttonTokens.buttonFontStyle}: var(--plasma-typo-body-l-font-style); + ${buttonTokens.buttonFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${buttonTokens.buttonLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${buttonTokens.buttonLineHeight}: var(--plasma-typo-body-l-line-height); + + ${buttonTokens.buttonSpinnerSize}: 1.375rem; + ${buttonTokens.buttonSpinnerColor}: inherit; + + ${buttonTokens.buttonLeftContentMargin}: 0 0.5rem 0 -0.125rem; + ${buttonTokens.buttonRightContentMargin}: 0 -0.125rem 0 0.5rem; + ${buttonTokens.buttonValueMargin}: 0 0 0 0.25rem; + `, + lr: css` + ${buttonTokens.buttonHeight}: 3.5rem; + ${buttonTokens.buttonWidth}: 12.5rem; + ${buttonTokens.buttonFontFamily}: var(--plasma-typo-body-l-font-family); + ${buttonTokens.buttonFontSize}: var(--plasma-typo-body-l-font-size); + ${buttonTokens.buttonFontStyle}: var(--plasma-typo-body-l-font-style); + ${buttonTokens.buttonFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${buttonTokens.buttonLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${buttonTokens.buttonLineHeight}: var(--plasma-typo-body-l-line-height); + + ${buttonTokens.buttonSpinnerSize}: 1.375rem; + ${buttonTokens.buttonSpinnerColor}: inherit; + + ${buttonTokens.buttonLeftContentMargin}: 0 0.5rem 0 0; + ${buttonTokens.buttonRightContentMargin}: 0 0 0 0.5rem; + ${buttonTokens.buttonValueMargin}: 0 0 0 0.25rem; + `, + m: css` + ${buttonTokens.buttonHeight}: 3rem; + ${buttonTokens.buttonWidth}: 11.25rem; + ${buttonTokens.buttonPadding}: 1.25rem; + ${buttonTokens.buttonRadius}: ${roundedRadius}; + ${buttonTokens.buttonFontFamily}: var(--plasma-typo-body-m-font-family); + ${buttonTokens.buttonFontSize}: var(--plasma-typo-body-m-font-size); + ${buttonTokens.buttonFontStyle}: var(--plasma-typo-body-m-font-style); + ${buttonTokens.buttonFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${buttonTokens.buttonLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${buttonTokens.buttonLineHeight}: var(--plasma-typo-body-m-line-height); + + ${buttonTokens.buttonSpinnerSize}: 1.375rem; + ${buttonTokens.buttonSpinnerColor}: inherit; + + ${buttonTokens.buttonLeftContentMargin}: 0 0.375rem 0 -0.125rem; + ${buttonTokens.buttonRightContentMargin}: 0 -0.125rem 0 0.375rem; + ${buttonTokens.buttonValueMargin}: 0 0 0 0.25rem; + `, + mr: css` + ${buttonTokens.buttonHeight}: 3rem; + ${buttonTokens.buttonWidth}: 11.25rem; + ${buttonTokens.buttonFontFamily}: var(--plasma-typo-body-m-font-family); + ${buttonTokens.buttonFontSize}: var(--plasma-typo-body-m-font-size); + ${buttonTokens.buttonFontStyle}: var(--plasma-typo-body-m-font-style); + ${buttonTokens.buttonFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${buttonTokens.buttonLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${buttonTokens.buttonLineHeight}: var(--plasma-typo-body-m-line-height); + + ${buttonTokens.buttonSpinnerSize}: 1.375rem; + ${buttonTokens.buttonSpinnerColor}: inherit; + + ${buttonTokens.buttonLeftContentMargin}: 0 0.375rem 0 0; + ${buttonTokens.buttonRightContentMargin}: 0 0 0 0.375rem; + ${buttonTokens.buttonValueMargin}: 0 0 0 0.25rem; + `, + s: css` + ${buttonTokens.buttonHeight}: 2.5rem; + ${buttonTokens.buttonWidth}: 11.25rem; + ${buttonTokens.buttonPadding}: 1rem; + ${buttonTokens.buttonRadius}: ${roundedRadius}; + ${buttonTokens.buttonFontFamily}: var(--plasma-typo-body-s-font-family); + ${buttonTokens.buttonFontSize}: var(--plasma-typo-body-s-font-size); + ${buttonTokens.buttonFontStyle}: var(--plasma-typo-body-s-font-style); + ${buttonTokens.buttonFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${buttonTokens.buttonLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${buttonTokens.buttonLineHeight}: var(--plasma-typo-body-s-line-height); + + ${buttonTokens.buttonSpinnerSize}: 1.375rem; + ${buttonTokens.buttonSpinnerColor}: inherit; + + ${buttonTokens.buttonLeftContentMargin}: 0 0.25rem 0 -0.125rem; + ${buttonTokens.buttonRightContentMargin}: 0 -0.125rem 0 0.25rem; + ${buttonTokens.buttonValueMargin}: 0 0 0 0.25rem; + `, + sr: css` + ${buttonTokens.buttonHeight}: 2.5rem; + ${buttonTokens.buttonWidth}: 11.25rem; + ${buttonTokens.buttonFontFamily}: var(--plasma-typo-body-s-font-family); + ${buttonTokens.buttonFontSize}: var(--plasma-typo-body-s-font-size); + ${buttonTokens.buttonFontStyle}: var(--plasma-typo-body-s-font-style); + ${buttonTokens.buttonFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${buttonTokens.buttonLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${buttonTokens.buttonLineHeight}: var(--plasma-typo-body-s-line-height); + + ${buttonTokens.buttonSpinnerSize}: 1.375rem; + ${buttonTokens.buttonSpinnerColor}: inherit; + + ${buttonTokens.buttonLeftContentMargin}: 0 0.25rem 0 0; + ${buttonTokens.buttonRightContentMargin}: 0 0 0 0.25rem; + ${buttonTokens.buttonValueMargin}: 0 0 0 0.25rem; + `, + xs: css` + ${buttonTokens.buttonHeight}: 2rem; + ${buttonTokens.buttonWidth}: 10rem; + ${buttonTokens.buttonPadding}: 0.75rem; + ${buttonTokens.buttonRadius}: ${roundedRadius}; + ${buttonTokens.buttonFontFamily}: var(--plasma-typo-body-xs-font-family); + ${buttonTokens.buttonFontSize}: var(--plasma-typo-body-xs-font-size); + ${buttonTokens.buttonFontStyle}: var(--plasma-typo-body-xs-font-style); + ${buttonTokens.buttonFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${buttonTokens.buttonLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${buttonTokens.buttonLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${buttonTokens.buttonSpinnerSize}: 1rem; + ${buttonTokens.buttonSpinnerColor}: inherit; + + ${buttonTokens.buttonLeftContentMargin}: 0 0.25rem 0 -0.125rem; + ${buttonTokens.buttonRightContentMargin}: 0 -0.125rem 0 0.25rem; + ${buttonTokens.buttonValueMargin}: 0 0 0 0.25rem; + `, + xsr: css` + ${buttonTokens.buttonHeight}: 2rem; + ${buttonTokens.buttonWidth}: 10rem; + ${buttonTokens.buttonFontFamily}: var(--plasma-typo-body-xs-font-family); + ${buttonTokens.buttonFontSize}: var(--plasma-typo-body-xs-font-size); + ${buttonTokens.buttonFontStyle}: var(--plasma-typo-body-xs-font-style); + ${buttonTokens.buttonFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${buttonTokens.buttonLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${buttonTokens.buttonLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${buttonTokens.buttonSpinnerSize}: 1rem; + ${buttonTokens.buttonSpinnerColor}: inherit; + + ${buttonTokens.buttonLeftContentMargin}: 0 0.25rem 0 0; + ${buttonTokens.buttonRightContentMargin}: 0 0 0 0.25rem; + ${buttonTokens.buttonValueMargin}: 0 0 0 0.25rem; + `, + xxs: css` + ${buttonTokens.buttonHeight}: 1.5rem; + ${buttonTokens.buttonWidth}: 8.75rem; + ${buttonTokens.buttonPadding}: 0.625rem; + ${buttonTokens.buttonRadius}: ${roundedRadius}; + ${buttonTokens.buttonFontFamily}: var(--plasma-typo-body-xs-font-family); + ${buttonTokens.buttonFontSize}: var(--plasma-typo-body-xs-font-size); + ${buttonTokens.buttonFontStyle}: var(--plasma-typo-body-xs-font-style); + ${buttonTokens.buttonFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${buttonTokens.buttonLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${buttonTokens.buttonLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${buttonTokens.buttonSpinnerSize}: 0.75rem; + ${buttonTokens.buttonSpinnerColor}: inherit; + + ${buttonTokens.buttonLeftContentMargin}: 0 0.25rem 0 -0.125rem; + ${buttonTokens.buttonRightContentMargin}: 0 -0.125rem 0 0.25rem; + ${buttonTokens.buttonValueMargin}: 0 0 0 0.25rem; + `, + }, + disabled: { + true: css` + ${buttonTokens.buttonDisabledOpacity}: 0.4; + `, + }, + focused: { + true: css` + ${buttonTokens.buttonFocusColor}: var(--surface-accent); + `, + }, + stretching: { + auto: css``, + filled: css``, + fixed: css``, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Button/Button.stories.tsx b/packages/plasma-giga/src/components/Button/Button.stories.tsx new file mode 100644 index 0000000000..3442d92993 --- /dev/null +++ b/packages/plasma-giga/src/components/Button/Button.stories.tsx @@ -0,0 +1,207 @@ +import React, { useCallback, useState, useRef } from 'react'; +import type { ComponentProps } from 'react'; +import { action } from '@storybook/addon-actions'; +import type { StoryObj, Meta } from '@storybook/react'; +import { IconMic } from '@salutejs/plasma-icons'; + +import { InSpacingDecorator, disableProps } from '../../helpers'; + +import { Button } from '.'; +import type { ButtonProps as Base } from '.'; + +type ButtonProps = ComponentProps<Base>; + +const views = ['default', 'accent', 'success', 'warning', 'critical', 'dark', 'light']; +const sizes = ['l', 'm', 's', 'xs', 'xxs']; +const stretchingValues = ['auto', 'filled', 'fixed']; +const pinValues = [ + '', + 'square-square', + 'square-clear', + 'clear-square', + 'clear-clear', + 'clear-circle', + 'circle-clear', + 'circle-circle', +]; +const contentPlacinValues = ['default', 'relaxed']; + +const onClick = action('onClick'); +const onFocus = action('onFocus'); +const onBlur = action('onBlur'); + +const meta: Meta<ButtonProps> = { + title: 'Data Entry/Button', + decorators: [InSpacingDecorator], + component: Button, + args: { + view: 'default', + size: 'm', + contentPlacing: 'default', + stretching: 'auto', + text: 'Hello', + value: 'Value', + disabled: false, + focused: true, + square: false, + isLoading: false, + }, + argTypes: { + view: { + options: views, + control: { + type: 'select', + }, + }, + size: { + options: sizes, + control: { + type: 'select', + }, + }, + value: { + control: { + type: 'text', + }, + }, + contentPlacing: { + options: contentPlacinValues, + control: { + type: 'select', + }, + }, + stretching: { + options: stretchingValues, + control: { + type: 'select', + }, + }, + pin: { + options: pinValues, + control: { + type: 'select', + }, + table: { defaultValue: { summary: 'bottom' } }, + }, + ...disableProps([ + 'theme', + 'loader', + 'onClick', + 'onFocus', + 'onBlur', + 'outlined', + 'contentLeft', + 'contentRight', + 'shiftLeft', + 'shiftRight', + 'stretch', + 'as', + 'forwardedAs', + ]), + }, +}; + +export default meta; + +type StoryPropsDefault = ComponentProps<typeof Button> & { + enableContentLeft: boolean; + enableContentRight: boolean; +}; + +const StoryDefault = ({ enableContentLeft, enableContentRight, size, ...rest }: StoryPropsDefault) => { + const iconSize = size === 'xs' || size === 'xxs' ? 'xs' : 's'; + + return ( + <Button + contentLeft={enableContentLeft ? <IconMic size={iconSize} color="inherit" /> : undefined} + contentRight={enableContentRight ? <IconMic size={iconSize} color="inherit" /> : undefined} + size={size} + onClick={onClick} + onFocus={onFocus} + onBlur={onBlur} + {...rest} + /> + ); +}; + +export const Default: StoryObj<StoryPropsDefault> = { + args: { + enableContentLeft: false, + enableContentRight: false, + value: '', + }, + argTypes: { + ...disableProps(['value']), + }, + render: (args) => <StoryDefault {...args} />, +}; + +export const WithValue: StoryObj<StoryPropsDefault> = { + args: { + enableContentLeft: false, + }, + render: (args) => <StoryDefault {...args} />, +}; + +const StoryLoading = ({ + enableContentLeft, + enableContentRight, + size, + isLoading, + onClick: _onClick, + ...rest +}: StoryPropsDefault) => { + const [loading, setLoading] = useState(isLoading); + const [count, setCount] = useState(0); + const intervalId = useRef<number | undefined>(); + + const iconSize = size === 'xs' || size === 'xxs' ? 'xs' : 's'; + + const onClickHandle = useCallback( + (event) => { + event.persist(); + + _onClick?.(event); + + setLoading(true); + + intervalId.current = window.setInterval(() => { + setCount((prev) => { + return prev + 1; + }); + }, 1_000); + }, + [_onClick], + ); + + if (count === 6) { + setLoading(false); + setCount(0); + window.clearInterval(intervalId.current); + } + + return ( + <Button + autoFocus + onClick={onClickHandle} + contentLeft={enableContentLeft ? <IconMic size={iconSize} color="inherit" /> : undefined} + contentRight={enableContentRight ? <IconMic size={iconSize} color="inherit" /> : undefined} + isLoading={loading} + size={size} + loader={<div>Loading - {count}</div>} + {...rest} + /> + ); +}; + +export const Loading: StoryObj<StoryPropsDefault> = { + args: { + ...Default.args, + text: 'Start loading', + value: '', + }, + argTypes: { + ...disableProps(['text', 'value']), + }, + render: (args) => <StoryLoading {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Button/Button.tsx b/packages/plasma-giga/src/components/Button/Button.tsx new file mode 100644 index 0000000000..51a940690f --- /dev/null +++ b/packages/plasma-giga/src/components/Button/Button.tsx @@ -0,0 +1,13 @@ +import { buttonConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Button.config'; + +const mergedConfig = mergeConfig(buttonConfig, config); +const ButtonComponent = component(mergedConfig); + +export type ButtonProps = typeof ButtonComponent; + +/** + * Кнопка. + */ +export const Button = ButtonComponent; diff --git a/packages/plasma-giga/src/components/Button/index.ts b/packages/plasma-giga/src/components/Button/index.ts new file mode 100644 index 0000000000..fa3c8a518e --- /dev/null +++ b/packages/plasma-giga/src/components/Button/index.ts @@ -0,0 +1,2 @@ +export { Button } from './Button'; +export type { ButtonProps } from './Button'; diff --git a/packages/plasma-giga/src/components/ButtonBase/index.ts b/packages/plasma-giga/src/components/ButtonBase/index.ts new file mode 100644 index 0000000000..c0cc88b007 --- /dev/null +++ b/packages/plasma-giga/src/components/ButtonBase/index.ts @@ -0,0 +1 @@ +export { ButtonBase } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/ButtonGroup/ButtonGroup.config.ts b/packages/plasma-giga/src/components/ButtonGroup/ButtonGroup.config.ts new file mode 100644 index 0000000000..00e1fa7b03 --- /dev/null +++ b/packages/plasma-giga/src/components/ButtonGroup/ButtonGroup.config.ts @@ -0,0 +1,268 @@ +import { css, buttonGroupTokens, buttonGroupClasses } from '@salutejs/plasma-new-hope/styled-components'; + +// INFO: Rounded radius. Should be removed after token will be added in theme +const roundedRadius = '1000px'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + view: { + default: css` + ${buttonGroupTokens.buttonColor}: var(--inverse-text-primary); + ${buttonGroupTokens.buttonValueColor}: var(--inverse-text-secondary); + ${buttonGroupTokens.buttonBackgroundColor}: var(--surface-solid-default); + ${buttonGroupTokens.buttonLoadingBackgroundColor}: var(${buttonGroupTokens.buttonBackgroundColor}); + ${buttonGroupTokens.buttonColorHover}: var(--inverse-text-primary); + ${buttonGroupTokens.buttonBackgroundColorHover}: var(--surface-solid-default-hover); + ${buttonGroupTokens.buttonColorActive}: var(--inverse-text-primary); + ${buttonGroupTokens.buttonBackgroundColorActive}: var(--surface-solid-default-active); + `, + accent: css` + ${buttonGroupTokens.buttonColor}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${buttonGroupTokens.buttonBackgroundColor}: var(--surface-accent); + ${buttonGroupTokens.buttonLoadingBackgroundColor}: var(${buttonGroupTokens.buttonBackgroundColor}); + ${buttonGroupTokens.buttonColorHover}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonBackgroundColorHover}: var(--surface-accent-hover); + ${buttonGroupTokens.buttonColorActive}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonBackgroundColorActive}: var(--surface-accent-active); + `, + secondary: css` + ${buttonGroupTokens.buttonColor}: var(--text-primary); + ${buttonGroupTokens.buttonValueColor}: var(--text-secondary); + ${buttonGroupTokens.buttonBackgroundColor}: var(--surface-transparent-secondary); + ${buttonGroupTokens.buttonLoadingBackgroundColor}: var(${buttonGroupTokens.buttonBackgroundColor}); + ${buttonGroupTokens.buttonColorHover}: var(--text-primary); + ${buttonGroupTokens.buttonBackgroundColorHover}: var(--surface-transparent-secondary-hover); + ${buttonGroupTokens.buttonColorActive}: var(--text-primary); + ${buttonGroupTokens.buttonBackgroundColorActive}: var(--surface-transparent-secondary-active); + `, + clear: css` + ${buttonGroupTokens.buttonColor}: var(--text-primary); + ${buttonGroupTokens.buttonValueColor}: var(--text-secondary); + ${buttonGroupTokens.buttonBackgroundColor}: var(--surface-clear); + ${buttonGroupTokens.buttonLoadingBackgroundColor}: var(${buttonGroupTokens.buttonBackgroundColor}); + ${buttonGroupTokens.buttonColorHover}: var(--text-primary-hover); + ${buttonGroupTokens.buttonBackgroundColorHover}: var(--surface-clear); + ${buttonGroupTokens.buttonColorActive}: var(--text-primary-active); + ${buttonGroupTokens.buttonBackgroundColorActive}: var(--surface-clear); + `, + success: css` + ${buttonGroupTokens.buttonColor}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${buttonGroupTokens.buttonBackgroundColor}: var(--surface-positive); + ${buttonGroupTokens.buttonLoadingBackgroundColor}: var(${buttonGroupTokens.buttonBackgroundColor}); + ${buttonGroupTokens.buttonColorHover}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonBackgroundColorHover}: var(--surface-positive-hover); + ${buttonGroupTokens.buttonColorActive}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonBackgroundColorActive}: var(--surface-positive-active); + `, + warning: css` + ${buttonGroupTokens.buttonColor}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${buttonGroupTokens.buttonBackgroundColor}: var(--surface-warning); + ${buttonGroupTokens.buttonLoadingBackgroundColor}: var(${buttonGroupTokens.buttonBackgroundColor}); + ${buttonGroupTokens.buttonColorHover}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonBackgroundColorHover}: var(--surface-warning-hover); + ${buttonGroupTokens.buttonColorActive}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonBackgroundColorActive}: var(--surface-warning-active); + `, + critical: css` + ${buttonGroupTokens.buttonColor}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${buttonGroupTokens.buttonBackgroundColor}: var(--surface-negative); + ${buttonGroupTokens.buttonLoadingBackgroundColor}: var(${buttonGroupTokens.buttonBackgroundColor}); + ${buttonGroupTokens.buttonColorHover}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonBackgroundColorHover}: var(--surface-negative-hover); + ${buttonGroupTokens.buttonColorActive}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonBackgroundColorActive}: var(--surface-negative-active); + `, + dark: css` + ${buttonGroupTokens.buttonColor}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${buttonGroupTokens.buttonBackgroundColor}: var(--on-light-surface-transparent-deep); + ${buttonGroupTokens.buttonLoadingBackgroundColor}: var(${buttonGroupTokens.buttonBackgroundColor}); + ${buttonGroupTokens.buttonColorHover}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonBackgroundColorHover}: var(--on-light-surface-transparent-deep-hover); + ${buttonGroupTokens.buttonColorActive}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonBackgroundColorActive}: var(--on-light-surface-transparent-deep-active); + `, + black: css` + ${buttonGroupTokens.buttonColor}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonValueColor}: var(--on-dark-text-secondary); + ${buttonGroupTokens.buttonBackgroundColor}: var(--on-light-surface-solid-default); + ${buttonGroupTokens.buttonLoadingBackgroundColor}: var(${buttonGroupTokens.buttonBackgroundColor}); + ${buttonGroupTokens.buttonColorHover}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonBackgroundColorHover}: var(--on-light-surface-solid-default-hover); + ${buttonGroupTokens.buttonColorActive}: var(--on-dark-text-primary); + ${buttonGroupTokens.buttonBackgroundColorActive}: var(--on-light-surface-solid-default-active); + `, + white: css` + ${buttonGroupTokens.buttonColor}: var(--on-light-text-primary); + ${buttonGroupTokens.buttonValueColor}: var(--on-light-text-secondary); + ${buttonGroupTokens.buttonBackgroundColor}: var(--on-dark-surface-solid-default); + ${buttonGroupTokens.buttonLoadingBackgroundColor}: var(${buttonGroupTokens.buttonBackgroundColor}); + ${buttonGroupTokens.buttonColorHover}: var(--on-light-text-primary); + ${buttonGroupTokens.buttonBackgroundColorHover}: var(--on-dark-surface-solid-default-hover); + ${buttonGroupTokens.buttonColorActive}: var(--on-light-text-primary); + ${buttonGroupTokens.buttonBackgroundColorActive}: var(--on-dark-surface-solid-default-active); + `, + }, + size: { + l: css` + ${buttonGroupTokens.buttonDefaultRadius}: ${roundedRadius}; + ${buttonGroupTokens.buttonSegmentedRadius}: 0.375rem; + ${buttonGroupTokens.buttonSideRadius}: ${roundedRadius}; + + ${buttonGroupTokens.buttonHeight}: 3.5rem; + ${buttonGroupTokens.buttonPadding}: 1.5rem; + ${buttonGroupTokens.buttonFontFamily}: var(--plasma-typo-body-l-font-family); + ${buttonGroupTokens.buttonFontSize}: var(--plasma-typo-body-l-font-size); + ${buttonGroupTokens.buttonFontStyle}: var(--plasma-typo-body-l-font-style); + ${buttonGroupTokens.buttonFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${buttonGroupTokens.buttonLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${buttonGroupTokens.buttonLineHeight}: var(--plasma-typo-body-l-line-height); + `, + lr: css` + ${buttonGroupTokens.buttonDefaultRadius}: ${roundedRadius}; + ${buttonGroupTokens.buttonSegmentedRadius}: 0.375rem; + ${buttonGroupTokens.buttonSideRadius}: ${roundedRadius}; + + ${buttonGroupTokens.buttonHeight}: 3.5rem; + ${buttonGroupTokens.buttonFontFamily}: var(--plasma-typo-body-l-font-family); + ${buttonGroupTokens.buttonFontSize}: var(--plasma-typo-body-l-font-size); + ${buttonGroupTokens.buttonFontStyle}: var(--plasma-typo-body-l-font-style); + ${buttonGroupTokens.buttonFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${buttonGroupTokens.buttonLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${buttonGroupTokens.buttonLineHeight}: var(--plasma-typo-body-l-line-height); + `, + m: css` + ${buttonGroupTokens.buttonSegmentedRadius}: 0.25rem; + ${buttonGroupTokens.buttonDefaultRadius}: ${roundedRadius}; + ${buttonGroupTokens.buttonSideRadius}: ${roundedRadius}; + + ${buttonGroupTokens.buttonHeight}: 3rem; + ${buttonGroupTokens.buttonPadding}: 1.25rem; + + ${buttonGroupTokens.buttonFontFamily}: var(--plasma-typo-body-m-font-family); + ${buttonGroupTokens.buttonFontSize}: var(--plasma-typo-body-m-font-size); + ${buttonGroupTokens.buttonFontStyle}: var(--plasma-typo-body-m-font-style); + ${buttonGroupTokens.buttonFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${buttonGroupTokens.buttonLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${buttonGroupTokens.buttonLineHeight}: var(--plasma-typo-body-m-line-height); + `, + mr: css` + &.${buttonGroupClasses.segmented} { + ${buttonGroupTokens.buttonSegmentedRadius}: 0.25rem; + ${buttonGroupTokens.buttonDefaultRadius}: ${roundedRadius}; + ${buttonGroupTokens.buttonSideRadius}: ${roundedRadius}; + + ${buttonGroupTokens.buttonHeight}: 3rem; + ${buttonGroupTokens.buttonFontFamily}: var(--plasma-typo-body-m-font-family); + ${buttonGroupTokens.buttonFontSize}: var(--plasma-typo-body-m-font-size); + ${buttonGroupTokens.buttonFontStyle}: var(--plasma-typo-body-m-font-style); + ${buttonGroupTokens.buttonFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${buttonGroupTokens.buttonLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${buttonGroupTokens.buttonLineHeight}: var(--plasma-typo-body-m-line-height); + `, + s: css` + ${buttonGroupTokens.buttonSegmentedRadius}: 0.25rem; + ${buttonGroupTokens.buttonSideRadius}: ${roundedRadius}; + ${buttonGroupTokens.buttonDefaultRadius}: ${roundedRadius}; + + ${buttonGroupTokens.buttonHeight}: 2.5rem; + ${buttonGroupTokens.buttonPadding}: 1rem; + ${buttonGroupTokens.buttonFontFamily}: var(--plasma-typo-body-s-font-family); + ${buttonGroupTokens.buttonFontSize}: var(--plasma-typo-body-s-font-size); + ${buttonGroupTokens.buttonFontStyle}: var(--plasma-typo-body-s-font-style); + ${buttonGroupTokens.buttonFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${buttonGroupTokens.buttonLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${buttonGroupTokens.buttonLineHeight}: var(--plasma-typo-body-s-line-height); + `, + sr: css` + ${buttonGroupTokens.buttonSegmentedRadius}: 0.25rem; + ${buttonGroupTokens.buttonDefaultRadius}: ${roundedRadius}; + ${buttonGroupTokens.buttonSideRadius}: ${roundedRadius}; + + ${buttonGroupTokens.buttonHeight}: 2.5rem; + ${buttonGroupTokens.buttonFontFamily}: var(--plasma-typo-body-s-font-family); + ${buttonGroupTokens.buttonFontSize}: var(--plasma-typo-body-s-font-size); + ${buttonGroupTokens.buttonFontStyle}: var(--plasma-typo-body-s-font-style); + ${buttonGroupTokens.buttonFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${buttonGroupTokens.buttonLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${buttonGroupTokens.buttonLineHeight}: var(--plasma-typo-body-s-line-height); + `, + xs: css` + ${buttonGroupTokens.buttonSegmentedRadius}: 0.125rem; + ${buttonGroupTokens.buttonDefaultRadius}: ${roundedRadius}; + ${buttonGroupTokens.buttonSideRadius}: ${roundedRadius}; + + ${buttonGroupTokens.buttonHeight}: 2rem; + ${buttonGroupTokens.buttonPadding}: 0.75rem; + ${buttonGroupTokens.buttonFontFamily}: var(--plasma-typo-body-xs-font-family); + ${buttonGroupTokens.buttonFontSize}: var(--plasma-typo-body-xs-font-size); + ${buttonGroupTokens.buttonFontStyle}: var(--plasma-typo-body-xs-font-style); + ${buttonGroupTokens.buttonFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${buttonGroupTokens.buttonLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${buttonGroupTokens.buttonLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + xsr: css` + ${buttonGroupTokens.buttonSegmentedRadius}: 0.125rem; + ${buttonGroupTokens.buttonDefaultRadius}: ${roundedRadius}; + ${buttonGroupTokens.buttonSideRadius}: ${roundedRadius}; + + ${buttonGroupTokens.buttonHeight}: 2rem; + ${buttonGroupTokens.buttonFontFamily}: var(--plasma-typo-body-xs-font-family); + ${buttonGroupTokens.buttonFontSize}: var(--plasma-typo-body-xs-font-size); + ${buttonGroupTokens.buttonFontStyle}: var(--plasma-typo-body-xs-font-style); + ${buttonGroupTokens.buttonFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${buttonGroupTokens.buttonLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${buttonGroupTokens.buttonLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + xxs: css` + ${buttonGroupTokens.buttonSegmentedRadius}: 0.125rem; + ${buttonGroupTokens.buttonDefaultRadius}: ${roundedRadius}; + ${buttonGroupTokens.buttonSideRadius}: ${roundedRadius}; + + ${buttonGroupTokens.buttonHeight}: 1.5rem; + ${buttonGroupTokens.buttonPadding}: 0.625rem; + ${buttonGroupTokens.buttonFontFamily}: var(--plasma-typo-body-xs-font-family); + ${buttonGroupTokens.buttonFontSize}: var(--plasma-typo-body-xs-font-size); + ${buttonGroupTokens.buttonFontStyle}: var(--plasma-typo-body-xs-font-style); + ${buttonGroupTokens.buttonFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${buttonGroupTokens.buttonLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${buttonGroupTokens.buttonLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + }, + orientation: { + horizontal: css` + ${buttonGroupTokens.buttonGroupOrientation}: row; + `, + vertical: css` + ${buttonGroupTokens.buttonGroupOrientation}: column; + `, + }, + gap: { + none: css` + ${buttonGroupTokens.buttonGroupItemsGap}: 0; + `, + dense: css` + ${buttonGroupTokens.buttonGroupItemsGap}: 0.125rem; + `, + wide: css` + ${buttonGroupTokens.buttonGroupItemsGap}: 0.5rem; + `, + }, + shape: { + segmented: css``, + default: css``, + }, + stretching: { + auto: css``, + filled: css``, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/ButtonGroup/ButtonGroup.stories.tsx b/packages/plasma-giga/src/components/ButtonGroup/ButtonGroup.stories.tsx new file mode 100644 index 0000000000..f4b37607d2 --- /dev/null +++ b/packages/plasma-giga/src/components/ButtonGroup/ButtonGroup.stories.tsx @@ -0,0 +1,117 @@ +import React from 'react'; +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { disableProps, InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { Button } from '../Button/Button'; + +import { ButtonGroup } from './ButtonGroup'; + +type StoryProps = ComponentProps<typeof ButtonGroup> & { itemsCount?: number }; +type Story = StoryObj<StoryProps>; + +const views = ['accent', 'default', 'secondary', 'success', 'warning', 'critical', 'clear']; +const sizes = ['l', 'm', 's', 'xs', 'xxs']; +const orientationValues = ['horizontal', 'vertical']; +const gapValues = ['none', 'dense', 'wide']; +const shapeValues = ['segmented', 'default']; +const stretchingValues = ['auto', 'filled']; + +const meta: Meta<typeof ButtonGroup> = { + title: 'Data Entry/ButtonGroup', + decorators: [InSpacingDecorator], + argTypes: { + size: { + options: sizes, + control: { + type: 'select', + }, + }, + view: { + options: views, + control: { + type: 'select', + }, + }, + orientation: { + options: orientationValues, + control: { + type: 'inline-radio', + }, + }, + gap: { + options: gapValues, + control: { + type: 'select', + }, + }, + shape: { + options: shapeValues, + control: { + type: 'select', + }, + }, + stretching: { + options: stretchingValues, + control: { + type: 'select', + }, + }, + }, +}; + +export default meta; + +export const Default: Story = { + args: { + view: 'default', + size: 'm', + gap: 'dense', + orientation: 'horizontal', + shape: 'default', + itemsCount: 5, + stretching: 'auto', + }, + render: ({ itemsCount, ...args }: StoryProps) => { + return ( + <ButtonGroup {...args}> + {Array(itemsCount) + .fill(true) + .map((_, i) => ( + <Button text={`Button ${i}`} /> + ))} + </ButtonGroup> + ); + }, +}; + +export const CustomButtons: Story = { + args: { + ...Default.args, + isCommonButtonStyles: false, + }, + argTypes: { + ...disableProps(['itemsCount']), + }, + render: (args: StoryProps) => { + return ( + <> + <h3>Группа кнопок с разными темами</h3> + <ButtonGroup {...args}> + <Button text="Primary" view="default" /> + <Button text="Negative" view="success" /> + <Button text="Positive" view="warning" /> + <Button text="Clear" view="clear" /> + </ButtonGroup> + + <h3>Группа кнопок с разными размерами</h3> + <ButtonGroup {...args}> + <Button text="Primary" view="default" size="l" /> + <Button text="Negative" view="success" size="m" /> + <Button text="Positive" view="warning" size="s" /> + <Button text="Clear" view="clear" size="l" /> + </ButtonGroup> + </> + ); + }, +}; diff --git a/packages/plasma-giga/src/components/ButtonGroup/ButtonGroup.tsx b/packages/plasma-giga/src/components/ButtonGroup/ButtonGroup.tsx new file mode 100644 index 0000000000..b59726f4b1 --- /dev/null +++ b/packages/plasma-giga/src/components/ButtonGroup/ButtonGroup.tsx @@ -0,0 +1,10 @@ +import { buttonGroupConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './ButtonGroup.config'; + +const mergedConfig = mergeConfig(buttonGroupConfig, config); + +/** + * Группа кнопок. + */ +export const ButtonGroup = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/ButtonGroup/index.tsx b/packages/plasma-giga/src/components/ButtonGroup/index.tsx new file mode 100644 index 0000000000..890178205b --- /dev/null +++ b/packages/plasma-giga/src/components/ButtonGroup/index.tsx @@ -0,0 +1,3 @@ +export { ButtonGroup } from './ButtonGroup'; + +export type { ButtonGroupProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Calendar/Calendar.stories.tsx b/packages/plasma-giga/src/components/Calendar/Calendar.stories.tsx new file mode 100644 index 0000000000..1426c8686a --- /dev/null +++ b/packages/plasma-giga/src/components/Calendar/Calendar.stories.tsx @@ -0,0 +1,318 @@ +import React, { ComponentProps, useCallback, useRef, useState } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { disableProps, InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { Tabs } from '../Tabs/Tabs'; +import { TabItem } from '../Tabs/TabItem'; +import { H3 } from '../Typography'; + +import { Calendar, CalendarBase, CalendarBaseRange, CalendarDouble, CalendarDoubleRange } from '.'; + +const onChangeValue = action('onChangeValue'); + +const meta: Meta<CalendarProps> = { + title: 'Data Entry/Calendar', + decorators: [InSpacingDecorator], + component: Calendar, + argTypes: { + min: { + control: { + type: 'date', + }, + }, + max: { + control: { + type: 'date', + }, + }, + size: { + options: ['l', 'm', 's', 'xs'], + control: { + type: 'inline-radio', + }, + }, + locale: { + options: ['ru', 'en'], + control: { + type: 'select', + }, + }, + ...disableProps([ + 'value', + 'onChangeValue', + 'date', + 'eventList', + 'disabledList', + 'eventMonthList', + 'disabledMonthList', + 'eventQuarterList', + 'disabledQuarterList', + 'eventYearList', + 'disabledYearList', + 'type', + 'view', + 'onChangeStartOfRange', + ]), + }, +}; + +export default meta; + +type CalendarProps = ComponentProps<typeof Calendar>; +type CalendarBaseProps = ComponentProps<typeof CalendarBase>; +type CalendarBaseRangeProps = ComponentProps<typeof CalendarBaseRange>; +const eventColors = ['red', 'green', 'blue', 'purple']; +const defaultMinDate = new Date(2016, 6, 1); +const defaultMaxDate = new Date(2030, 11, 24); + +const getBaseEvents = (type: 'days' | 'months' | 'quarters' | 'years', datesNumber = 2) => { + const baseDate = { + day: 10, + monthIndex: 6, + year: 2023, + }; + + const colorIndex = Math.floor(Math.random() * eventColors.length); + + const events = [...new Array(datesNumber)].map((_, index) => { + const eventNumber = Math.floor(Math.random() * 3 + 1); + const day = type === 'days' ? baseDate.day + index : 1; + const month = + // eslint-disable-next-line no-nested-ternary + type === 'months' || type === 'quarters' + ? baseDate.monthIndex + index + : type === 'days' + ? baseDate.monthIndex + : 0; + const year = type === 'years' ? baseDate.year + index : baseDate.year; + + return [...new Array(eventNumber)].map(() => { + return { date: new Date(year, month, day), color: eventColors[colorIndex] }; + }); + }); + + return events.flat(); +}; + +const StoryDefault = (args: CalendarProps) => { + const { isRange, isDouble, min, max, date, includeEdgeDates, size, locale } = args; + const [value, setValue] = useState(new Date(2023, 10, 16)); + const [valueRange, setValueRange] = useState<[Date, Date?]>([new Date(2023, 10, 16), new Date(2023, 10, 23)]); + + const handleOnChange = useCallback((newValue: Date) => { + setValue(newValue); + onChangeValue(newValue); + }, []); + const handleOnRangeChange = useCallback((newValue: [Date, Date?]) => { + setValueRange(newValue); + }, []); + + return ( + <Calendar + size={size} + isRange={isRange} + isDouble={isDouble} + date={date} + value={(isRange ? valueRange : value) as Date & [Date, Date?]} + min={min} + max={max} + includeEdgeDates={includeEdgeDates} + locale={locale} + onChangeValue={(isRange ? handleOnRangeChange : handleOnChange) as (value: Date | [Date, Date?]) => void} + /> + ); +}; + +export const Default: StoryObj<CalendarProps> = { + args: { + min: new Date(2023, 10, 1), + max: new Date(2023, 11, 24), + isDouble: false, + isRange: false, + includeEdgeDates: false, + size: 'm', + locale: 'ru', + }, + render: (args) => <StoryDefault {...args} />, +}; + +const StoryBase = (args: CalendarBaseProps & { displayDouble: boolean }) => { + const { min, max, includeEdgeDates, size, displayDouble, locale } = args; + const [value, setValue] = useState(new Date(2023, 6, 7)); + const [currentState, setCurrentState] = useState('Days'); + + const handleOnChange = useCallback((newValue: Date, dateInfo?: unknown) => { + setValue(newValue); + onChangeValue(newValue, dateInfo); + }, []); + + const eventList = useRef(getBaseEvents('days', 5)); + const eventMonthList = useRef(getBaseEvents('months', 5)); + const eventQuarterList = useRef(getBaseEvents('quarters')); + const eventYearList = useRef(getBaseEvents('years')); + + const disabledDays = [...new Array(5)].map((_, day) => ({ + date: new Date(2023, 6, 23 + day), + })); + + const getCalendarComponent = ({ type, ...rest }) => { + return displayDouble ? ( + <CalendarDouble + size={size} + value={value} + min={min} + max={max} + includeEdgeDates={includeEdgeDates} + type={type} + onChangeValue={handleOnChange} + locale={locale} + {...rest} + /> + ) : ( + <CalendarBase + size={size} + value={value} + min={min} + max={max} + includeEdgeDates={includeEdgeDates} + type={type} + onChangeValue={handleOnChange} + locale={locale} + {...rest} + /> + ); + }; + + const calendarMap = { + Days: getCalendarComponent({ type: 'Days', eventList: eventList.current, disabledList: disabledDays }), + Months: getCalendarComponent({ type: 'Months', eventMonthList: eventMonthList.current }), + Quarters: getCalendarComponent({ type: 'Quarters', eventQuarterList: eventQuarterList.current }), + Years: getCalendarComponent({ type: 'Years', eventYearList: eventYearList.current }), + }; + + return ( + <> + <H3>Тип календаря</H3> + <Tabs view="default" size="m"> + {Object.keys(calendarMap).map((state, i) => ( + <TabItem + key={`item:${i}`} + view="divider" + selected={state === currentState} + onClick={() => setCurrentState(state)} + size="m" + > + {state} + </TabItem> + ))} + </Tabs> + <div style={{ marginTop: '1rem' }}>{calendarMap[currentState]}</div> + </> + ); +}; + +export const Base: StoryObj<CalendarBaseProps & { displayDouble: boolean }> = { + argTypes: { + ...disableProps(['isRange', 'isDouble']), + }, + args: { + size: 'm', + min: defaultMinDate, + max: defaultMaxDate, + includeEdgeDates: false, + displayDouble: false, + locale: 'ru', + }, + render: (args) => <StoryBase {...args} />, +}; + +const StoryRange = (args: CalendarBaseRangeProps & { displayDouble: boolean }) => { + const { min, max, includeEdgeDates, size, displayDouble, locale } = args; + const [values, setValue] = useState<[Date, Date?]>([new Date(2023, 6, 1), new Date(2023, 6, 16)]); + const [currentState, setCurrentState] = useState('Days'); + + const handleOnChange = (newValue: [Date, Date?], dateInfo) => { + onChangeValue(newValue, dateInfo); + setValue(newValue); + }; + + const eventList = useRef(getBaseEvents('days', 5)); + const eventMonthList = useRef(getBaseEvents('months', 5)); + const eventQuarterList = useRef(getBaseEvents('quarters')); + const eventYearList = useRef(getBaseEvents('years')); + + const disabledDays = [...new Array(5)].map((_, day) => ({ + date: new Date(2023, 6, 23 + day), + })); + + const getCalendarComponent = ({ type, ...rest }) => { + return displayDouble ? ( + <CalendarBaseRange + size={size} + value={values} + min={min} + max={max} + includeEdgeDates={includeEdgeDates} + type={type} + onChangeValue={handleOnChange} + locale={locale} + {...rest} + /> + ) : ( + <CalendarDoubleRange + size={size} + value={values} + min={min} + max={max} + includeEdgeDates={includeEdgeDates} + type={type} + onChangeValue={handleOnChange} + locale={locale} + {...rest} + /> + ); + }; + + const calendarMap = { + Days: getCalendarComponent({ type: 'Days', eventList: eventList.current, disabledList: disabledDays }), + Months: getCalendarComponent({ type: 'Months', eventMonthList: eventMonthList.current }), + Quarters: getCalendarComponent({ type: 'Quarters', eventQuarterList: eventQuarterList.current }), + Years: getCalendarComponent({ type: 'Years', eventYearList: eventYearList.current }), + }; + + return ( + <> + <H3>Тип календаря</H3> + <Tabs view="default" size="m"> + {Object.keys(calendarMap).map((state, i) => ( + <TabItem + key={`item:${i}`} + view="divider" + selected={state === currentState} + onClick={() => setCurrentState(state)} + size="m" + > + {state} + </TabItem> + ))} + </Tabs> + <div style={{ marginTop: '1rem' }}>{calendarMap[currentState]}</div> + </> + ); +}; + +export const Range: StoryObj<CalendarBaseRangeProps & { displayDouble: boolean }> = { + argTypes: { + ...disableProps(['isRange', 'isDouble']), + }, + args: { + size: 'm', + min: defaultMinDate, + max: defaultMaxDate, + includeEdgeDates: false, + displayDouble: false, + locale: 'ru', + }, + render: (args) => <StoryRange {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Calendar/Calendar.tsx b/packages/plasma-giga/src/components/Calendar/Calendar.tsx new file mode 100644 index 0000000000..934169ea04 --- /dev/null +++ b/packages/plasma-giga/src/components/Calendar/Calendar.tsx @@ -0,0 +1,31 @@ +import type { FC } from 'react'; +import { + component, + calendarBaseConfig, + calendarDoubleConfig, + withRange, + mergeConfig, + boundCalendar, + CalendarStateType, +} from '@salutejs/plasma-new-hope/styled-components'; +import type { CalendarBaseProps, CalendarDoubleProps } from '@salutejs/plasma-new-hope/styled-components'; + +import { config as baseConfig } from './CalendarBase.config'; +import { config as doubleConfig } from './CalendarDouble.config'; + +const mergedCalendarBaseConfig = mergeConfig(calendarBaseConfig, baseConfig); +const mergedCalendarDoubleConfig = mergeConfig(calendarDoubleConfig, doubleConfig); + +export const CalendarBase = component(mergedCalendarBaseConfig); +export const CalendarDouble = component(mergedCalendarDoubleConfig); +export const CalendarBaseRange = withRange<CalendarBaseProps>(CalendarBase); +export const CalendarDoubleRange = withRange<CalendarDoubleProps>(CalendarDouble); + +export const Calendar = boundCalendar({ + base: CalendarBase as FC<CalendarBaseProps>, + baseRange: CalendarBaseRange, + double: CalendarDouble as FC<CalendarDoubleProps>, + doubleRange: CalendarDoubleRange, +}); + +export type { CalendarStateType }; diff --git a/packages/plasma-giga/src/components/Calendar/CalendarBase.config.ts b/packages/plasma-giga/src/components/Calendar/CalendarBase.config.ts new file mode 100644 index 0000000000..66788fe17c --- /dev/null +++ b/packages/plasma-giga/src/components/Calendar/CalendarBase.config.ts @@ -0,0 +1,346 @@ +import { css, calendarBaseTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + view: { + default: css` + ${calendarBaseTokens.calendarSelectedItemBackground}: var(--surface-solid-default); + ${calendarBaseTokens.calendarSelectedItemColor}: var(--inverse-text-primary); + ${calendarBaseTokens.calendarSelectableItemBackgroundHover}: var(--surface-transparent-secondary); + ${calendarBaseTokens.calendarCurrentItemBorderColor}: var(--surface-solid-default); + ${calendarBaseTokens.calendarCurrentItemBackgroundHover}: transparent; + ${calendarBaseTokens.calendarCurrentItemColorHover}: var(--text-primary); + ${calendarBaseTokens.calendarCurrentItemChildBackgroundHover}: var(--surface-transparent-secondary); + ${calendarBaseTokens.calendarActiveItemBackground}: var(--surface-solid-default); + ${calendarBaseTokens.calendarActiveItemColor}: var(--inverse-text-primary); + ${calendarBaseTokens.calendarHoveredItemBackground}: var(--surface-accent); + ${calendarBaseTokens.calendarHoveredItemColor}: var(--text-primary); + ${calendarBaseTokens.calendarRangeBackground}: var(--surface-transparent-secondary); + ${calendarBaseTokens.calendarOutlineFocusColor}: var(--surface-accent); + ${calendarBaseTokens.calendarContentPrimaryColor}: var(--surface-solid-default); + ${calendarBaseTokens.calendarContentSecondaryColor}: var(--text-secondary); + ${calendarBaseTokens.calendarHeaderArrowColor}: ${calendarBaseTokens.calendarContentPrimaryColor}; + ${calendarBaseTokens.calendarDayOfWeekColor}: var(--text-secondary); + ${calendarBaseTokens.calendarDisabledOpacity}: 0.4; + + ${calendarBaseTokens.iconButtonColor}: var(--text-primary); + ${calendarBaseTokens.iconButtonBackgroundColor}: var(--surface-clear); + ${calendarBaseTokens.iconButtonColorHover}: var(--text-primary-hover); + ${calendarBaseTokens.iconButtonBackgroundColorHover}: var(--surface-clear); + ${calendarBaseTokens.iconButtonColorActive}: var(--text-primary-hover); + ${calendarBaseTokens.iconButtonBackgroundColorActive}: var(--surface-clear); + ${calendarBaseTokens.iconButtonFocusColor}: var(--surface-accent); + `, + }, + size: { + l: css` + ${calendarBaseTokens.calendarWidth}: 24.5rem; + ${calendarBaseTokens.calendarHeight}: 25rem; + + ${calendarBaseTokens.calendarYearsPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarBaseTokens.calendarYearItemBorderRadius}: 0.75rem; + ${calendarBaseTokens.calendarYearItemWidth}: 7.8125rem; + ${calendarBaseTokens.calendarYearItemHeight}: 5.25rem; + + ${calendarBaseTokens.calendarYearFontFamily}: var(--plasma-typo-body-l-font-family); + ${calendarBaseTokens.calendarYearFontSize}: var(--plasma-typo-body-l-font-size); + ${calendarBaseTokens.calendarYearFontStyle}: var(--plasma-typo-body-l-font-style); + ${calendarBaseTokens.calendarYearFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${calendarBaseTokens.calendarYearFontLineHeight}: var(--plasma-typo-body-l-line-height); + ${calendarBaseTokens.calendarYearFontWeight}: var(--plasma-typo-body-l-font-weight); + ${calendarBaseTokens.calendarYearSelectedFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + + ${calendarBaseTokens.calendarQuartersPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarBaseTokens.calendarQuarterItemBorderRadius}: 0.75rem; + ${calendarBaseTokens.calendarQuarterItemWidth}: 11.75rem; + ${calendarBaseTokens.calendarQuarterItemHeight}: 10.5rem; + + ${calendarBaseTokens.calendarQuarterFontFamily}: var(--plasma-typo-body-l-font-family); + ${calendarBaseTokens.calendarQuarterFontSize}: var(--plasma-typo-body-l-font-size); + ${calendarBaseTokens.calendarQuarterFontStyle}: var(--plasma-typo-body-l-font-style); + ${calendarBaseTokens.calendarQuarterFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${calendarBaseTokens.calendarQuarterFontLineHeight}: var(--plasma-typo-body-l-line-height); + ${calendarBaseTokens.calendarQuarterFontWeight}: var(--plasma-typo-body-l-font-weight); + ${calendarBaseTokens.calendarQuarterSelectedFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + + ${calendarBaseTokens.calendarMonthsPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarBaseTokens.calendarMonthItemBorderRadius}: 0.75rem; + ${calendarBaseTokens.calendarMonthItemWidth}: 7.8125rem; + ${calendarBaseTokens.calendarMonthItemHeight}: 5.25rem; + + ${calendarBaseTokens.calendarMonthFontFamily}: var(--plasma-typo-body-l-font-family); + ${calendarBaseTokens.calendarMonthFontSize}: var(--plasma-typo-body-l-font-size); + ${calendarBaseTokens.calendarMonthFontStyle}: var(--plasma-typo-body-l-font-style); + ${calendarBaseTokens.calendarMonthFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${calendarBaseTokens.calendarMonthFontLineHeight}: var(--plasma-typo-body-l-line-height); + ${calendarBaseTokens.calendarMonthFontWeight}: var(--plasma-typo-body-l-font-weight); + ${calendarBaseTokens.calendarMonthSelectedFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + + ${calendarBaseTokens.calendarDaysPadding}: 0.5rem 0 0 0; + ${calendarBaseTokens.calendarDayItemBorderRadius}: 0.75rem; + ${calendarBaseTokens.calendarDayItemWidth}: 3.5rem; + ${calendarBaseTokens.calendarDayItemHeight}: 3rem; + + ${calendarBaseTokens.calendarDayFontFamily}: var(--plasma-typo-body-l-font-family); + ${calendarBaseTokens.calendarDayFontSize}: var(--plasma-typo-body-l-font-size); + ${calendarBaseTokens.calendarDayFontStyle}: var(--plasma-typo-body-l-font-style); + ${calendarBaseTokens.calendarDayFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${calendarBaseTokens.calendarDayFontLineHeight}: var(--plasma-typo-body-l-line-height); + ${calendarBaseTokens.calendarDayFontWeight}: var(--plasma-typo-body-l-font-weight); + ${calendarBaseTokens.calendarDaySelectedFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + + ${calendarBaseTokens.calendarCurrentItemBorderWidth}: 0.063rem; + + ${calendarBaseTokens.calendarHeaderArrowGap}: 0.5rem; + + ${calendarBaseTokens.calendarHeaderPadding}: 0 0 0 1rem; + ${calendarBaseTokens.calendarHeaderDateGap}: 0.5rem; + + ${calendarBaseTokens.calendarHeaderFontFamily}: var(--plasma-typo-h4-font-family); + ${calendarBaseTokens.calendarHeaderFontSize}: var(--plasma-typo-h4-font-size); + ${calendarBaseTokens.calendarHeaderFontStyle}: var(--plasma-typo-h4-font-style); + ${calendarBaseTokens.calendarHeaderFontLetterSpacing}: var(--plasma-typo-h4-letter-spacing); + ${calendarBaseTokens.calendarHeaderFontLineHeight}: var(--plasma-typo-h4-line-height); + ${calendarBaseTokens.calendarHeaderFontWeight}: var(--plasma-typo-h4-font-weight); + ${calendarBaseTokens.calendarHeaderFontWeightBold}: var(--plasma-typo-h4-bold-font-weight); + + ${calendarBaseTokens.iconButtonHeight}: 3.5rem; + ${calendarBaseTokens.iconButtonWidth}: 3.5rem; + ${calendarBaseTokens.iconButtonPadding}: 1.5rem; + ${calendarBaseTokens.iconButtonRadius}: 0.875rem; + `, + m: css` + ${calendarBaseTokens.calendarWidth}: 21rem; + ${calendarBaseTokens.calendarHeight}: 21rem; + + ${calendarBaseTokens.calendarYearsPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarBaseTokens.calendarYearItemBorderRadius}: 0.625rem; + ${calendarBaseTokens.calendarYearItemWidth}: 6.688rem; + ${calendarBaseTokens.calendarYearItemHeight}: 4.375rem; + + ${calendarBaseTokens.calendarYearFontFamily}: var(--plasma-typo-body-m-font-family); + ${calendarBaseTokens.calendarYearFontSize}: var(--plasma-typo-body-m-font-size); + ${calendarBaseTokens.calendarYearFontStyle}: var(--plasma-typo-body-m-font-style); + ${calendarBaseTokens.calendarYearFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${calendarBaseTokens.calendarYearFontLineHeight}: var(--plasma-typo-body-m-line-height); + ${calendarBaseTokens.calendarYearFontWeight}: var(--plasma-typo-body-m-font-weight); + ${calendarBaseTokens.calendarYearSelectedFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + + ${calendarBaseTokens.calendarQuartersPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarBaseTokens.calendarQuarterItemBorderRadius}: 0.625rem; + ${calendarBaseTokens.calendarQuarterItemWidth}: 10rem; + ${calendarBaseTokens.calendarQuarterItemHeight}: 8.5rem; + + ${calendarBaseTokens.calendarQuarterFontFamily}: var(--plasma-typo-body-m-font-family); + ${calendarBaseTokens.calendarQuarterFontSize}: var(--plasma-typo-body-m-font-size); + ${calendarBaseTokens.calendarQuarterFontStyle}: var(--plasma-typo-body-m-font-style); + ${calendarBaseTokens.calendarQuarterFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${calendarBaseTokens.calendarQuarterFontLineHeight}: var(--plasma-typo-body-m-line-height); + ${calendarBaseTokens.calendarQuarterFontWeight}: var(--plasma-typo-body-m-font-weight); + ${calendarBaseTokens.calendarQuarterSelectedFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + + ${calendarBaseTokens.calendarMonthsPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarBaseTokens.calendarMonthItemBorderRadius}: 0.625rem; + ${calendarBaseTokens.calendarMonthItemWidth}: 6.688rem; + ${calendarBaseTokens.calendarMonthItemHeight}: 4.375rem; + + ${calendarBaseTokens.calendarMonthFontFamily}: var(--plasma-typo-body-m-font-family); + ${calendarBaseTokens.calendarMonthFontSize}: var(--plasma-typo-body-m-font-size); + ${calendarBaseTokens.calendarMonthFontStyle}: var(--plasma-typo-body-m-font-style); + ${calendarBaseTokens.calendarMonthFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${calendarBaseTokens.calendarMonthFontLineHeight}: var(--plasma-typo-body-m-line-height); + ${calendarBaseTokens.calendarMonthFontWeight}: var(--plasma-typo-body-m-font-weight); + ${calendarBaseTokens.calendarMonthSelectedFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + + ${calendarBaseTokens.calendarDaysPadding}: 0.5rem 0 0 0; + ${calendarBaseTokens.calendarDayItemBorderRadius}: 0.625rem; + ${calendarBaseTokens.calendarDayItemWidth}: 3rem; + ${calendarBaseTokens.calendarDayItemHeight}: 2.5rem; + + ${calendarBaseTokens.calendarDayFontFamily}: var(--plasma-typo-body-m-font-family); + ${calendarBaseTokens.calendarDayFontSize}: var(--plasma-typo-body-m-font-size); + ${calendarBaseTokens.calendarDayFontStyle}: var(--plasma-typo-body-m-font-style); + ${calendarBaseTokens.calendarDayFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${calendarBaseTokens.calendarDayFontLineHeight}: var(--plasma-typo-body-m-line-height); + ${calendarBaseTokens.calendarDayFontWeight}: var(--plasma-typo-body-m-font-weight); + ${calendarBaseTokens.calendarDaySelectedFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + + ${calendarBaseTokens.calendarCurrentItemBorderWidth}: 0.063rem; + + ${calendarBaseTokens.calendarHeaderArrowGap}: 0.5rem; + + ${calendarBaseTokens.calendarHeaderPadding}: 0 0 0 0.75rem; + ${calendarBaseTokens.calendarHeaderDateGap}: 0.375rem; + + ${calendarBaseTokens.calendarHeaderFontFamily}: var(--plasma-typo-h4-font-family); + ${calendarBaseTokens.calendarHeaderFontSize}: var(--plasma-typo-h4-font-size); + ${calendarBaseTokens.calendarHeaderFontStyle}: var(--plasma-typo-h4-font-style); + ${calendarBaseTokens.calendarHeaderFontLetterSpacing}: var(--plasma-typo-h4-letter-spacing); + ${calendarBaseTokens.calendarHeaderFontLineHeight}: var(--plasma-typo-h4-line-height); + ${calendarBaseTokens.calendarHeaderFontWeight}: var(--plasma-typo-h4-font-weight); + ${calendarBaseTokens.calendarHeaderFontWeightBold}: var(--plasma-typo-h4-bold-font-weight); + + ${calendarBaseTokens.iconButtonHeight}: 3rem; + ${calendarBaseTokens.iconButtonWidth}: 3rem; + ${calendarBaseTokens.iconButtonPadding}: 1.25rem; + ${calendarBaseTokens.iconButtonRadius}: 0.75rem; + `, + s: css` + ${calendarBaseTokens.calendarWidth}: 17.5rem; + ${calendarBaseTokens.calendarHeight}: 17rem; + + ${calendarBaseTokens.calendarYearsPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarBaseTokens.calendarYearItemBorderRadius}: 0.5rem; + ${calendarBaseTokens.calendarYearItemWidth}: 5.5rem; + ${calendarBaseTokens.calendarYearItemHeight}: 3.5rem; + + ${calendarBaseTokens.calendarYearFontFamily}: var(--plasma-typo-body-s-font-family); + ${calendarBaseTokens.calendarYearFontSize}: var(--plasma-typo-body-s-font-size); + ${calendarBaseTokens.calendarYearFontStyle}: var(--plasma-typo-body-s-font-style); + ${calendarBaseTokens.calendarYearFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${calendarBaseTokens.calendarYearFontLineHeight}: var(--plasma-typo-body-s-line-height); + ${calendarBaseTokens.calendarYearFontWeight}: var(--plasma-typo-body-s-font-weight); + ${calendarBaseTokens.calendarYearSelectedFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + + ${calendarBaseTokens.calendarQuartersPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarBaseTokens.calendarQuarterItemBorderRadius}: 0.5rem; + ${calendarBaseTokens.calendarQuarterItemWidth}: 8.25rem; + ${calendarBaseTokens.calendarQuarterItemHeight}: 7rem; + + ${calendarBaseTokens.calendarQuarterFontFamily}: var(--plasma-typo-body-s-font-family); + ${calendarBaseTokens.calendarQuarterFontSize}: var(--plasma-typo-body-s-font-size); + ${calendarBaseTokens.calendarQuarterFontStyle}: var(--plasma-typo-body-s-font-style); + ${calendarBaseTokens.calendarQuarterFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${calendarBaseTokens.calendarQuarterFontLineHeight}: var(--plasma-typo-body-s-line-height); + ${calendarBaseTokens.calendarQuarterFontWeight}: var(--plasma-typo-body-s-font-weight); + ${calendarBaseTokens.calendarQuarterSelectedFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + + ${calendarBaseTokens.calendarMonthsPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarBaseTokens.calendarMonthItemBorderRadius}: 0.5rem; + ${calendarBaseTokens.calendarMonthItemWidth}: 5.5rem; + ${calendarBaseTokens.calendarMonthItemHeight}: 3.5rem; + + ${calendarBaseTokens.calendarMonthFontFamily}: var(--plasma-typo-body-s-font-family); + ${calendarBaseTokens.calendarMonthFontSize}: var(--plasma-typo-body-s-font-size); + ${calendarBaseTokens.calendarMonthFontStyle}: var(--plasma-typo-body-s-font-style); + ${calendarBaseTokens.calendarMonthFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${calendarBaseTokens.calendarMonthFontLineHeight}: var(--plasma-typo-body-s-line-height); + ${calendarBaseTokens.calendarMonthFontWeight}: var(--plasma-typo-body-s-font-weight); + ${calendarBaseTokens.calendarMonthSelectedFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + + ${calendarBaseTokens.calendarDaysPadding}: 0.5rem 0 0 0; + ${calendarBaseTokens.calendarDayItemBorderRadius}: 0.5rem; + ${calendarBaseTokens.calendarDayItemWidth}: 2.5rem; + ${calendarBaseTokens.calendarDayItemHeight}: 2rem; + + ${calendarBaseTokens.calendarDayFontFamily}: var(--plasma-typo-body-s-font-family); + ${calendarBaseTokens.calendarDayFontSize}: var(--plasma-typo-body-s-font-size); + ${calendarBaseTokens.calendarDayFontStyle}: var(--plasma-typo-body-s-font-style); + ${calendarBaseTokens.calendarDayFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${calendarBaseTokens.calendarDayFontLineHeight}: var(--plasma-typo-body-s-line-height); + ${calendarBaseTokens.calendarDayFontWeight}: var(--plasma-typo-body-s-font-weight); + ${calendarBaseTokens.calendarDaySelectedFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + + ${calendarBaseTokens.calendarCurrentItemBorderWidth}: 0.063rem; + + ${calendarBaseTokens.calendarHeaderArrowGap}: 0.5rem; + + ${calendarBaseTokens.calendarHeaderPadding}: 0 0 0 0.5rem; + ${calendarBaseTokens.calendarHeaderDateGap}: 0.25rem; + + ${calendarBaseTokens.calendarHeaderFontFamily}: var(--plasma-typo-h4-font-family); + ${calendarBaseTokens.calendarHeaderFontSize}: var(--plasma-typo-h4-font-size); + ${calendarBaseTokens.calendarHeaderFontStyle}: var(--plasma-typo-h4-font-style); + ${calendarBaseTokens.calendarHeaderFontLetterSpacing}: var(--plasma-typo-h4-letter-spacing); + ${calendarBaseTokens.calendarHeaderFontLineHeight}: var(--plasma-typo-h4-line-height); + ${calendarBaseTokens.calendarHeaderFontWeight}: var(--plasma-typo-h4-font-weight); + ${calendarBaseTokens.calendarHeaderFontWeightBold}: var(--plasma-typo-h4-bold-font-weight); + + ${calendarBaseTokens.iconButtonHeight}: 2.5rem; + ${calendarBaseTokens.iconButtonWidth}: 2.5rem; + ${calendarBaseTokens.iconButtonPadding}: 1rem; + ${calendarBaseTokens.iconButtonRadius}: 0.625rem; + `, + xs: css` + ${calendarBaseTokens.calendarWidth}: 17.5rem; + ${calendarBaseTokens.calendarHeight}: 15.5rem; + + ${calendarBaseTokens.calendarYearsPadding}: 0.375rem 0.25rem 0 0.25rem; + ${calendarBaseTokens.calendarYearItemBorderRadius}: 0.375rem; + ${calendarBaseTokens.calendarYearItemWidth}: 5.625rem; + ${calendarBaseTokens.calendarYearItemHeight}: 3.281rem; + + ${calendarBaseTokens.calendarYearFontFamily}: var(--plasma-typo-body-xs-font-family); + ${calendarBaseTokens.calendarYearFontSize}: var(--plasma-typo-body-xs-font-size); + ${calendarBaseTokens.calendarYearFontStyle}: var(--plasma-typo-body-xs-font-style); + ${calendarBaseTokens.calendarYearFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${calendarBaseTokens.calendarYearFontLineHeight}: var(--plasma-typo-body-xs-line-height); + ${calendarBaseTokens.calendarYearFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${calendarBaseTokens.calendarYearSelectedFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + + ${calendarBaseTokens.calendarQuartersPadding}: 0.375rem 0.25rem 0 0.25rem; + ${calendarBaseTokens.calendarQuarterItemBorderRadius}: 0.375rem; + ${calendarBaseTokens.calendarQuarterItemWidth}: 8.25rem; + ${calendarBaseTokens.calendarQuarterItemHeight}: 6.563rem; + + ${calendarBaseTokens.calendarQuarterFontFamily}: var(--plasma-typo-body-xs-font-family); + ${calendarBaseTokens.calendarQuarterFontSize}: var(--plasma-typo-body-xs-font-size); + ${calendarBaseTokens.calendarQuarterFontStyle}: var(--plasma-typo-body-xs-font-style); + ${calendarBaseTokens.calendarQuarterFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${calendarBaseTokens.calendarQuarterFontLineHeight}: var(--plasma-typo-body-xs-line-height); + ${calendarBaseTokens.calendarQuarterFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${calendarBaseTokens.calendarQuarterSelectedFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + + ${calendarBaseTokens.calendarMonthsPadding}: 0.375rem 0.25rem 0 0.25rem; + ${calendarBaseTokens.calendarMonthItemBorderRadius}: 0.375rem; + ${calendarBaseTokens.calendarMonthItemWidth}: 5.625rem; + ${calendarBaseTokens.calendarMonthItemHeight}: 3.281rem; + + ${calendarBaseTokens.calendarMonthFontFamily}: var(--plasma-typo-body-xs-font-family); + ${calendarBaseTokens.calendarMonthFontSize}: var(--plasma-typo-body-xs-font-size); + ${calendarBaseTokens.calendarMonthFontStyle}: var(--plasma-typo-body-xs-font-style); + ${calendarBaseTokens.calendarMonthFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${calendarBaseTokens.calendarMonthFontLineHeight}: var(--plasma-typo-body-xs-line-height); + ${calendarBaseTokens.calendarMonthFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${calendarBaseTokens.calendarMonthSelectedFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + + ${calendarBaseTokens.calendarDaysPadding}: 0.375rem 0 0 0; + ${calendarBaseTokens.calendarDayItemBorderRadius}: 0.5rem; + ${calendarBaseTokens.calendarDayItemWidth}: 2.5rem; + ${calendarBaseTokens.calendarDayItemHeight}: 1.875rem; + + ${calendarBaseTokens.calendarDayFontFamily}: var(--plasma-typo-body-xs-font-family); + ${calendarBaseTokens.calendarDayFontSize}: var(--plasma-typo-body-xs-font-size); + ${calendarBaseTokens.calendarDayFontStyle}: var(--plasma-typo-body-xs-font-style); + ${calendarBaseTokens.calendarDayFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${calendarBaseTokens.calendarDayFontLineHeight}: var(--plasma-typo-body-xs-line-height); + ${calendarBaseTokens.calendarDayFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${calendarBaseTokens.calendarDaySelectedFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + + ${calendarBaseTokens.calendarCurrentItemBorderWidth}: 0.063rem; + + ${calendarBaseTokens.calendarHeaderArrowGap}: 0; + + ${calendarBaseTokens.calendarHeaderPadding}: 0 0 0 0.5rem; + ${calendarBaseTokens.calendarHeaderDateGap}: 0.25rem; + + ${calendarBaseTokens.calendarHeaderFontFamily}: var(--plasma-typo-h5-font-family); + ${calendarBaseTokens.calendarHeaderFontSize}: var(--plasma-typo-h5-font-size); + ${calendarBaseTokens.calendarHeaderFontStyle}: var(--plasma-typo-h5-font-style); + ${calendarBaseTokens.calendarHeaderFontLetterSpacing}: var(--plasma-typo-h5-letter-spacing); + ${calendarBaseTokens.calendarHeaderFontLineHeight}: var(--plasma-typo-h5-line-height); + ${calendarBaseTokens.calendarHeaderFontWeight}: var(--plasma-typo-h5-font-weight); + ${calendarBaseTokens.calendarHeaderFontWeightBold}: var(--plasma-typo-h5-bold-font-weight); + + ${calendarBaseTokens.iconButtonHeight}: 2rem; + ${calendarBaseTokens.iconButtonWidth}: 2rem; + ${calendarBaseTokens.iconButtonPadding}: 0.75rem; + ${calendarBaseTokens.iconButtonRadius}: 0.5rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Calendar/CalendarDouble.config.ts b/packages/plasma-giga/src/components/Calendar/CalendarDouble.config.ts new file mode 100644 index 0000000000..1bafa988a4 --- /dev/null +++ b/packages/plasma-giga/src/components/Calendar/CalendarDouble.config.ts @@ -0,0 +1,348 @@ +import { css, calendarDoubleTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + view: { + default: css` + ${calendarDoubleTokens.calendarSeparatorBackground}: var(--surface-transparent-secondary); + ${calendarDoubleTokens.calendarBackgroundColor}: transparent; + ${calendarDoubleTokens.calendarSelectedItemBackground}: var(--surface-solid-default); + ${calendarDoubleTokens.calendarSelectedItemColor}: var(--inverse-text-primary); + ${calendarDoubleTokens.calendarSelectableItemBackgroundHover}: var(--surface-transparent-secondary); + ${calendarDoubleTokens.calendarCurrentItemBorderColor}: var(--surface-solid-default); + ${calendarDoubleTokens.calendarCurrentItemBackgroundHover}: transparent; + ${calendarDoubleTokens.calendarCurrentItemColorHover}: var(--text-primary); + ${calendarDoubleTokens.calendarCurrentItemChildBackgroundHover}: var(--surface-transparent-secondary); + ${calendarDoubleTokens.calendarActiveItemBackground}: var(--surface-solid-default); + ${calendarDoubleTokens.calendarActiveItemColor}: var(--inverse-text-primary); + ${calendarDoubleTokens.calendarHoveredItemBackground}: var(--surface-accent); + ${calendarDoubleTokens.calendarHoveredItemColor}: var(--text-primary); + ${calendarDoubleTokens.calendarRangeBackground}: var(--surface-transparent-secondary); + ${calendarDoubleTokens.calendarOutlineFocusColor}: var(--surface-accent); + ${calendarDoubleTokens.calendarContentPrimaryColor}: var(--surface-solid-default); + ${calendarDoubleTokens.calendarHeaderArrowColor}: ${calendarDoubleTokens.calendarContentPrimaryColor}; + ${calendarDoubleTokens.calendarContentSecondaryColor}: var(--text-secondary); + ${calendarDoubleTokens.calendarDisabledOpacity}: 0.4; + + ${calendarDoubleTokens.iconButtonColor}: var(--text-primary); + ${calendarDoubleTokens.iconButtonBackgroundColor}: var(--surface-clear); + ${calendarDoubleTokens.iconButtonColorHover}: var(--text-primary-hover); + ${calendarDoubleTokens.iconButtonBackgroundColorHover}: var(--surface-clear); + ${calendarDoubleTokens.iconButtonColorActive}: var(--text-primary-hover); + ${calendarDoubleTokens.iconButtonBackgroundColorActive}: var(--surface-clear); + ${calendarDoubleTokens.iconButtonFocusColor}: var(--surface-accent); + `, + }, + size: { + l: css` + ${calendarDoubleTokens.calendarWidth}: 51.063rem; + ${calendarDoubleTokens.calendarHeight}: 25rem; + + ${calendarDoubleTokens.calendarYearsPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarDoubleTokens.calendarYearItemBorderRadius}: 0.75rem; + ${calendarDoubleTokens.calendarYearItemWidth}: 7.8125rem; + ${calendarDoubleTokens.calendarYearItemHeight}: 5.25rem; + + ${calendarDoubleTokens.calendarYearFontFamily}: var(--plasma-typo-body-l-font-family); + ${calendarDoubleTokens.calendarYearFontSize}: var(--plasma-typo-body-l-font-size); + ${calendarDoubleTokens.calendarYearFontStyle}: var(--plasma-typo-body-l-font-style); + ${calendarDoubleTokens.calendarYearFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${calendarDoubleTokens.calendarYearFontLineHeight}: var(--plasma-typo-body-l-line-height); + ${calendarDoubleTokens.calendarYearFontWeight}: var(--plasma-typo-body-l-font-weight); + ${calendarDoubleTokens.calendarYearSelectedFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + + ${calendarDoubleTokens.calendarQuartersPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarDoubleTokens.calendarQuarterItemBorderRadius}: 0.75rem; + ${calendarDoubleTokens.calendarQuarterItemWidth}: 11.75rem; + ${calendarDoubleTokens.calendarQuarterItemHeight}: 10.5rem; + + ${calendarDoubleTokens.calendarQuarterFontFamily}: var(--plasma-typo-body-l-font-family); + ${calendarDoubleTokens.calendarQuarterFontSize}: var(--plasma-typo-body-l-font-size); + ${calendarDoubleTokens.calendarQuarterFontStyle}: var(--plasma-typo-body-l-font-style); + ${calendarDoubleTokens.calendarQuarterFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${calendarDoubleTokens.calendarQuarterFontLineHeight}: var(--plasma-typo-body-l-line-height); + ${calendarDoubleTokens.calendarQuarterFontWeight}: var(--plasma-typo-body-l-font-weight); + ${calendarDoubleTokens.calendarQuarterSelectedFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + + ${calendarDoubleTokens.calendarMonthsPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarDoubleTokens.calendarMonthItemBorderRadius}: 0.75rem; + ${calendarDoubleTokens.calendarMonthItemWidth}: 7.8125rem; + ${calendarDoubleTokens.calendarMonthItemHeight}: 5.25rem; + + ${calendarDoubleTokens.calendarMonthFontFamily}: var(--plasma-typo-body-l-font-family); + ${calendarDoubleTokens.calendarMonthFontSize}: var(--plasma-typo-body-l-font-size); + ${calendarDoubleTokens.calendarMonthFontStyle}: var(--plasma-typo-body-l-font-style); + ${calendarDoubleTokens.calendarMonthFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${calendarDoubleTokens.calendarMonthFontLineHeight}: var(--plasma-typo-body-l-line-height); + ${calendarDoubleTokens.calendarMonthFontWeight}: var(--plasma-typo-body-l-font-weight); + ${calendarDoubleTokens.calendarMonthSelectedFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + + ${calendarDoubleTokens.calendarDayItemBorderRadius}: 0.75rem; + ${calendarDoubleTokens.calendarDayItemWidth}: 3.5rem; + ${calendarDoubleTokens.calendarDayItemHeight}: 3rem; + + ${calendarDoubleTokens.calendarDayFontFamily}: var(--plasma-typo-body-l-font-family); + ${calendarDoubleTokens.calendarDayFontSize}: var(--plasma-typo-body-l-font-size); + ${calendarDoubleTokens.calendarDayFontStyle}: var(--plasma-typo-body-l-font-style); + ${calendarDoubleTokens.calendarDayFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${calendarDoubleTokens.calendarDayFontLineHeight}: var(--plasma-typo-body-l-line-height); + ${calendarDoubleTokens.calendarDayFontWeight}: var(--plasma-typo-body-l-font-weight); + ${calendarDoubleTokens.calendarDaySelectedFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + + ${calendarDoubleTokens.calendarCurrentItemBorderWidth}: 0.063rem; + + ${calendarDoubleTokens.calendarHeaderArrowGap}: 0.5rem; + + ${calendarDoubleTokens.calendarDaysPadding}: 0.5rem 0 0 0; + ${calendarDoubleTokens.calendarHeaderPadding}: 0 0 0 1rem; + ${calendarDoubleTokens.calendarHeaderDateGap}: 0.5rem; + + ${calendarDoubleTokens.calendarHeaderFontFamily}: var(--plasma-typo-h4-font-family); + ${calendarDoubleTokens.calendarHeaderFontSize}: var(--plasma-typo-h4-font-size); + ${calendarDoubleTokens.calendarHeaderFontStyle}: var(--plasma-typo-h4-font-style); + ${calendarDoubleTokens.calendarHeaderFontLetterSpacing}: var(--plasma-typo-h4-letter-spacing); + ${calendarDoubleTokens.calendarHeaderFontLineHeight}: var(--plasma-typo-h4-line-height); + ${calendarDoubleTokens.calendarHeaderFontWeight}: var(--plasma-typo-h4-font-weight); + ${calendarDoubleTokens.calendarHeaderFontWeightBold}: var(--plasma-typo-h4-bold-font-weight); + + ${calendarDoubleTokens.iconButtonHeight}: 3.5rem; + ${calendarDoubleTokens.iconButtonWidth}: 3.5rem; + ${calendarDoubleTokens.iconButtonPadding}: 1.5rem; + ${calendarDoubleTokens.iconButtonRadius}: 0.875rem; + `, + m: css` + ${calendarDoubleTokens.calendarWidth}: 44.063rem; + ${calendarDoubleTokens.calendarHeight}: 21rem; + + ${calendarDoubleTokens.calendarYearsPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarDoubleTokens.calendarYearItemBorderRadius}: 0.625rem; + ${calendarDoubleTokens.calendarYearItemWidth}: 6.688rem; + ${calendarDoubleTokens.calendarYearItemHeight}: 4.375rem; + + ${calendarDoubleTokens.calendarYearFontFamily}: var(--plasma-typo-body-m-font-family); + ${calendarDoubleTokens.calendarYearFontSize}: var(--plasma-typo-body-m-font-size); + ${calendarDoubleTokens.calendarYearFontStyle}: var(--plasma-typo-body-m-font-style); + ${calendarDoubleTokens.calendarYearFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${calendarDoubleTokens.calendarYearFontLineHeight}: var(--plasma-typo-body-m-line-height); + ${calendarDoubleTokens.calendarYearFontWeight}: var(--plasma-typo-body-m-font-weight); + ${calendarDoubleTokens.calendarYearSelectedFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + + ${calendarDoubleTokens.calendarQuartersPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarDoubleTokens.calendarQuarterItemBorderRadius}: 0.625rem; + ${calendarDoubleTokens.calendarQuarterItemWidth}: 10rem; + ${calendarDoubleTokens.calendarQuarterItemHeight}: 8.5rem; + + ${calendarDoubleTokens.calendarQuarterFontFamily}: var(--plasma-typo-body-m-font-family); + ${calendarDoubleTokens.calendarQuarterFontSize}: var(--plasma-typo-body-m-font-size); + ${calendarDoubleTokens.calendarQuarterFontStyle}: var(--plasma-typo-body-m-font-style); + ${calendarDoubleTokens.calendarQuarterFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${calendarDoubleTokens.calendarQuarterFontLineHeight}: var(--plasma-typo-body-m-line-height); + ${calendarDoubleTokens.calendarQuarterFontWeight}: var(--plasma-typo-body-m-font-weight); + ${calendarDoubleTokens.calendarQuarterSelectedFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + + ${calendarDoubleTokens.calendarMonthsPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarDoubleTokens.calendarMonthItemBorderRadius}: 0.625rem; + ${calendarDoubleTokens.calendarMonthItemWidth}: 6.688rem; + ${calendarDoubleTokens.calendarMonthItemHeight}: 4.375rem; + + ${calendarDoubleTokens.calendarMonthFontFamily}: var(--plasma-typo-body-m-font-family); + ${calendarDoubleTokens.calendarMonthFontSize}: var(--plasma-typo-body-m-font-size); + ${calendarDoubleTokens.calendarMonthFontStyle}: var(--plasma-typo-body-m-font-style); + ${calendarDoubleTokens.calendarMonthFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${calendarDoubleTokens.calendarMonthFontLineHeight}: var(--plasma-typo-body-m-line-height); + ${calendarDoubleTokens.calendarMonthFontWeight}: var(--plasma-typo-body-m-font-weight); + ${calendarDoubleTokens.calendarMonthSelectedFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + + ${calendarDoubleTokens.calendarDaysPadding}: 0.5rem 0 0 0; + ${calendarDoubleTokens.calendarDayItemBorderRadius}: 0.625rem; + ${calendarDoubleTokens.calendarDayItemWidth}: 3rem; + ${calendarDoubleTokens.calendarDayItemHeight}: 2.5rem; + + ${calendarDoubleTokens.calendarDayFontFamily}: var(--plasma-typo-body-m-font-family); + ${calendarDoubleTokens.calendarDayFontSize}: var(--plasma-typo-body-m-font-size); + ${calendarDoubleTokens.calendarDayFontStyle}: var(--plasma-typo-body-m-font-style); + ${calendarDoubleTokens.calendarDayFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${calendarDoubleTokens.calendarDayFontLineHeight}: var(--plasma-typo-body-m-line-height); + ${calendarDoubleTokens.calendarDayFontWeight}: var(--plasma-typo-body-m-font-weight); + ${calendarDoubleTokens.calendarDaySelectedFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + + ${calendarDoubleTokens.calendarCurrentItemBorderWidth}: 0.063rem; + + ${calendarDoubleTokens.calendarHeaderArrowGap}: 0.5rem; + + ${calendarDoubleTokens.calendarDaysPadding}: 0.5rem 0 0 0; + ${calendarDoubleTokens.calendarHeaderPadding}: 0 0 0 0.75rem; + ${calendarDoubleTokens.calendarHeaderDateGap}: 0.375rem; + + ${calendarDoubleTokens.calendarHeaderFontFamily}: var(--plasma-typo-h4-font-family); + ${calendarDoubleTokens.calendarHeaderFontSize}: var(--plasma-typo-h4-font-size); + ${calendarDoubleTokens.calendarHeaderFontStyle}: var(--plasma-typo-h4-font-style); + ${calendarDoubleTokens.calendarHeaderFontLetterSpacing}: var(--plasma-typo-h4-letter-spacing); + ${calendarDoubleTokens.calendarHeaderFontLineHeight}: var(--plasma-typo-h4-line-height); + ${calendarDoubleTokens.calendarHeaderFontWeight}: var(--plasma-typo-h4-font-weight); + ${calendarDoubleTokens.calendarHeaderFontWeightBold}: var(--plasma-typo-h4-bold-font-weight); + + ${calendarDoubleTokens.iconButtonHeight}: 3rem; + ${calendarDoubleTokens.iconButtonWidth}: 3rem; + ${calendarDoubleTokens.iconButtonPadding}: 1.25rem; + ${calendarDoubleTokens.iconButtonRadius}: 0.75rem; + `, + s: css` + ${calendarDoubleTokens.calendarWidth}: 37.063rem; + ${calendarDoubleTokens.calendarHeight}: 17rem; + + ${calendarDoubleTokens.calendarYearsPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarDoubleTokens.calendarYearItemBorderRadius}: 0.5rem; + ${calendarDoubleTokens.calendarYearItemWidth}: 5.5rem; + ${calendarDoubleTokens.calendarYearItemHeight}: 3.5rem; + + ${calendarDoubleTokens.calendarYearFontFamily}: var(--plasma-typo-body-s-font-family); + ${calendarDoubleTokens.calendarYearFontSize}: var(--plasma-typo-body-s-font-size); + ${calendarDoubleTokens.calendarYearFontStyle}: var(--plasma-typo-body-s-font-style); + ${calendarDoubleTokens.calendarYearFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${calendarDoubleTokens.calendarYearFontLineHeight}: var(--plasma-typo-body-s-line-height); + ${calendarDoubleTokens.calendarYearFontWeight}: var(--plasma-typo-body-s-font-weight); + ${calendarDoubleTokens.calendarYearSelectedFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + + ${calendarDoubleTokens.calendarQuartersPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarDoubleTokens.calendarQuarterItemBorderRadius}: 0.5rem; + ${calendarDoubleTokens.calendarQuarterItemWidth}: 8.25rem; + ${calendarDoubleTokens.calendarQuarterItemHeight}: 7rem; + + ${calendarDoubleTokens.calendarQuarterFontFamily}: var(--plasma-typo-body-s-font-family); + ${calendarDoubleTokens.calendarQuarterFontSize}: var(--plasma-typo-body-s-font-size); + ${calendarDoubleTokens.calendarQuarterFontStyle}: var(--plasma-typo-body-s-font-style); + ${calendarDoubleTokens.calendarQuarterFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${calendarDoubleTokens.calendarQuarterFontLineHeight}: var(--plasma-typo-body-s-line-height); + ${calendarDoubleTokens.calendarQuarterFontWeight}: var(--plasma-typo-body-s-font-weight); + ${calendarDoubleTokens.calendarQuarterSelectedFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + + ${calendarDoubleTokens.calendarMonthsPadding}: 0.5rem 0.5rem 0 0.5rem; + ${calendarDoubleTokens.calendarMonthItemBorderRadius}: 0.5rem; + ${calendarDoubleTokens.calendarMonthItemWidth}: 5.5rem; + ${calendarDoubleTokens.calendarMonthItemHeight}: 3.5rem; + + ${calendarDoubleTokens.calendarMonthFontFamily}: var(--plasma-typo-body-s-font-family); + ${calendarDoubleTokens.calendarMonthFontSize}: var(--plasma-typo-body-s-font-size); + ${calendarDoubleTokens.calendarMonthFontStyle}: var(--plasma-typo-body-s-font-style); + ${calendarDoubleTokens.calendarMonthFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${calendarDoubleTokens.calendarMonthFontLineHeight}: var(--plasma-typo-body-s-line-height); + ${calendarDoubleTokens.calendarMonthFontWeight}: var(--plasma-typo-body-s-font-weight); + ${calendarDoubleTokens.calendarMonthSelectedFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + + ${calendarDoubleTokens.calendarDayItemBorderRadius}: 0.5rem; + ${calendarDoubleTokens.calendarDayItemWidth}: 2.5rem; + ${calendarDoubleTokens.calendarDayItemHeight}: 2rem; + + ${calendarDoubleTokens.calendarDayFontFamily}: var(--plasma-typo-body-s-font-family); + ${calendarDoubleTokens.calendarDayFontSize}: var(--plasma-typo-body-s-font-size); + ${calendarDoubleTokens.calendarDayFontStyle}: var(--plasma-typo-body-s-font-style); + ${calendarDoubleTokens.calendarDayFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${calendarDoubleTokens.calendarDayFontLineHeight}: var(--plasma-typo-body-s-line-height); + ${calendarDoubleTokens.calendarDayFontWeight}: var(--plasma-typo-body-s-font-weight); + ${calendarDoubleTokens.calendarDaySelectedFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + + ${calendarDoubleTokens.calendarCurrentItemBorderWidth}: 0.063rem; + + ${calendarDoubleTokens.calendarHeaderArrowGap}: 0.5rem; + + ${calendarDoubleTokens.calendarDaysPadding}: 0.5rem 0 0 0; + ${calendarDoubleTokens.calendarHeaderPadding}: 0 0 0 0.5rem; + ${calendarDoubleTokens.calendarHeaderDateGap}: 0.25rem; + + ${calendarDoubleTokens.calendarHeaderFontFamily}: var(--plasma-typo-h4-font-family); + ${calendarDoubleTokens.calendarHeaderFontSize}: var(--plasma-typo-h4-font-size); + ${calendarDoubleTokens.calendarHeaderFontStyle}: var(--plasma-typo-h4-font-style); + ${calendarDoubleTokens.calendarHeaderFontLetterSpacing}: var(--plasma-typo-h4-letter-spacing); + ${calendarDoubleTokens.calendarHeaderFontLineHeight}: var(--plasma-typo-h4-line-height); + ${calendarDoubleTokens.calendarHeaderFontWeight}: var(--plasma-typo-h4-font-weight); + ${calendarDoubleTokens.calendarHeaderFontWeightBold}: var(--plasma-typo-h4-bold-font-weight); + + ${calendarDoubleTokens.iconButtonHeight}: 2.5rem; + ${calendarDoubleTokens.iconButtonWidth}: 2.5rem; + ${calendarDoubleTokens.iconButtonPadding}: 1rem; + ${calendarDoubleTokens.iconButtonRadius}: 0.625rem; + `, + xs: css` + ${calendarDoubleTokens.calendarWidth}: 37.063rem; + ${calendarDoubleTokens.calendarHeight}: 15.5rem; + + ${calendarDoubleTokens.calendarYearsPadding}: 0.375rem 0.25rem 0 0.25rem; + ${calendarDoubleTokens.calendarYearItemBorderRadius}: 0.375rem; + ${calendarDoubleTokens.calendarYearItemWidth}: 5.625rem; + ${calendarDoubleTokens.calendarYearItemHeight}: 3.281rem; + + ${calendarDoubleTokens.calendarYearFontFamily}: var(--plasma-typo-body-xs-font-family); + ${calendarDoubleTokens.calendarYearFontSize}: var(--plasma-typo-body-xs-font-size); + ${calendarDoubleTokens.calendarYearFontStyle}: var(--plasma-typo-body-xs-font-style); + ${calendarDoubleTokens.calendarYearFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${calendarDoubleTokens.calendarYearFontLineHeight}: var(--plasma-typo-body-xs-line-height); + ${calendarDoubleTokens.calendarYearFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${calendarDoubleTokens.calendarYearSelectedFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + + ${calendarDoubleTokens.calendarQuartersPadding}: 0.375rem 0.25rem 0 0.25rem; + ${calendarDoubleTokens.calendarQuarterItemBorderRadius}: 0.375rem; + ${calendarDoubleTokens.calendarQuarterItemWidth}: 8.25rem; + ${calendarDoubleTokens.calendarQuarterItemHeight}: 6.563rem; + + ${calendarDoubleTokens.calendarQuarterFontFamily}: var(--plasma-typo-body-xs-font-family); + ${calendarDoubleTokens.calendarQuarterFontSize}: var(--plasma-typo-body-xs-font-size); + ${calendarDoubleTokens.calendarQuarterFontStyle}: var(--plasma-typo-body-xs-font-style); + ${calendarDoubleTokens.calendarQuarterFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${calendarDoubleTokens.calendarQuarterFontLineHeight}: var(--plasma-typo-body-xs-line-height); + ${calendarDoubleTokens.calendarQuarterFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${calendarDoubleTokens.calendarQuarterSelectedFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + + ${calendarDoubleTokens.calendarMonthsPadding}: 0.375rem 0.25rem 0 0.25rem; + ${calendarDoubleTokens.calendarMonthItemBorderRadius}: 0.375rem; + ${calendarDoubleTokens.calendarMonthItemWidth}: 5.625rem; + ${calendarDoubleTokens.calendarMonthItemHeight}: 3.281rem; + + ${calendarDoubleTokens.calendarMonthFontFamily}: var(--plasma-typo-body-xs-font-family); + ${calendarDoubleTokens.calendarMonthFontSize}: var(--plasma-typo-body-xs-font-size); + ${calendarDoubleTokens.calendarMonthFontStyle}: var(--plasma-typo-body-xs-font-style); + ${calendarDoubleTokens.calendarMonthFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${calendarDoubleTokens.calendarMonthFontLineHeight}: var(--plasma-typo-body-xs-line-height); + ${calendarDoubleTokens.calendarMonthFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${calendarDoubleTokens.calendarMonthSelectedFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + + ${calendarDoubleTokens.calendarDaysPadding}: 0.375rem 0 0 0; + ${calendarDoubleTokens.calendarDayItemBorderRadius}: 0.375rem; + ${calendarDoubleTokens.calendarDayItemWidth}: 2.5rem; + ${calendarDoubleTokens.calendarDayItemHeight}: 1.875rem; + + ${calendarDoubleTokens.calendarDayFontFamily}: var(--plasma-typo-body-xs-font-family); + ${calendarDoubleTokens.calendarDayFontSize}: var(--plasma-typo-body-xs-font-size); + ${calendarDoubleTokens.calendarDayFontStyle}: var(--plasma-typo-body-xs-font-style); + ${calendarDoubleTokens.calendarDayFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${calendarDoubleTokens.calendarDayFontLineHeight}: var(--plasma-typo-body-xs-line-height); + ${calendarDoubleTokens.calendarDayFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${calendarDoubleTokens.calendarDaySelectedFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + + ${calendarDoubleTokens.calendarCurrentItemBorderWidth}: 0.063rem; + + ${calendarDoubleTokens.calendarHeaderArrowGap}: 0; + + ${calendarDoubleTokens.calendarHeaderPadding}: 0 0 0 0.5rem; + ${calendarDoubleTokens.calendarHeaderDateGap}: 0.25rem; + + ${calendarDoubleTokens.calendarHeaderFontFamily}: var(--plasma-typo-h5-font-family); + ${calendarDoubleTokens.calendarHeaderFontSize}: var(--plasma-typo-h5-font-size); + ${calendarDoubleTokens.calendarHeaderFontStyle}: var(--plasma-typo-h5-font-style); + ${calendarDoubleTokens.calendarHeaderFontLetterSpacing}: var(--plasma-typo-h5-letter-spacing); + ${calendarDoubleTokens.calendarHeaderFontLineHeight}: var(--plasma-typo-h5-line-height); + ${calendarDoubleTokens.calendarHeaderFontWeight}: var(--plasma-typo-h5-font-weight); + ${calendarDoubleTokens.calendarHeaderFontWeightBold}: var(--plasma-typo-h5-bold-font-weight); + + ${calendarDoubleTokens.iconButtonHeight}: 2rem; + ${calendarDoubleTokens.iconButtonWidth}: 2rem; + ${calendarDoubleTokens.iconButtonPadding}: 0.75rem; + ${calendarDoubleTokens.iconButtonRadius}: 0.5rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Calendar/index.ts b/packages/plasma-giga/src/components/Calendar/index.ts new file mode 100644 index 0000000000..72d38deaa0 --- /dev/null +++ b/packages/plasma-giga/src/components/Calendar/index.ts @@ -0,0 +1,8 @@ +export { Calendar, CalendarBase, CalendarBaseRange, CalendarDouble, CalendarDoubleRange } from './Calendar'; + +export type { + CalendarBaseProps, + CalendarDoubleProps, + CalendarProps, + CalendarStateType, +} from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Cell/Cell.config.ts b/packages/plasma-giga/src/components/Cell/Cell.config.ts new file mode 100644 index 0000000000..8598427ac0 --- /dev/null +++ b/packages/plasma-giga/src/components/Cell/Cell.config.ts @@ -0,0 +1,145 @@ +import { css, cellTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + variations: { + view: { + default: css` + ${cellTokens.cellColor}: var(--text-primary); + ${cellTokens.cellLabelColor}: var(--text-secondary); + ${cellTokens.cellTitleColor}: var(--text-primary); + ${cellTokens.cellSubtitleColor}: var(--text-secondary); + ${cellTokens.cellBackgroundColor}: transparent; + `, + }, + size: { + l: css` + ${cellTokens.cellWidth}: 15rem; + + ${cellTokens.cellPadding}: 0rem; + ${cellTokens.cellPaddingLeftContent}: 0rem; + ${cellTokens.cellPaddingContent}: 0rem; + ${cellTokens.cellPaddingRightContent}: 0rem; + + ${cellTokens.cellTextboxGap}: 0.125rem; + ${cellTokens.cellGap}: 0.375rem; + + ${cellTokens.cellLabelFontFamily}: var(--plasma-typo-body-m-font-family); + ${cellTokens.cellLabelFontSize}: var(--plasma-typo-body-m-font-size); + ${cellTokens.cellLabelFontStyle}: var(--plasma-typo-body-m-font-style); + ${cellTokens.cellLabelFontWeight}: var(--plasma-typo-body-m-font-weight); + ${cellTokens.cellLabelLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${cellTokens.cellLabelLineHeight}: var(--plasma-typo-body-m-line-height); + + ${cellTokens.cellTitleFontFamily}: var(--plasma-typo-body-l-font-family); + ${cellTokens.cellTitleFontSize}: var(--plasma-typo-body-l-font-size); + ${cellTokens.cellTitleFontStyle}: var(--plasma-typo-body-l-font-style); + ${cellTokens.cellTitleFontWeight}: var(--plasma-typo-body-l-font-weight); + ${cellTokens.cellTitleLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${cellTokens.cellTitleLineHeight}: var(--plasma-typo-body-l-line-height); + + ${cellTokens.cellSubtitleFontFamily}: var(--plasma-typo-body-m-font-family); + ${cellTokens.cellSubtitleFontSize}: var(--plasma-typo-body-m-font-size); + ${cellTokens.cellSubtitleFontStyle}: var(--plasma-typo-body-m-font-style); + ${cellTokens.cellSubtitleFontWeight}: var(--plasma-typo-body-m-font-weight); + ${cellTokens.cellSubtitleLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${cellTokens.cellSubtitleLineHeight}: var(--plasma-typo-body-m-line-height); + `, + m: css` + ${cellTokens.cellWidth}: 15rem; + + ${cellTokens.cellPadding}: 0rem; + ${cellTokens.cellPaddingLeftContent}: 0rem; + ${cellTokens.cellPaddingContent}: 0rem; + ${cellTokens.cellPaddingRightContent}: 0rem; + + ${cellTokens.cellTextboxGap}: 0.125rem; + ${cellTokens.cellGap}: 0.375rem; + + ${cellTokens.cellLabelFontFamily}: var(--plasma-typo-body-s-font-family); + ${cellTokens.cellLabelFontSize}: var(--plasma-typo-body-s-font-size); + ${cellTokens.cellLabelFontStyle}: var(--plasma-typo-body-s-font-style); + ${cellTokens.cellLabelFontWeight}: var(--plasma-typo-body-s-font-weight); + ${cellTokens.cellLabelLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${cellTokens.cellLabelLineHeight}: var(--plasma-typo-body-s-line-height); + + ${cellTokens.cellTitleFontFamily}: var(--plasma-typo-body-m-font-family); + ${cellTokens.cellTitleFontSize}: var(--plasma-typo-body-m-font-size); + ${cellTokens.cellTitleFontStyle}: var(--plasma-typo-body-m-font-style); + ${cellTokens.cellTitleFontWeight}: var(--plasma-typo-body-m-font-weight); + ${cellTokens.cellTitleLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${cellTokens.cellTitleLineHeight}: var(--plasma-typo-body-m-line-height); + + ${cellTokens.cellSubtitleFontFamily}: var(--plasma-typo-body-s-font-family); + ${cellTokens.cellSubtitleFontSize}: var(--plasma-typo-body-s-font-size); + ${cellTokens.cellSubtitleFontStyle}: var(--plasma-typo-body-s-font-style); + ${cellTokens.cellSubtitleFontWeight}: var(--plasma-typo-body-s-font-weight); + ${cellTokens.cellSubtitleLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${cellTokens.cellSubtitleLineHeight}: var(--plasma-typo-body-s-line-height); + `, + s: css` + ${cellTokens.cellWidth}: 15rem; + + ${cellTokens.cellPadding}: 0rem; + ${cellTokens.cellPaddingLeftContent}: 0rem; + ${cellTokens.cellPaddingContent}: 0rem; + ${cellTokens.cellPaddingRightContent}: 0rem; + + ${cellTokens.cellTextboxGap}: 0.125rem; + ${cellTokens.cellGap}: 0.375rem; + + ${cellTokens.cellLabelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${cellTokens.cellLabelFontSize}: var(--plasma-typo-body-xs-font-size); + ${cellTokens.cellLabelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${cellTokens.cellLabelFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${cellTokens.cellLabelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${cellTokens.cellLabelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${cellTokens.cellTitleFontFamily}: var(--plasma-typo-body-s-font-family); + ${cellTokens.cellTitleFontSize}: var(--plasma-typo-body-s-font-size); + ${cellTokens.cellTitleFontStyle}: var(--plasma-typo-body-s-font-style); + ${cellTokens.cellTitleFontWeight}: var(--plasma-typo-body-s-font-weight); + ${cellTokens.cellTitleLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${cellTokens.cellTitleLineHeight}: var(--plasma-typo-body-s-line-height); + + ${cellTokens.cellSubtitleFontFamily}: var(--plasma-typo-body-xs-font-family); + ${cellTokens.cellSubtitleFontSize}: var(--plasma-typo-body-xs-font-size); + ${cellTokens.cellSubtitleFontStyle}: var(--plasma-typo-body-xs-font-style); + ${cellTokens.cellSubtitleFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${cellTokens.cellSubtitleLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${cellTokens.cellSubtitleLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + xs: css` + ${cellTokens.cellWidth}: 15rem; + + ${cellTokens.cellPadding}: 0rem; + ${cellTokens.cellPaddingLeftContent}: 0rem; + ${cellTokens.cellPaddingContent}: 0rem; + ${cellTokens.cellPaddingRightContent}: 0rem; + + ${cellTokens.cellTextboxGap}: 0.125rem; + ${cellTokens.cellGap}: 0.25rem; + + ${cellTokens.cellLabelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${cellTokens.cellLabelFontSize}: var(--plasma-typo-body-xs-font-size); + ${cellTokens.cellLabelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${cellTokens.cellLabelFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${cellTokens.cellLabelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${cellTokens.cellLabelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${cellTokens.cellTitleFontFamily}: var(--plasma-typo-body-xs-font-family); + ${cellTokens.cellTitleFontSize}: var(--plasma-typo-body-xs-font-size); + ${cellTokens.cellTitleFontStyle}: var(--plasma-typo-body-xs-font-style); + ${cellTokens.cellTitleFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${cellTokens.cellTitleLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${cellTokens.cellTitleLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${cellTokens.cellSubtitleFontFamily}: var(--plasma-typo-body-xs-font-family); + ${cellTokens.cellSubtitleFontSize}: var(--plasma-typo-body-xs-font-size); + ${cellTokens.cellSubtitleFontStyle}: var(--plasma-typo-body-xs-font-style); + ${cellTokens.cellSubtitleFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${cellTokens.cellSubtitleLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${cellTokens.cellSubtitleLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Cell/Cell.stories.tsx b/packages/plasma-giga/src/components/Cell/Cell.stories.tsx new file mode 100644 index 0000000000..be4277e42d --- /dev/null +++ b/packages/plasma-giga/src/components/Cell/Cell.stories.tsx @@ -0,0 +1,125 @@ +import React from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import type { ComponentProps } from 'react'; +import { IconChevronRight } from '@salutejs/plasma-icons'; +import styled from 'styled-components'; + +import { Avatar } from '../Avatar'; + +import { Cell, CellTextbox, CellTextboxTitle } from '.'; + +type StoryProps = ComponentProps<typeof Cell> & { + itemsCount?: number; + disableLeftContent?: boolean; + disableRightContent?: boolean; +}; +type Story = StoryObj<StoryProps>; + +const sizes = ['l', 'm', 's', 'xs']; +const stretchingValues = ['fixed', 'filled', 'auto']; +const alignLeft = ['top', 'center', 'bottom']; +const alignRight = ['top', 'center', 'bottom']; + +type SizesCell = 'xs' | 'l' | 'm' | 's' | undefined; +type SizesAvatar = 'l' | 'm' | 's'; + +const getSize = (size: SizesCell): SizesAvatar => { + if (size === 'xs' || !size) { + return 's'; + } + + return size; +}; + +const ChevronRight = styled(IconChevronRight)` + color: var(--text-secondary); +`; + +const meta: Meta<typeof Cell> = { + title: 'Data Display/Cell', + argTypes: { + size: { + options: sizes, + control: { + type: 'select', + }, + }, + stretching: { + options: stretchingValues, + control: { + type: 'select', + }, + }, + alignContentLeft: { + options: alignLeft, + control: { + type: 'select', + }, + }, + alignContentRight: { + options: alignRight, + control: { + type: 'select', + }, + }, + }, +}; + +export default meta; + +export const Default: Story = { + args: { + size: 'm', + stretching: 'filled', + disableLeftContent: false, + disableRightContent: false, + alignContentLeft: 'center', + alignContentRight: 'center', + title: 'Title', + subtitle: 'Subtitle', + label: 'Label', + }, + render: ({ ...args }: StoryProps) => { + return ( + <Cell + contentLeft={ + !args.disableLeftContent && ( + <Avatar size={getSize(args.size)} url="https://avatars.githubusercontent.com/u/1813468?v=4" /> + ) + } + contentRight={!args.disableRightContent && <ChevronRight color="inherit" size="xs" />} + {...args} + /> + ); + }, +}; + +export const WithContentTextboxCustom: Story = { + args: { + size: 'm', + stretching: 'filled', + }, + render: ({ ...args }: StoryProps) => { + const MyStyledText = styled.div` + font-size: 12px; + font-weight: 600; + opacity: 0.5; + `; + return ( + <Cell + contentLeft={ + <Avatar size={getSize(args.size)} url="https://avatars.githubusercontent.com/u/1813468?v=4" /> + } + contentRight={<ChevronRight color="inheart" size="xs" />} + view="default" + size={args.size} + stretching={args.stretching} + > + <CellTextbox> + <CellTextboxTitle>Title</CellTextboxTitle> + <MyStyledText>My styled Text</MyStyledText> + </CellTextbox> + </Cell> + ); + }, +}; diff --git a/packages/plasma-giga/src/components/Cell/Cell.ts b/packages/plasma-giga/src/components/Cell/Cell.ts new file mode 100644 index 0000000000..6a29eea943 --- /dev/null +++ b/packages/plasma-giga/src/components/Cell/Cell.ts @@ -0,0 +1,11 @@ +import { cellConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Cell.config'; + +const mergedConfig = mergeConfig(cellConfig, config); +const CellComponent = component(mergedConfig); + +/** + * Кнопка. + */ +export const Cell = CellComponent; diff --git a/packages/plasma-giga/src/components/Cell/index.ts b/packages/plasma-giga/src/components/Cell/index.ts new file mode 100644 index 0000000000..eed8af3061 --- /dev/null +++ b/packages/plasma-giga/src/components/Cell/index.ts @@ -0,0 +1,9 @@ +export { + CellTextbox, + CellTextboxLabel, + CellTextboxTitle, + CellTextboxSubtitle, +} from '@salutejs/plasma-new-hope/styled-components'; +export { Cell } from './Cell'; + +export type { CellProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Checkbox/Checkbox.config.tsx b/packages/plasma-giga/src/components/Checkbox/Checkbox.config.tsx new file mode 100644 index 0000000000..3768ba4c13 --- /dev/null +++ b/packages/plasma-giga/src/components/Checkbox/Checkbox.config.tsx @@ -0,0 +1,123 @@ +import { css, checkboxTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'accent', + size: 'm', + focused: 'true', + }, + variations: { + size: { + s: css` + ${checkboxTokens.margin}: 0; + ${checkboxTokens.triggerMargin}: 0.063rem 0; + ${checkboxTokens.triggerSize}: 0.875rem; + ${checkboxTokens.triggerBorderRadius}: 0.25rem; + ${checkboxTokens.contentTopOffset}: 0; + ${checkboxTokens.contentLeftOffset}: 0.5rem; + ${checkboxTokens.descriptionMarginTop}: 0.125rem; + ${checkboxTokens.labelFontFamily}: var(--plasma-typo-body-s-font-family); + ${checkboxTokens.labelFontSize}: var(--plasma-typo-body-s-font-size); + ${checkboxTokens.labelFontStyle}: var(--plasma-typo-body-s-font-style); + ${checkboxTokens.labelFontWeight}: var(--plasma-typo-body-s-font-weight); + ${checkboxTokens.labelLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${checkboxTokens.labelLineHeight}: var(--plasma-typo-body-s-line-height); + ${checkboxTokens.descriptionFontFamily}: var(--plasma-typo-body-xs-font-family); + ${checkboxTokens.descriptionFontSize}: var(--plasma-typo-body-xs-font-size); + ${checkboxTokens.descriptionFontStyle}: var(--plasma-typo-body-xs-font-style); + ${checkboxTokens.descriptionFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${checkboxTokens.descriptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${checkboxTokens.descriptionLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + m: css` + ${checkboxTokens.margin}: 0; + ${checkboxTokens.triggerMargin}: 0.125rem 0; + ${checkboxTokens.triggerSize}: 1.25rem; + ${checkboxTokens.triggerBorderRadius}: 0.375rem; + ${checkboxTokens.contentTopOffset}: 0.125rem; + ${checkboxTokens.contentLeftOffset}: 0.75rem; + ${checkboxTokens.descriptionMarginTop}: 0.125rem; + ${checkboxTokens.labelFontFamily}: var(--plasma-typo-body-m-font-family); + ${checkboxTokens.labelFontSize}: var(--plasma-typo-body-m-font-size); + ${checkboxTokens.labelFontStyle}: var(--plasma-typo-body-m-font-style); + ${checkboxTokens.labelFontWeight}: var(--plasma-typo-body-m-font-weight); + ${checkboxTokens.labelLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${checkboxTokens.labelLineHeight}: var(--plasma-typo-body-m-line-height); + ${checkboxTokens.descriptionFontFamily}: var(--plasma-typo-body-s-font-family); + ${checkboxTokens.descriptionFontSize}: var(--plasma-typo-body-s-font-size); + ${checkboxTokens.descriptionFontStyle}: var(--plasma-typo-body-s-font-style); + ${checkboxTokens.descriptionFontWeight}: var(--plasma-typo-body-s-font-weight); + ${checkboxTokens.descriptionLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${checkboxTokens.descriptionLineHeight}: var(--plasma-typo-body-s-line-height); + `, + }, + view: { + default: css` + ${checkboxTokens.fillColor}: var(--text-primary); + ${checkboxTokens.iconColor}: var(--inverse-text-primary); + ${checkboxTokens.descriptionColor}: var(--text-secondary); + ${checkboxTokens.triggerBackgroundColor}: transparent; + ${checkboxTokens.triggerBorderColor}: var(--text-secondary); + `, + secondary: css` + ${checkboxTokens.fillColor}: var(--text-secondary); + ${checkboxTokens.iconColor}: var(--inverse-text-primary); + ${checkboxTokens.descriptionColor}: var(--text-secondary); + ${checkboxTokens.triggerBackgroundColor}: transparent; + ${checkboxTokens.triggerBorderColor}: var(--text-secondary); + `, + tertiary: css` + ${checkboxTokens.fillColor}: var(--text-tertiary); + ${checkboxTokens.iconColor}: var(--inverse-text-primary); + ${checkboxTokens.descriptionColor}: var(--text-secondary); + ${checkboxTokens.triggerBackgroundColor}: transparent; + ${checkboxTokens.triggerBorderColor}: var(--text-secondary); + `, + paragraph: css` + ${checkboxTokens.fillColor}: var(--text-paragraph); + ${checkboxTokens.iconColor}: var(--inverse-text-primary); + ${checkboxTokens.descriptionColor}: var(--text-secondary); + ${checkboxTokens.triggerBackgroundColor}: transparent; + ${checkboxTokens.triggerBorderColor}: var(--text-secondary); + `, + accent: css` + ${checkboxTokens.fillColor}: var(--text-accent); + ${checkboxTokens.iconColor}: var(--on-dark-text-primary); + ${checkboxTokens.descriptionColor}: var(--text-secondary); + ${checkboxTokens.triggerBackgroundColor}: transparent; + ${checkboxTokens.triggerBorderColor}: var(--text-secondary); + `, + positive: css` + ${checkboxTokens.fillColor}: var(--text-positive); + ${checkboxTokens.iconColor}: var(--on-dark-text-primary); + ${checkboxTokens.descriptionColor}: var(--text-secondary); + ${checkboxTokens.triggerBackgroundColor}: transparent; + ${checkboxTokens.triggerBorderColor}: var(--text-secondary); + `, + warning: css` + ${checkboxTokens.fillColor}: var(--text-warning); + ${checkboxTokens.iconColor}: var(--on-dark-text-primary); + ${checkboxTokens.descriptionColor}: var(--text-secondary); + ${checkboxTokens.triggerBackgroundColor}: transparent; + ${checkboxTokens.triggerBorderColor}: var(--text-secondary); + `, + negative: css` + ${checkboxTokens.fillColor}: var(--text-negative); + ${checkboxTokens.iconColor}: var(--on-dark-text-primary); + ${checkboxTokens.descriptionColor}: var(--text-secondary); + ${checkboxTokens.triggerBackgroundColor}: transparent; + ${checkboxTokens.triggerBorderColor}: var(--text-secondary); + `, + }, + disabled: { + true: css` + ${checkboxTokens.disabledOpacity}: 0.4; + `, + }, + focused: { + true: css` + ${checkboxTokens.focusColor}: var(--text-accent); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Checkbox/Checkbox.stories.tsx b/packages/plasma-giga/src/components/Checkbox/Checkbox.stories.tsx new file mode 100644 index 0000000000..f3b8f2ba57 --- /dev/null +++ b/packages/plasma-giga/src/components/Checkbox/Checkbox.stories.tsx @@ -0,0 +1,236 @@ +import React from 'react'; +import type { Meta, StoryObj } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; + +import { Link } from '../Link'; + +import { Checkbox } from '.'; +import type { CheckboxProps } from '.'; + +const onChange = action('onChange'); +const onFocus = action('onFocus'); +const onBlur = action('onBlur'); + +const sizes = ['m', 's']; +const views = ['default', 'secondary', 'tertiary', 'paragraph', 'accent', 'positive', 'warning', 'negative']; + +const propsToDisable = [ + 'name', + 'indeterminate', + 'id', + 'focused', + 'type', + 'value', + 'checked', + 'readOnly', + 'placeholder', + 'required', + 'minLength', + 'maxLength', + 'onChange', + 'onFocus', + 'onBlur', +]; + +const meta: Meta<CheckboxProps> = { + title: 'Data Entry/Checkbox', + component: Checkbox, + decorators: [InSpacingDecorator], + argTypes: { + label: { + control: { + type: 'text', + }, + }, + description: { + control: { + type: 'text', + }, + }, + size: { + options: sizes, + control: { + type: 'inline-radio', + }, + }, + view: { + options: views, + control: { + type: 'select', + }, + }, + ...disableProps(propsToDisable), + }, +}; + +export default meta; + +type Story = StoryObj<CheckboxProps>; + +const englishDescription = ( + <div> + The most spoken language in the <Link href="/#">world</Link> + </div> +); + +const chineseLabel = ( + <div> + Chinese is the hardest <Link href="/#">language</Link> + </div> +); + +const name = 'languages'; + +const items = [ + { + name, + value: 'natural', + label: 'Natural languages', + disabled: false, + description: 'Languages that people speak. They were not designed by people and they evolved naturally.', + }, + { name, value: 'russian', label: 'Russian', disabled: false, parent: 'natural' }, + { + name, + value: 'english', + label: 'English', + disabled: false, + parent: 'natural', + description: englishDescription, + }, + { name, value: 'french', label: 'French', disabled: false, parent: 'natural' }, + { name, value: 'klingon', label: 'Klingon', disabled: false, parent: 'natural' }, + { name, value: 'elvish', label: 'Elvish', disabled: true, parent: 'natural' }, + { name, value: 'dothraki', label: 'Dothraki', disabled: true, parent: 'natural' }, + { + name, + value: 'chinese', + label: chineseLabel, + parent: 'natural', + }, +]; + +const getChildren = (value: string) => items.filter((item) => item.parent === value); + +const getState = (values: Record<string, boolean | undefined>, value: string) => { + const allChildren = getChildren(value); + + if (!allChildren.length) { + return { checked: values[value], indeterminate: false }; + } + + const checkedChildren = allChildren.filter((child) => values[child.value]); + + if (checkedChildren.length === 0) { + return { checked: false, indeterminate: false }; + } + + if (allChildren.length !== checkedChildren.length) { + return { checked: false, indeterminate: true }; + } + + return { checked: true, indeterminate: false }; +}; + +const StoryDefault = (args: CheckboxProps) => { + const value = 0; + const [checked, setChecked] = React.useState(true); + + return ( + <> + <Checkbox + value={value} + checked={checked} + onChange={(event) => { + event.persist(); + + setChecked(event.target.checked); + onChange(event); + }} + onFocus={onFocus} + onBlur={onBlur} + {...args} + /> + </> + ); +}; + +export const Default: Story = { + args: { + name: 'checkbox', + label: 'Label', + description: 'Description', + disabled: false, + singleLine: false, + size: 'm', + view: 'accent', + focused: true, + }, + render: (args) => <StoryDefault {...args} />, +}; + +const StoryLive = (args) => { + const [values, setValues] = React.useState({ + russian: true, + english: true, + french: true, + klingon: false, + elvish: true, + dothraki: false, + chinese: true, + }); + + return ( + <> + {items.map((item) => ( + <Checkbox + {...getState(values, item.value)} + style={{ marginLeft: item.parent ? 36 : null }} + key={item.value} + name={item.name} + value={item.value} + label={item.label} + disabled={item.disabled} + description={item.description} + onChange={(event) => { + event.persist(); + + const { checked } = event.target; + + if (item.parent) { + setValues({ ...values, [item.value]: checked }); + } else { + setValues({ + ...values, + ...getChildren(item.value).reduce( + (acc, child) => ({ ...acc, [child.value]: checked }), + {}, + ), + }); + } + + onChange(event); + }} + onFocus={onFocus} + onBlur={onBlur} + {...args} + /> + ))} + </> + ); +}; + +export const Live: Story = { + args: { + size: 'm', + view: 'accent', + singleLine: false, + focused: true, + disabled: false, + }, + argTypes: { + ...disableProps(['label', 'description']), + }, + render: (args) => <StoryLive {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Checkbox/Checkbox.tsx b/packages/plasma-giga/src/components/Checkbox/Checkbox.tsx new file mode 100644 index 0000000000..f13a638203 --- /dev/null +++ b/packages/plasma-giga/src/components/Checkbox/Checkbox.tsx @@ -0,0 +1,14 @@ +import { checkboxConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; +import { ComponentProps } from 'react'; + +import { config } from './Checkbox.config'; + +const mergedConfig = mergeConfig(checkboxConfig, config); +const CheckboxComponent = component(mergedConfig); + +export type CheckboxProps = ComponentProps<typeof CheckboxComponent>; + +/** + * Флажок или чекбокс. Позволяет пользователю управлять параметром с двумя состояниями — ☑ включено и ☐ отключено. + */ +export const Checkbox = CheckboxComponent; diff --git a/packages/plasma-giga/src/components/Checkbox/index.ts b/packages/plasma-giga/src/components/Checkbox/index.ts new file mode 100644 index 0000000000..43aaf92503 --- /dev/null +++ b/packages/plasma-giga/src/components/Checkbox/index.ts @@ -0,0 +1,2 @@ +export { Checkbox } from './Checkbox'; +export type { CheckboxProps } from './Checkbox'; diff --git a/packages/plasma-giga/src/components/Chip/Chip.config.tsx b/packages/plasma-giga/src/components/Chip/Chip.config.tsx new file mode 100644 index 0000000000..b3fe5a1aa2 --- /dev/null +++ b/packages/plasma-giga/src/components/Chip/Chip.config.tsx @@ -0,0 +1,196 @@ +import { css, chipTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + focused: 'true', + size: 'm', + }, + variations: { + view: { + default: css` + ${chipTokens.color}: var(--inverse-text-primary); + ${chipTokens.background}: var(--surface-solid-default); + ${chipTokens.colorHover}: var(--inverse-text-primary); + ${chipTokens.backgroundHover}: var(--surface-solid-default-hover); + ${chipTokens.colorActive}: var(--inverse-text-primary); + ${chipTokens.backgroundActive}: var(--surface-solid-default-active); + ${chipTokens.backgroundReadOnly}: var(--surface-solid-default); + ${chipTokens.colorReadOnly}: var(--inverse-text-primary); + ${chipTokens.backgroundReadOnlyHover}: var(--surface-solid-default); + ${chipTokens.colorReadOnlyHover}: var(--inverse-text-primary); + `, + secondary: css` + ${chipTokens.color}: var(--text-primary); + ${chipTokens.background}: var(--surface-transparent-secondary); + ${chipTokens.colorHover}: var(--text-primary); + ${chipTokens.backgroundHover}: var(--surface-transparent-secondary-hover); + ${chipTokens.colorActive}: var(--text-primary); + ${chipTokens.backgroundActive}: var(--surface-transparent-secondary-active); + ${chipTokens.backgroundReadOnly}: var(--surface-transparent-secondary); + ${chipTokens.colorReadOnly}: var(--text-primary); + ${chipTokens.backgroundReadOnlyHover}: var(--surface-transparent-secondary); + ${chipTokens.colorReadOnlyHover}: var(--text-primary); + `, + accent: css` + ${chipTokens.color}: var(--on-dark-text-primary); + ${chipTokens.background}: var(--surface-accent); + ${chipTokens.colorHover}: var(--on-dark-text-primary); + ${chipTokens.backgroundHover}: var(--surface-accent-hover); + ${chipTokens.colorActive}: var(--on-dark-text-primary); + ${chipTokens.backgroundActive}: var(--surface-accent-active); + ${chipTokens.backgroundReadOnly}: var(--surface-accent); + ${chipTokens.colorReadOnly}: var(--on-dark-text-primary); + ${chipTokens.backgroundReadOnlyHover}: var(--surface-accent); + ${chipTokens.colorReadOnlyHover}: var(--on-dark-text-primary); + `, + positive: css` + ${chipTokens.color}: var(--on-dark-text-primary); + ${chipTokens.background}: var(--surface-positive); + ${chipTokens.colorHover}: var(--on-dark-text-primary); + ${chipTokens.backgroundHover}: var(--surface-positive-hover); + ${chipTokens.colorActive}: var(--on-dark-text-primary); + ${chipTokens.backgroundActive}: var(--surface-positive-active); + ${chipTokens.backgroundReadOnly}: var(--surface-positive); + ${chipTokens.colorReadOnly}: var(--on-dark-text-primary); + ${chipTokens.backgroundReadOnlyHover}: var(--surface-positive); + ${chipTokens.colorReadOnlyHover}: var(--on-dark-text-primary); + `, + warning: css` + ${chipTokens.color}: var(--on-dark-text-primary); + ${chipTokens.background}: var(--surface-warning); + ${chipTokens.colorHover}: var(--on-dark-text-primary); + ${chipTokens.backgroundHover}: var(--surface-warning-hover); + ${chipTokens.colorActive}: var(--on-dark-text-primary); + ${chipTokens.backgroundActive}: var(--surface-warning-active); + ${chipTokens.backgroundReadOnly}: var(--surface-warning); + ${chipTokens.colorReadOnly}: var(--on-dark-text-primary); + ${chipTokens.backgroundReadOnlyHover}: var(--surface-warning); + ${chipTokens.colorReadOnlyHover}: var(--on-dark-text-primary); + `, + negative: css` + ${chipTokens.color}: var(--on-dark-text-primary); + ${chipTokens.background}: var(--surface-negative); + ${chipTokens.colorHover}: var(--on-dark-text-primary); + ${chipTokens.backgroundHover}: var(--surface-negative-hover); + ${chipTokens.colorActive}: var(--on-dark-text-primary); + ${chipTokens.backgroundActive}: var(--surface-negative-active); + ${chipTokens.backgroundReadOnly}: var(--surface-negative); + ${chipTokens.colorReadOnly}: var(--on-dark-text-primary); + ${chipTokens.backgroundReadOnlyHover}: var(--surface-negative); + ${chipTokens.colorReadOnlyHover}: var(--on-dark-text-primary); + `, + }, + size: { + l: css` + ${chipTokens.borderRadius}: 0.75rem; + ${chipTokens.pilledBorderRadius}: 1.5rem; + ${chipTokens.width}: auto; + ${chipTokens.height}: 3rem; + ${chipTokens.padding}: 0 1rem; + + ${chipTokens.fontFamily}: var(--plasma-typo-body-l-font-family); + ${chipTokens.fontSize}: var(--plasma-typo-body-l-font-size); + ${chipTokens.fontStyle}: var(--plasma-typo-body-l-font-style); + ${chipTokens.fontWeight}: var(--plasma-typo-body-l-font-weight); + ${chipTokens.letterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${chipTokens.lineHeight}: var(--plasma-typo-body-l-line-height); + + ${chipTokens.leftContentMarginLeft}: -0.125rem; + ${chipTokens.leftContentMarginRight}: 0.5rem; + ${chipTokens.clearContentMarginLeft}: 0.625rem; + ${chipTokens.clearContentMarginRight}: -0.25rem; + + ${chipTokens.scaleHover}: 1.02; + ${chipTokens.scaleActive}: 0.98; + + ${chipTokens.closeIconSize}: 1.5rem; + `, + m: css` + ${chipTokens.borderRadius}: 0.625rem; + ${chipTokens.pilledBorderRadius}: 1.25rem; + ${chipTokens.width}: auto; + ${chipTokens.height}: 2.5rem; + ${chipTokens.padding}: 0 0.875rem; + + ${chipTokens.fontFamily}: var(--plasma-typo-body-m-font-family); + ${chipTokens.fontSize}: var(--plasma-typo-body-m-font-size); + ${chipTokens.fontStyle}: var(--plasma-typo-body-m-font-style); + ${chipTokens.fontWeight}: var(--plasma-typo-body-m-font-weight); + ${chipTokens.letterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${chipTokens.lineHeight}: var(--plasma-typo-body-m-line-height); + + ${chipTokens.leftContentMarginLeft}: -0.125rem; + ${chipTokens.leftContentMarginRight}: 0.375rem; + ${chipTokens.clearContentMarginLeft}: 0.5rem; + ${chipTokens.clearContentMarginRight}: -0.25rem; + + ${chipTokens.scaleHover}: 1.02; + ${chipTokens.scaleActive}: 0.98; + + ${chipTokens.closeIconSize}: 1.25rem; + `, + s: css` + ${chipTokens.borderRadius}: 0.5rem; + ${chipTokens.pilledBorderRadius}: 1rem; + ${chipTokens.width}: auto; + ${chipTokens.height}: 2rem; + ${chipTokens.padding}: 0 0.875rem; + + ${chipTokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${chipTokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${chipTokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${chipTokens.fontWeight}: var(--plasma-typo-body-s-font-weight); + ${chipTokens.letterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${chipTokens.lineHeight}: var(--plasma-typo-body-s-line-height); + + ${chipTokens.leftContentMarginLeft}: -0.125rem; + ${chipTokens.leftContentMarginRight}: 0.25rem; + ${chipTokens.clearContentMarginLeft}: 0.375rem; + ${chipTokens.clearContentMarginRight}: -0.25rem; + + ${chipTokens.scaleHover}: 1.02; + ${chipTokens.scaleActive}: 0.98; + + ${chipTokens.closeIconSize}: 1rem; + `, + xs: css` + ${chipTokens.borderRadius}: 0.375rem; + ${chipTokens.pilledBorderRadius}: 0.75rem; + ${chipTokens.width}: auto; + ${chipTokens.height}: 1.5rem; + ${chipTokens.padding}: 0 0.625rem; + + ${chipTokens.fontFamily}: var(--plasma-typo-body-xs-font-family); + ${chipTokens.fontSize}: var(--plasma-typo-body-xs-font-size); + ${chipTokens.fontStyle}: var(--plasma-typo-body-xs-font-style); + ${chipTokens.fontWeight}: var(--plasma-typo-body-xs-font-weight); + ${chipTokens.letterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${chipTokens.lineHeight}: var(--plasma-typo-body-xs-line-height); + + ${chipTokens.leftContentMarginLeft}: -0.125rem; + ${chipTokens.leftContentMarginRight}: 0.25rem; + ${chipTokens.clearContentMarginLeft}: 0.25rem; + ${chipTokens.clearContentMarginRight}: -0.25rem; + + ${chipTokens.scaleHover}: 1.02; + ${chipTokens.scaleActive}: 0.98; + + ${chipTokens.closeIconSize}: 1rem; + `, + }, + disabled: { + true: css` + ${chipTokens.disabledOpacity}: 0.4; + `, + }, + focused: { + true: css` + ${chipTokens.focusColor}: var(--text-accent); + `, + }, + pilled: { + true: css``, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Chip/Chip.stories.tsx b/packages/plasma-giga/src/components/Chip/Chip.stories.tsx new file mode 100644 index 0000000000..06b362ba6c --- /dev/null +++ b/packages/plasma-giga/src/components/Chip/Chip.stories.tsx @@ -0,0 +1,88 @@ +import React from 'react'; +import type { Meta, StoryObj } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; + +import { Chip } from '.'; + +const views = ['default', 'secondary', 'accent', 'positive', 'warning', 'negative']; +const sizes = ['l', 'm', 's', 'xs']; + +const onClear = action('onClear'); + +const meta: Meta<typeof Chip> = { + title: 'Data Display/Chip', + component: Chip, + decorators: [InSpacingDecorator], + argTypes: { + view: { + options: views, + control: { + type: 'select', + }, + }, + size: { + options: sizes, + control: { + type: 'select', + }, + }, + ...disableProps(['readOnly', 'onClear', 'contentLeft', 'contentRight', 'contentClearButton', 'text']), + }, +}; + +export default meta; + +type Story = StoryObj<typeof Chip>; + +const TrashIcon = (props) => ( + <svg width="100%" viewBox="0 0 24 24" fill="none" {...props}> + <path + fillRule="evenodd" + clipRule="evenodd" + d="M8 5.5A2.5 2.5 0 0110.5 3h3A2.5 2.5 0 0116 5.5V6h-2v-.5a.5.5 0 00-.5-.5h-3a.5.5 0 00-.5.5V6H8v-.5zM4 8a1 1 0 011-1h14a1 1 0 110 2h-1v9.5a2.5 2.5 0 01-2.5 2.5h-7A2.5 2.5 0 016 18.5V9H5a1 1 0 01-1-1z" + fill="currentColor" + /> + </svg> +); + +export const Default: Story = { + args: { + text: 'This is chip', + view: 'default', + size: 'm', + hasClear: true, + disabled: false, + focused: true, + pilled: false, + onClear, + }, +}; + +export const WithIcon: Story = { + args: { ...Default.args }, + render: (args) => { + const iconSizeMapper = { + l: '1.5rem', + m: '1.25rem', + s: '1rem', + xs: '0.75rem', + }; + const iconSize = args.size || 'm'; + + return ( + <Chip + contentLeft={<TrashIcon width={iconSizeMapper[iconSize]} height={iconSizeMapper[iconSize]} />} + {...args} + /> + ); + }, +}; + +export const LongText: Story = { + args: { + ...Default.args, + text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.', + }, + render: (args) => <Chip style={{ width: '10rem' }} {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Chip/Chip.tsx b/packages/plasma-giga/src/components/Chip/Chip.tsx new file mode 100644 index 0000000000..d51e60e955 --- /dev/null +++ b/packages/plasma-giga/src/components/Chip/Chip.tsx @@ -0,0 +1,11 @@ +import { chipConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Chip.config'; + +const mergedConfig = mergeConfig(chipConfig, config); +const ChipComponent = component(mergedConfig); + +/** + * Компонент chip. + */ +export const Chip = ChipComponent; diff --git a/packages/plasma-giga/src/components/Chip/index.ts b/packages/plasma-giga/src/components/Chip/index.ts new file mode 100644 index 0000000000..7e428a1843 --- /dev/null +++ b/packages/plasma-giga/src/components/Chip/index.ts @@ -0,0 +1,3 @@ +export { Chip } from './Chip'; + +export type { ChipProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/ChipGroup/ChipGroup.config.ts b/packages/plasma-giga/src/components/ChipGroup/ChipGroup.config.ts new file mode 100644 index 0000000000..900181d986 --- /dev/null +++ b/packages/plasma-giga/src/components/ChipGroup/ChipGroup.config.ts @@ -0,0 +1,138 @@ +import { css, chipGroupTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + view: { + default: css` + ${tokens.chipColor}: var(--inverse-text-primary); + ${tokens.chipBackground}: var(--surface-solid-default); + ${tokens.chipColorHover}: var(--inverse-text-primary); + ${tokens.chipBackgroundHover}: var(--surface-solid-default-hover); + ${tokens.chipColorActive}: var(--inverse-text-primary); + ${tokens.chipBackgroundActive}: var(--surface-solid-default-active); + `, + secondary: css` + ${tokens.chipColor}: var(--text-primary); + ${tokens.chipBackground}: var(--surface-transparent-secondary); + ${tokens.chipColorHover}: var(--text-primary); + ${tokens.chipBackgroundHover}: var(--surface-transparent-secondary-hover); + ${tokens.chipColorActive}: var(--text-primary); + ${tokens.chipBackgroundActive}: var(--surface-transparent-secondary-active); + `, + accent: css` + ${tokens.chipColor}: var(--on-dark-text-primary); + ${tokens.chipBackground}: var(--surface-accent); + ${tokens.chipColorHover}: var(--on-dark-text-primary); + ${tokens.chipBackgroundHover}: var(--surface-accent-hover); + ${tokens.chipColorActive}: var(--on-dark-text-primary); + ${tokens.chipBackgroundActive}: var(--surface-accent-active); + `, + }, + size: { + l: css` + ${tokens.chipBorderRadius}: 0.75rem; + ${tokens.chipWidth}: auto; + ${tokens.chipHeight}: 3rem; + ${tokens.chipPadding}: 0 1rem; + + ${tokens.chipFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.chipFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.chipFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.chipFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.chipLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.chipLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.chipLeftContentMarginLeft}: -0.125rem; + ${tokens.chipLeftContentMarginRight}: 0.5rem; + ${tokens.chipClearContentMarginLeft}: 0.625rem; + ${tokens.chipClearContentMarginRight}: -0.25rem; + + ${tokens.chipScaleHover}: 1.02; + ${tokens.chipScaleActive}: 0.98; + + ${tokens.chipCloseIconSize}: 1.5rem; + `, + m: css` + ${tokens.chipBorderRadius}: 0.625rem; + ${tokens.chipWidth}: auto; + ${tokens.chipHeight}: 2.5rem; + ${tokens.chipPadding}: 0 0.875rem; + + ${tokens.chipFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.chipFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.chipFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.chipFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.chipLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.chipLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.chipLeftContentMarginLeft}: -0.125rem; + ${tokens.chipLeftContentMarginRight}: 0.375rem; + ${tokens.chipClearContentMarginLeft}: 0.5rem; + ${tokens.chipClearContentMarginRight}: -0.25rem; + + ${tokens.chipScaleHover}: 1.02; + ${tokens.chipScaleActive}: 0.98; + + ${tokens.chipCloseIconSize}: 1rem; + `, + s: css` + ${tokens.chipBorderRadius}: 0.5rem; + ${tokens.chipWidth}: auto; + ${tokens.chipHeight}: 2rem; + ${tokens.chipPadding}: 0 0.875rem; + + ${tokens.chipFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.chipFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.chipFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.chipFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.chipLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.chipLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.chipLeftContentMarginLeft}: -0.125rem; + ${tokens.chipLeftContentMarginRight}: 0.25rem; + ${tokens.chipClearContentMarginLeft}: 0.375rem; + ${tokens.chipClearContentMarginRight}: -0.25rem; + + ${tokens.chipScaleHover}: 1.02; + ${tokens.chipScaleActive}: 0.98; + + ${tokens.chipCloseIconSize}: 1rem; + `, + xs: css` + ${tokens.chipBorderRadius}: 0.375rem; + ${tokens.chipWidth}: auto; + ${tokens.chipHeight}: 1.5rem; + ${tokens.chipPadding}: 0 0.625rem; + + ${tokens.chipFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.chipFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.chipFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.chipFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.chipLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.chipLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.chipLeftContentMarginLeft}: -0.125rem; + ${tokens.chipLeftContentMarginRight}: 0.25rem; + ${tokens.chipClearContentMarginLeft}: 0.25rem; + ${tokens.chipClearContentMarginRight}: -0.25rem; + + ${tokens.chipScaleHover}: 1.02; + ${tokens.chipScaleActive}: 0.98; + + ${tokens.chipCloseIconSize}: 1rem; + `, + }, + gap: { + dense: css` + ${tokens.chipGroupItemsGap}: 0.125rem; + `, + wide: css` + ${tokens.chipGroupItemsGap}: 0.5rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/ChipGroup/ChipGroup.stories.tsx b/packages/plasma-giga/src/components/ChipGroup/ChipGroup.stories.tsx new file mode 100644 index 0000000000..2aadccfef5 --- /dev/null +++ b/packages/plasma-giga/src/components/ChipGroup/ChipGroup.stories.tsx @@ -0,0 +1,94 @@ +import React from 'react'; +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; + +import { Chip } from '../Chip/Chip'; + +import { ChipGroup } from './ChipGroup'; + +type StoryProps = ComponentProps<typeof ChipGroup> & { itemsCount?: number }; +type Story = StoryObj<StoryProps>; + +const views = ['default', 'accent', 'secondary']; +const sizes = ['l', 'm', 's', 'xs']; +const gapValues = ['dense', 'wide']; + +const meta: Meta<typeof ChipGroup> = { + title: 'Data Display/ChipGroup', + decorators: [InSpacingDecorator], + argTypes: { + size: { + options: sizes, + control: { type: 'select' }, + if: { arg: 'isCommonChipStyles', truthy: true }, + }, + view: { + options: views, + control: { type: 'select' }, + if: { arg: 'isCommonChipStyles', truthy: true }, + }, + gap: { + options: gapValues, + control: { + type: 'select', + }, + }, + }, +}; + +export default meta; + +export const Default: Story = { + args: { + itemsCount: 5, + gap: 'dense', + isWrapped: false, + view: 'default', + size: 'm', + isCommonChipStyles: true, + }, + argTypes: { + ...disableProps(['isCommonChipStyles']), + }, + render: ({ itemsCount, ...args }: StoryProps) => { + return ( + <ChipGroup {...args}> + {Array(itemsCount) + .fill(true) + .map((_, i) => ( + <Chip text={`Chip ${i}`} key={`chip_${i}`} hasClear={false} /> + ))} + </ChipGroup> + ); + }, +}; + +export const CustomChips: Story = { + args: { + ...Default.args, + isCommonChipStyles: false, + }, + argTypes: { + ...disableProps(['itemsCount', 'isWrapped']), + }, + render: (args: StoryProps) => { + return ( + <> + <h3>Группа Chip с разными темами</h3> + <ChipGroup {...args}> + <Chip text="Primary" view="default" hasClear={false} /> + <Chip text="Secondary" view="secondary" hasClear={false} /> + <Chip text="Accent" view="accent" hasClear={false} /> + </ChipGroup> + + <h3>Группа Chip с разными размерами</h3> + <ChipGroup {...args}> + <Chip text="Primary" view="default" size="l" hasClear={false} /> + <Chip text="Secondary" view="secondary" size="m" hasClear={false} /> + <Chip text="Accent" view="accent" size="s" hasClear={false} /> + </ChipGroup> + </> + ); + }, +}; diff --git a/packages/plasma-giga/src/components/ChipGroup/ChipGroup.ts b/packages/plasma-giga/src/components/ChipGroup/ChipGroup.ts new file mode 100644 index 0000000000..e8e4cec187 --- /dev/null +++ b/packages/plasma-giga/src/components/ChipGroup/ChipGroup.ts @@ -0,0 +1,7 @@ +import { chipGroupConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './ChipGroup.config'; + +const mergedConfig = mergeConfig(chipGroupConfig, config); + +export const ChipGroup = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/ChipGroup/index.ts b/packages/plasma-giga/src/components/ChipGroup/index.ts new file mode 100644 index 0000000000..2fabf5989d --- /dev/null +++ b/packages/plasma-giga/src/components/ChipGroup/index.ts @@ -0,0 +1 @@ +export { ChipGroup } from './ChipGroup'; diff --git a/packages/plasma-giga/src/components/Combobox/Combobox.config.ts b/packages/plasma-giga/src/components/Combobox/Combobox.config.ts new file mode 100644 index 0000000000..a2cc9ec94b --- /dev/null +++ b/packages/plasma-giga/src/components/Combobox/Combobox.config.ts @@ -0,0 +1,630 @@ +import { css, comboboxNewTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + labelPlacement: 'outer', + }, + variations: { + view: { + default: css` + ${tokens.textFieldColor}: var(--text-primary); + ${tokens.textFieldClearColor}: var(--text-primary); + + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + ${tokens.textFieldClearPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldClearPlaceholderColorFocus}: var(--text-tertiary); + + ${tokens.textFieldBackgroundColor}: var(--surface-transparent-primary); + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-secondary); + ${tokens.textFieldCaretColor}: var(--text-accent); + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + ${tokens.textFieldLabelColor}: var(--text-primary); + ${tokens.textFieldLeftHelperColor}: var(--text-secondary); + ${tokens.textFieldFocusColor}: var(--text-accent); + + ${tokens.textFieldContentSlotColor}: var(--text-secondary); + ${tokens.textFieldContentSlotColorHover}: var(--text-secondary-hover); + ${tokens.textFieldContentSlotColorActive}: var(--text-secondary-active); + + ${tokens.textFieldIndicatorColor}: var(--surface-negative); + ${tokens.textFieldOptionalColor}: var(--text-tertiary); + + ${tokens.textFieldChipCloseIconColor}: var(--text-secondary); + ${tokens.textFieldChipColor}: var(--text-primary); + ${tokens.textFieldChipBackground}: var(--surface-transparent-secondary); + ${tokens.textFieldChipColorHover}: var(--text-primary); + ${tokens.textFieldChipBackgroundHover}: var(--surface-transparent-secondary-hover); + ${tokens.textFieldChipColorActive}: var(--text-primary); + ${tokens.textFieldChipBackgroundActive}: var(--surface-transparent-secondary-active); + ${tokens.textFieldChipBackgroundReadOnly}: var(--surface-transparent-secondary); + ${tokens.textFieldChipColorReadOnly}: var(--text-primary); + ${tokens.textFieldChipBackgroundReadOnlyHover}: var(--surface-transparent-secondary); + ${tokens.textFieldChipColorReadOnlyHover}: var(--text-primary); + ${tokens.textFieldChipOpacityReadonly}: 0.72; + + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + `, + positive: css` + ${tokens.textFieldColor}: var(--text-primary); + ${tokens.textFieldClearColor}: var(--text-positive); + + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + ${tokens.textFieldClearPlaceholderColor}: var(--text-positive); + ${tokens.textFieldClearPlaceholderColorFocus}: var(--text-positive); + + ${tokens.textFieldBackgroundColor}: var(--surface-transparent-positive); + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-positive-active); + ${tokens.textFieldCaretColor}: var(--text-accent); + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + ${tokens.textFieldLabelColor}: var(--text-primary); + ${tokens.textFieldLeftHelperColor}: var(--text-positive); + ${tokens.textFieldFocusColor}: var(--text-accent); + + ${tokens.textFieldContentSlotColor}: var(--text-secondary); + ${tokens.textFieldContentSlotColorHover}: var(--text-secondary-hover); + ${tokens.textFieldContentSlotColorActive}: var(--text-secondary-active); + + ${tokens.textFieldIndicatorColor}: var(--surface-negative); + ${tokens.textFieldOptionalColor}: var(--text-tertiary); + + ${tokens.textFieldChipCloseIconColor}: var(--text-secondary); + ${tokens.textFieldChipColor}: var(--text-primary); + ${tokens.textFieldChipBackground}: var(--surface-transparent-secondary); + ${tokens.textFieldChipColorHover}: var(--text-primary); + ${tokens.textFieldChipBackgroundHover}: var(--surface-transparent-secondary-hover); + ${tokens.textFieldChipColorActive}: var(--text-primary); + ${tokens.textFieldChipBackgroundActive}: var(--surface-transparent-secondary-active); + ${tokens.textFieldChipBackgroundReadOnly}: var(--surface-transparent-secondary); + ${tokens.textFieldChipColorReadOnly}: var(--text-primary); + ${tokens.textFieldChipBackgroundReadOnlyHover}: var(--surface-transparent-secondary); + ${tokens.textFieldChipColorReadOnlyHover}: var(--text-primary); + ${tokens.textFieldChipOpacityReadonly}: 0.72; + + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + `, + warning: css` + ${tokens.textFieldColor}: var(--text-primary); + ${tokens.textFieldClearColor}: var(--text-warning); + + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + ${tokens.textFieldClearPlaceholderColor}: var(--text-warning); + ${tokens.textFieldClearPlaceholderColorFocus}: var(--text-warning); + + ${tokens.textFieldBackgroundColor}: var(--surface-transparent-warning); + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-warning-active); + ${tokens.textFieldCaretColor}: var(--text-accent); + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + ${tokens.textFieldLabelColor}: var(--text-primary); + ${tokens.textFieldLeftHelperColor}: var(--text-warning); + ${tokens.textFieldFocusColor}: var(--text-accent); + + ${tokens.textFieldContentSlotColor}: var(--text-secondary); + ${tokens.textFieldContentSlotColorHover}: var(--text-secondary-hover); + ${tokens.textFieldContentSlotColorActive}: var(--text-secondary-active); + + ${tokens.textFieldIndicatorColor}: var(--surface-negative); + ${tokens.textFieldOptionalColor}: var(--text-tertiary); + + ${tokens.textFieldChipCloseIconColor}: var(--text-secondary); + ${tokens.textFieldChipColor}: var(--text-primary); + ${tokens.textFieldChipBackground}: var(--surface-transparent-secondary); + ${tokens.textFieldChipColorHover}: var(--text-primary); + ${tokens.textFieldChipBackgroundHover}: var(--surface-transparent-secondary-hover); + ${tokens.textFieldChipColorActive}: var(--text-primary); + ${tokens.textFieldChipBackgroundActive}: var(--surface-transparent-secondary-active); + ${tokens.textFieldChipBackgroundReadOnly}: var(--surface-transparent-secondary); + ${tokens.textFieldChipColorReadOnly}: var(--text-primary); + ${tokens.textFieldChipBackgroundReadOnlyHover}: var(--surface-transparent-secondary); + ${tokens.textFieldChipColorReadOnlyHover}: var(--text-primary); + ${tokens.textFieldChipOpacityReadonly}: 0.72; + + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + `, + negative: css` + ${tokens.textFieldColor}: var(--text-primary); + ${tokens.textFieldClearColor}: var(--text-negative); + + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + ${tokens.textFieldClearPlaceholderColor}: var(--text-negative); + ${tokens.textFieldClearPlaceholderColorFocus}: var(--text-negative); + + ${tokens.textFieldBackgroundColor}: var(--surface-transparent-negative); + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-negative-active); + + ${tokens.textFieldCaretColor}: var(--text-accent); + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + ${tokens.textFieldLabelColor}: var(--text-primary); + ${tokens.textFieldLeftHelperColor}: var(--text-negative); + ${tokens.textFieldFocusColor}: var(--text-accent); + + ${tokens.textFieldContentSlotColor}: var(--text-secondary); + ${tokens.textFieldContentSlotColorHover}: var(--text-secondary-hover); + ${tokens.textFieldContentSlotColorActive}: var(--text-secondary-active); + + ${tokens.textFieldIndicatorColor}: var(--surface-negative); + ${tokens.textFieldOptionalColor}: var(--text-tertiary); + + ${tokens.textFieldChipCloseIconColor}: var(--text-secondary); + ${tokens.textFieldChipColor}: var(--text-primary); + ${tokens.textFieldChipBackground}: var(--surface-transparent-secondary); + ${tokens.textFieldChipColorHover}: var(--text-primary); + ${tokens.textFieldChipBackgroundHover}: var(--surface-transparent-secondary-hover); + ${tokens.textFieldChipColorActive}: var(--text-primary); + ${tokens.textFieldChipBackgroundActive}: var(--surface-transparent-secondary-active); + ${tokens.textFieldChipBackgroundReadOnly}: var(--surface-transparent-secondary); + ${tokens.textFieldChipColorReadOnly}: var(--text-primary); + ${tokens.textFieldChipBackgroundReadOnlyHover}: var(--surface-transparent-secondary); + ${tokens.textFieldChipColorReadOnlyHover}: var(--text-primary); + ${tokens.textFieldChipOpacityReadonly}: 0.72; + + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + `, + }, + size: { + l: css` + ${tokens.textFieldHeight}: 3.5rem; + ${tokens.textFieldPadding}: 1.0625rem 1.125rem 1.0625rem 1.125rem; + ${tokens.textFieldPaddingWithChips}: 0.375rem; + ${tokens.textFieldBorderRadius}: 0.875rem; + + ${tokens.textFieldLeftContentMargin}: -0.0625rem 0.5rem -0.0625rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.textFieldLabelOffset}: 0.75rem; + ${tokens.textFieldLabelFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.textFieldLabelFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.textFieldLabelFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.textFieldLeftHelperOffset}: 0.25rem; + ${tokens.textFieldLeftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLeftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLeftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLeftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLeftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLeftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelInnerPadding}: 0.5625rem 0 0.125rem 0; + ${tokens.textFieldContentLabelInnerPadding}: 1.5625rem 0 0.5625rem 0; + + ${tokens.textFieldIndicatorSizeInner}: 0.5rem; + ${tokens.textFieldIndicatorSizeOuter}: 0.375rem; + ${tokens.textFieldIndicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.textFieldIndicatorLabelPlacementOuter}: 0.5rem auto auto -0.75rem; + ${tokens.textFieldIndicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.textFieldIndicatorLabelPlacementOuterRight}: 0.25rem -0.625rem auto auto; + ${tokens.textFieldClearIndicatorLabelPlacementInner}: 1.5rem auto auto -0.875rem; + ${tokens.textFieldClearIndicatorLabelPlacementInnerRight}: 1.5rem -0.875rem auto auto; + ${tokens.textFieldClearIndicatorHintInnerRight}: 1.5rem -2.25rem auto auto; + + ${tokens.textFieldChipGap}: 0.25rem; + ${tokens.textFieldChipBorderRadius}: 0.5rem; + ${tokens.textFieldChipWidth}: auto; + ${tokens.textFieldChipHeight}: 2.75rem; + ${tokens.textFieldChipPadding}: 0 0.75rem 0 1rem; + ${tokens.textFieldChipClearContentMarginLeft}: 0.625rem; + ${tokens.textFieldChipClearContentMarginRight}: 0rem; + ${tokens.textFieldChipCloseIconSize}: 1.5rem; + ${tokens.textFieldChipFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.textFieldChipFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.textFieldChipFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.textFieldChipFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.textFieldChipLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.textFieldChipLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.emptyStatePadding}: 1rem; + ${tokens.padding}: 0.125rem; + ${tokens.borderRadius}: 0.875rem; + + ${tokens.itemHeight}: 1.5rem; + ${tokens.itemPadding}: 1rem 1.125rem; + ${tokens.itemPaddingTight}: 0.75rem 1.125rem; + ${tokens.itemBorderRadius}: 0.75rem; + ${tokens.itemIconMargin}: 0 0.5rem 0 0; + ${tokens.itemIconSize}: 1.5rem; + ${tokens.itemIconSizeTight}: 1.5rem; + + ${tokens.cellPadding}: 0rem; + ${tokens.cellPaddingLeftContent}: 0rem; + ${tokens.cellPaddingContent}: 0rem; + ${tokens.cellPaddingRightContent}: 0rem; + ${tokens.cellTextboxGap}: 0.125rem; + ${tokens.cellGap}: 0.375rem; + ${tokens.cellTitleFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.cellTitleFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.cellTitleFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.cellTitleFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.cellTitleLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.cellTitleLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.fontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.fontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.fontLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.checkboxTriggerSize}: 1.25rem; + ${tokens.checkboxTriggerSizeTight}: 1.25rem; + ${tokens.checkboxTriggerBorderRadius}: 0.375rem; + ${tokens.checkboxTriggerBorderRadiusTight}: 0.375rem; + ${tokens.checkboxFillColor}: var(--text-accent); + ${tokens.checkboxIconColor}: var(--on-dark-text-primary); + ${tokens.checkboxTriggerBorderColor}: var(--text-secondary); + + ${tokens.indicatorSize}: 0.375rem; + `, + m: css` + ${tokens.textFieldHeight}: 3rem; + ${tokens.textFieldPadding}: 0.875rem 1rem 0.875rem 1rem; + ${tokens.textFieldPaddingWithChips}: 0.375rem; + ${tokens.textFieldBorderRadius}: 0.75rem; + + ${tokens.textFieldLeftContentMargin}: -0.125rem 0.375rem -0.125rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.125rem -0.125rem -0.125rem 0.75rem; + + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.textFieldLabelOffset}: 0.625rem; + ${tokens.textFieldLabelFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.textFieldLabelFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.textFieldLabelFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.textFieldLeftHelperOffset}: 0.25rem; + ${tokens.textFieldLeftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLeftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLeftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLeftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLeftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLeftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelInnerPadding}: 0.375rem 0 0.125rem 0; + ${tokens.textFieldContentLabelInnerPadding}: 1.375rem 0 0.375rem 0; + + ${tokens.textFieldIndicatorSizeInner}: 0.5rem; + ${tokens.textFieldIndicatorSizeOuter}: 0.375rem; + ${tokens.textFieldIndicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.textFieldIndicatorLabelPlacementOuter}: 0.375rem auto auto -0.75rem; + ${tokens.textFieldIndicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.textFieldIndicatorLabelPlacementOuterRight}: 0.25rem -0.6875rem auto auto; + ${tokens.textFieldClearIndicatorLabelPlacementInner}: 1.25rem auto auto -0.875rem; + ${tokens.textFieldClearIndicatorLabelPlacementInnerRight}: 1.25rem -0.875rem auto auto; + ${tokens.textFieldClearIndicatorHintInnerRight}: 1.25rem -2.25rem auto auto; + + ${tokens.textFieldChipGap}: 0.25rem; + ${tokens.textFieldChipBorderRadius}: 0.375rem; + ${tokens.textFieldChipWidth}: auto; + ${tokens.textFieldChipHeight}: 2.25rem; + ${tokens.textFieldChipPadding}: 0 0.625rem 0 0.875rem; + ${tokens.textFieldChipClearContentMarginLeft}: 0.5rem; + ${tokens.textFieldChipClearContentMarginRight}: 0rem; + ${tokens.textFieldChipCloseIconSize}: 1.25rem; + ${tokens.textFieldChipFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.textFieldChipFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.textFieldChipFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.textFieldChipFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.textFieldChipLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.textFieldChipLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.emptyStatePadding}: 0.875rem 1rem 0.875rem 1rem; + ${tokens.padding}: 0.125rem; + ${tokens.borderRadius}: 0.75rem; + + ${tokens.itemHeight}: 1.5rem; + ${tokens.itemPadding}: 0.75rem 0.875rem; + ${tokens.itemPaddingTight}: 0.5rem 0.875rem; + ${tokens.itemBorderRadius}: 0.625rem; + ${tokens.itemIconMargin}: 0 0.375rem 0 0; + ${tokens.itemIconSize}: 1.5rem; + ${tokens.itemIconSizeTight}: 1.5rem; + + ${tokens.cellPadding}: 0rem; + ${tokens.cellPaddingLeftContent}: 0rem; + ${tokens.cellPaddingContent}: 0rem; + ${tokens.cellPaddingRightContent}: 0rem; + ${tokens.cellTextboxGap}: 0.125rem; + ${tokens.cellGap}: 0.375rem; + ${tokens.cellTitleFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.cellTitleFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.cellTitleFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.cellTitleFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.cellTitleLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.cellTitleLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.fontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.fontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.fontLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.checkboxTriggerSize}: 1.25rem; + ${tokens.checkboxTriggerSizeTight}: 1.25rem; + ${tokens.checkboxTriggerBorderRadius}: 0.375rem; + ${tokens.checkboxTriggerBorderRadiusTight}: 0.375rem; + ${tokens.checkboxFillColor}: var(--text-accent); + ${tokens.checkboxIconColor}: var(--on-dark-text-primary); + ${tokens.checkboxTriggerBorderColor}: var(--text-secondary); + + ${tokens.indicatorSize}: 0.375rem; + `, + s: css` + ${tokens.textFieldHeight}: 2.5rem; + ${tokens.textFieldPadding}: 0.6875rem 0.875rem 0.6875rem 0.875rem; + ${tokens.textFieldPaddingWithChips}: 0.375rem; + ${tokens.textFieldBorderRadius}: 0.625rem; + + ${tokens.textFieldLeftContentMargin}: -0.1875rem 0.25rem -0.1875rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.1875rem -0.125rem -0.1875rem 0.75rem; + + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.textFieldLabelOffset}: 0.5rem; + ${tokens.textFieldLabelFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.textFieldLabelFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.textFieldLabelFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.textFieldLeftHelperOffset}: 0.25rem; + ${tokens.textFieldLeftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLeftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLeftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLeftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLeftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLeftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelInnerPadding}: 0.3125rem 0 0 0; + ${tokens.textFieldContentLabelInnerPadding}: 1.0625rem 0 0.3125rem 0; + + ${tokens.textFieldIndicatorSizeInner}: 0.375rem; + ${tokens.textFieldIndicatorSizeOuter}: 0.375rem; + ${tokens.textFieldIndicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.textFieldIndicatorLabelPlacementOuter}: 0.3125rem auto auto -0.6875rem; + ${tokens.textFieldIndicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.textFieldIndicatorLabelPlacementOuterRight}: 0.25rem -0.625rem auto auto; + ${tokens.textFieldClearIndicatorLabelPlacementInner}: 1.063rem auto auto -0.75rem; + ${tokens.textFieldClearIndicatorLabelPlacementInnerRight}: 1.063rem -0.75rem auto auto; + ${tokens.textFieldClearIndicatorHintInnerRight}: 1.063rem -2.125rem auto auto; + + ${tokens.textFieldChipGap}: 0.25rem; + ${tokens.textFieldChipBorderRadius}: 0.25rem; + ${tokens.textFieldChipWidth}: auto; + ${tokens.textFieldChipHeight}: 1.75rem; + ${tokens.textFieldChipPadding}: 0 0.5rem 0 0.75rem; + ${tokens.textFieldChipClearContentMarginLeft}: 0.375rem; + ${tokens.textFieldChipClearContentMarginRight}: 0rem; + ${tokens.textFieldChipCloseIconSize}: 1rem; + ${tokens.textFieldChipFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.textFieldChipFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.textFieldChipFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.textFieldChipFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.textFieldChipLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.textFieldChipLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.emptyStatePadding}: 0.625rem 0.875rem 0.625rem 0.875rem; + ${tokens.padding}: 0.125rem; + ${tokens.borderRadius}: 0.625rem; + + ${tokens.itemHeight}: 1.5rem; + ${tokens.itemPadding}: 0.5rem 0.75rem; + ${tokens.itemPaddingTight}: 0.25rem 0.75rem; + ${tokens.itemBorderRadius}: 0.5rem; + ${tokens.itemIconSize}: 1.5rem; + ${tokens.itemIconSizeTight}: 1rem; + ${tokens.itemIconMargin}: 0 0.375rem 0 0; + + ${tokens.cellPadding}: 0rem; + ${tokens.cellPaddingLeftContent}: 0rem; + ${tokens.cellPaddingContent}: 0rem; + ${tokens.cellPaddingRightContent}: 0rem; + ${tokens.cellTextboxGap}: 0.125rem; + ${tokens.cellGap}: 0.375rem; + ${tokens.cellTitleFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.cellTitleFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.cellTitleFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.cellTitleFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.cellTitleLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.cellTitleLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.fontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.fontLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.checkboxTriggerSize}: 1.25rem; + ${tokens.checkboxTriggerSizeTight}: 0.875rem; + ${tokens.checkboxTriggerBorderRadius}: 0.375rem; + ${tokens.checkboxTriggerBorderRadiusTight}: 0.25rem; + ${tokens.checkboxFillColor}: var(--text-accent); + ${tokens.checkboxIconColor}: var(--on-dark-text-primary); + ${tokens.checkboxTriggerBorderColor}: var(--text-secondary); + + ${tokens.indicatorSize}: 0.375rem; + `, + xs: css` + ${tokens.textFieldHeight}: 2rem; + ${tokens.textFieldPadding}: 0.5625rem 0.625rem 0.5625rem 0.625rem; + ${tokens.textFieldPaddingWithChips}: 0.375rem; + ${tokens.textFieldBorderRadius}: 0.5rem; + + ${tokens.textFieldLeftContentMargin}: -0.0625rem 0.25rem -0.0625rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelOffset}: 0.375rem; + ${tokens.textFieldLabelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLabelFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLabelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLeftHelperOffset}: 0.25rem; + ${tokens.textFieldLeftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLeftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLeftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLeftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLeftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLeftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelInnerPadding}: 0.3125rem 0 0 0; + ${tokens.textFieldContentLabelInnerPadding}: 1.0625rem 0 0.3125rem 0; + + ${tokens.textFieldIndicatorSizeInner}: 0.375rem; + ${tokens.textFieldIndicatorSizeOuter}: 0.375rem; + ${tokens.textFieldIndicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.textFieldIndicatorLabelPlacementOuter}: 0.25rem auto auto -0.625rem; + ${tokens.textFieldIndicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.textFieldIndicatorLabelPlacementOuterRight}: 0.125rem -0.6875rem auto auto; + ${tokens.textFieldClearIndicatorLabelPlacementInner}: 0.813rem auto auto -0.625rem; + ${tokens.textFieldClearIndicatorLabelPlacementInnerRight}: 0.813rem -0.625rem auto auto; + ${tokens.textFieldClearIndicatorHintInnerRight}: 0.813rem -1.875rem auto auto; + + ${tokens.textFieldChipGap}: 0.25rem; + ${tokens.textFieldChipBorderRadius}: 0.125rem; + ${tokens.textFieldChipWidth}: auto; + ${tokens.textFieldChipHeight}: 1.25rem; + ${tokens.textFieldChipPadding}: 0 0.375rem 0 0.625rem; + ${tokens.textFieldChipClearContentMarginLeft}: 0.25rem; + ${tokens.textFieldChipClearContentMarginRight}: 0rem; + ${tokens.textFieldChipCloseIconSize}: 0.75rem; + ${tokens.textFieldChipFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldChipFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldChipFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldChipFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldChipLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldChipLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.emptyStatePadding}: 0.5rem 0.625rem 0.5rem 0.625rem; + ${tokens.padding}: 0.125rem; + ${tokens.borderRadius}: 0.5rem; + + ${tokens.itemHeight}: 1rem; + ${tokens.itemPadding}: 0.5rem; + ${tokens.itemPaddingTight}: 0.25rem 0.5rem; + ${tokens.itemBorderRadius}: 0.375rem; + ${tokens.itemIconMargin}: 0 0.25rem 0 0; + ${tokens.itemIconSize}: 1rem; + ${tokens.itemIconSizeTight}: 1rem; + + ${tokens.cellPadding}: 0rem; + ${tokens.cellPaddingLeftContent}: 0rem; + ${tokens.cellPaddingContent}: 0rem; + ${tokens.cellPaddingRightContent}: 0rem; + ${tokens.cellTextboxGap}: 0.125rem; + ${tokens.cellGap}: 0.25rem; + ${tokens.cellTitleFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.cellTitleFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.cellTitleFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.cellTitleFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.cellTitleLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.cellTitleLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.fontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.fontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.fontLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.checkboxTriggerSize}: 0.875rem; + ${tokens.checkboxTriggerSizeTight}: 0.875rem; + ${tokens.checkboxTriggerBorderRadius}: 0.25rem; + ${tokens.checkboxTriggerBorderRadiusTight}: 0.25rem; + ${tokens.checkboxFillColor}: var(--text-accent); + ${tokens.checkboxIconColor}: var(--on-dark-text-primary); + ${tokens.checkboxTriggerBorderColor}: var(--text-secondary); + + ${tokens.indicatorSize}: 0.375rem; + `, + }, + labelPlacement: { + inner: css` + ${tokens.textFieldPlaceholderColor}: var(--plasma-input-label-color, var(--plasma-input-placeholder-color, var(--plasma-colors-secondary))); + ${tokens.textFieldLabelInnerFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLabelInnerFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLabelInnerFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLabelInnerFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLabelInnerLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLabelInnerLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + outer: css``, + }, + disabled: { + true: css` + ${tokens.textFieldDisabledOpacity}: 0.4; + `, + }, + readOnly: { + true: css` + ${tokens.textFieldColorReadOnly}: var(--text-secondary); + ${tokens.textFieldBackgroundColorReadOnly}: var(--surface-transparent-primary); + ${tokens.textFieldPlaceholderColorReadOnly}: var(--text-secondary); + ${tokens.textFieldLeftHelperColorReadOnly}: var(--text-secondary); + ${tokens.textFieldLabelColorReadOnly}: var(--text-secondary); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Combobox/Combobox.stories.tsx b/packages/plasma-giga/src/components/Combobox/Combobox.stories.tsx new file mode 100644 index 0000000000..cebf47077e --- /dev/null +++ b/packages/plasma-giga/src/components/Combobox/Combobox.stories.tsx @@ -0,0 +1,397 @@ +import React, { useState } from 'react'; +import type { ComponentProps } from 'react'; +import type { Meta, StoryObj } from '@storybook/react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import { IconDone } from '@salutejs/plasma-icons'; + +import { Combobox } from './Combobox'; + +type StorySelectProps = ComponentProps<typeof Combobox> & { + enableContentLeft?: boolean; +}; + +const view = ['default', 'positive', 'warning', 'negative']; +const size = ['xs', 's', 'm', 'l']; +const labelPlacement = ['inner', 'outer']; +const variant = ['normal', 'tight']; + +const meta: Meta<StorySelectProps> = { + title: 'Data Entry/Combobox', + decorators: [InSpacingDecorator], + component: Combobox, + argTypes: { + size: { + options: size, + control: { + type: 'select', + }, + }, + view: { + options: view, + control: { + type: 'select', + }, + }, + labelPlacement: { + options: labelPlacement, + control: { + type: 'select', + }, + }, + variant: { + options: variant, + control: { + type: 'select', + }, + }, + listWidth: { + control: { + type: 'text', + }, + }, + listOverflow: { + control: { + type: 'text', + }, + }, + listHeight: { + control: { + type: 'text', + }, + }, + disabled: { + control: { type: 'boolean' }, + if: { arg: 'alwaysOpened', truthy: false }, + }, + readOnly: { + control: { type: 'boolean' }, + if: { arg: 'alwaysOpened', truthy: false }, + }, + targetAmount: { + control: { type: 'number' }, + if: { arg: 'isTargetAmount', truthy: true }, + }, + requiredPlacement: { + options: ['left', 'right'], + control: { + type: 'select', + }, + }, + required: { + control: { + type: 'boolean', + }, + if: { arg: 'optional', truthy: false }, + }, + optional: { + control: { + type: 'boolean', + }, + if: { arg: 'required', truthy: false }, + }, + }, + args: { + label: 'Label', + labelPlacement: 'outer', + placeholder: 'Placeholder', + helperText: 'Helper text', + size: 'm', + view: 'default', + enableContentLeft: false, + isTargetAmount: false, + targetAmount: undefined, + variant: 'normal', + alwaysOpened: false, + disabled: false, + readOnly: false, + optional: false, + required: false, + requiredPlacement: 'right', + }, + parameters: { + controls: { + include: [ + 'size', + 'view', + 'enableContentLeft', + 'label', + 'labelPlacement', + 'placeholder', + 'helperText', + 'isTargetAmount', + 'targetAmount', + 'closeAfterSelect', + 'alwaysOpened', + 'variant', + 'disabled', + 'readOnly', + 'listWidth', + 'listOverflow', + 'listHeight', + 'optional', + 'required', + 'requiredPlacement', + ], + }, + }, +}; + +export default meta; + +const items = [ + { + value: 'north_america', + label: 'Северная Америка', + }, + { + value: 'south_america', + label: 'Южная Америка', + items: [ + { + value: 'brazil', + label: 'Бразилия', + items: [ + { + value: 'rio_de_janeiro', + label: 'Рио-де-Жанейро', + }, + { + value: 'sao_paulo', + label: 'Сан-Паулу', + }, + ], + }, + { + value: 'argentina', + label: 'Аргентина', + items: [ + { + value: 'buenos_aires', + label: 'Буэнос-Айрес', + }, + { + value: 'cordoba', + label: 'Кордова', + }, + ], + }, + { + value: 'colombia', + label: 'Колумбия', + items: [ + { + value: 'bogota', + label: 'Богота', + }, + { + value: 'medellin', + label: 'Медельин', + }, + ], + }, + ], + }, + { + value: 'europe', + label: 'Европа', + items: [ + { + value: 'france', + label: 'Франция', + items: [ + { + value: 'paris', + label: 'Париж', + }, + { + value: 'lyon', + label: 'Лион', + }, + ], + }, + { + value: 'germany', + label: 'Германия', + items: [ + { + value: 'berlin', + label: 'Берлин', + }, + { + value: 'munich', + label: 'Мюнхен', + }, + ], + }, + { + value: 'italy', + label: 'Италия', + items: [ + { + value: 'rome', + label: 'Рим', + }, + { + value: 'milan', + label: 'Милан', + }, + ], + }, + { + value: 'spain', + label: 'Испания', + items: [ + { + value: 'madrid', + label: 'Мадрид', + }, + { + value: 'barcelona', + label: 'Барселона', + }, + ], + }, + { + value: 'united_kingdom', + label: 'Великобритания', + items: [ + { + value: 'london', + label: 'Лондон', + }, + { + value: 'manchester', + label: 'Манчестер', + }, + ], + }, + ], + }, + { + value: 'asia', + label: 'Азия', + items: [ + { + value: 'china', + label: 'Китай', + items: [ + { + value: 'beijing', + label: 'Пекин', + }, + { + value: 'shanghai', + label: 'Шанхай', + }, + ], + }, + { + value: 'japan', + label: 'Япония', + items: [ + { + value: 'tokyo', + label: 'Токио', + }, + { + value: 'osaka', + label: 'Осака', + }, + ], + }, + { + value: 'india', + label: 'Индия', + items: [ + { + value: 'delhi', + label: 'Дели', + }, + { + value: 'mumbai', + label: 'Мумбаи', + }, + ], + }, + { + value: 'south_korea', + label: 'Южная Корея', + items: [ + { + value: 'seoul', + label: 'Сеул', + }, + { + value: 'busan', + label: 'Пусан', + }, + ], + }, + { + value: 'thailand', + label: 'Таиланд', + items: [ + { + value: 'bangkok', + label: 'Бангкок', + }, + { + value: 'phuket', + label: 'Пхукет', + }, + ], + }, + ], + }, + { + value: 'africa', + label: 'Африка', + isDisabled: true, + }, +]; + +const SingleStory = (args: StorySelectProps) => { + const [value, setValue] = useState(''); + + return ( + <div style={{ width: '400px' }}> + <Combobox + {...args} + items={items} + value={value} + onChange={setValue} + contentLeft={args.enableContentLeft ? <IconDone size="s" /> : undefined} + /> + </div> + ); +}; + +export const Single: StoryObj<StorySelectProps> = { + render: (args) => <SingleStory {...args} />, + parameters: { + controls: { + exclude: ['isTargetAmount'], + }, + }, +}; + +const MultipleStory = (args: StorySelectProps) => { + const [value, setValue] = useState([]); + + return ( + <div style={{ width: '400px' }}> + <Combobox + {...args} + multiple + items={items} + value={value} + onChange={setValue} + contentLeft={args.enableContentLeft ? <IconDone size="s" /> : undefined} + /> + </div> + ); +}; + +export const Multiple: StoryObj<StorySelectProps> = { + render: (args) => <MultipleStory {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Combobox/Combobox.tsx b/packages/plasma-giga/src/components/Combobox/Combobox.tsx new file mode 100644 index 0000000000..28dc917da4 --- /dev/null +++ b/packages/plasma-giga/src/components/Combobox/Combobox.tsx @@ -0,0 +1,26 @@ +import { + comboboxNewConfig, + component, + mergeConfig, + fixedForwardRef, +} from '@salutejs/plasma-new-hope/styled-components'; +import type { ItemOption, ComboboxProps, DistributiveOmit, DistributivePick } from '@salutejs/plasma-new-hope'; +import React, { ComponentProps } from 'react'; + +import { config } from './Combobox.config'; + +const mergedConfig = mergeConfig(comboboxNewConfig, config); +const ComboboxNew = component(mergedConfig); + +type PropsFromConfig = keyof typeof config['variations']; + +type Props<T extends ItemOption> = DistributiveOmit<ComboboxProps<T>, PropsFromConfig> & + DistributivePick<ComponentProps<typeof ComboboxNew>, PropsFromConfig>; + +const ComboboxComponent = <T extends ItemOption>(props: Props<T>, ref: React.ForwardedRef<HTMLInputElement>) => { + return <ComboboxNew ref={ref} {...(props as any)} />; +}; + +const Combobox = fixedForwardRef(ComboboxComponent); + +export { Combobox }; diff --git a/packages/plasma-giga/src/components/Combobox/index.ts b/packages/plasma-giga/src/components/Combobox/index.ts new file mode 100644 index 0000000000..661776cd10 --- /dev/null +++ b/packages/plasma-giga/src/components/Combobox/index.ts @@ -0,0 +1 @@ +export { Combobox } from './Combobox'; diff --git a/packages/plasma-giga/src/components/Counter/Counter.config.ts b/packages/plasma-giga/src/components/Counter/Counter.config.ts new file mode 100644 index 0000000000..140aa43a57 --- /dev/null +++ b/packages/plasma-giga/src/components/Counter/Counter.config.ts @@ -0,0 +1,97 @@ +import { css, counterTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'xs', + }, + variations: { + view: { + default: css` + ${counterTokens.color}: var(--inverse-text-primary); + ${counterTokens.background}: var(--surface-solid-default); + `, + accent: css` + ${counterTokens.color}: var(--on-dark-text-primary); + ${counterTokens.background}: var(--surface-accent); + `, + positive: css` + ${counterTokens.color}: var(--on-dark-text-primary); + ${counterTokens.background}: var(--surface-positive); + `, + warning: css` + ${counterTokens.color}: var(--on-dark-text-primary); + ${counterTokens.background}: var(--surface-warning); + `, + negative: css` + ${counterTokens.color}: var(--on-dark-text-primary); + ${counterTokens.background}: var(--surface-negative); + `, + dark: css` + ${counterTokens.color}: var(--on-dark-text-primary); + ${counterTokens.background}: var(--on-light-surface-solid-default); + `, + light: css` + ${counterTokens.color}: var(--on-light-text-primary); + ${counterTokens.background}: var(--on-dark-surface-solid-default); + `, + }, + size: { + l: css` + ${counterTokens.borderRadius}: 1rem; + ${counterTokens.height}: 1.75rem; + ${counterTokens.padding}: 0 0.625rem; + ${counterTokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${counterTokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${counterTokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${counterTokens.fontWeight}: var(--plasma-typo-body-s-font-weight); + ${counterTokens.letterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${counterTokens.lineHeight}: var(--plasma-typo-body-s-line-height); + `, + m: css` + ${counterTokens.borderRadius}: 1rem; + ${counterTokens.height}: 1.5rem; + ${counterTokens.padding}: 0 0.5rem; + ${counterTokens.fontFamily}: var(--plasma-typo-body-xs-font-family); + ${counterTokens.fontSize}: var(--plasma-typo-body-xs-font-size); + ${counterTokens.fontStyle}: var(--plasma-typo-body-xs-font-style); + ${counterTokens.fontWeight}: var(--plasma-typo-body-xs-font-weight); + ${counterTokens.letterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${counterTokens.lineHeight}: var(--plasma-typo-body-xs-line-height); + `, + s: css` + ${counterTokens.borderRadius}: 1rem; + ${counterTokens.height}: 1.25rem; + ${counterTokens.padding}: 0 0.375rem; + ${counterTokens.fontFamily}: var(--plasma-typo-body-xxs-font-family); + ${counterTokens.fontSize}: var(--plasma-typo-body-xxs-font-size); + ${counterTokens.fontStyle}: var(--plasma-typo-body-xxs-font-style); + ${counterTokens.fontWeight}: var(--plasma-typo-body-xxs-font-weight); + ${counterTokens.letterSpacing}: var(--plasma-typo-body-xxs-letter-spacing); + ${counterTokens.lineHeight}: var(--plasma-typo-body-xxs-line-height); + `, + xs: css` + ${counterTokens.borderRadius}: 1rem; + ${counterTokens.height}: 1rem; + ${counterTokens.padding}: 0 0.25rem; + ${counterTokens.fontFamily}: var(--plasma-typo-body-xxs-font-family); + ${counterTokens.fontSize}: var(--plasma-typo-body-xxs-font-size); + ${counterTokens.fontStyle}: var(--plasma-typo-body-xxs-font-style); + ${counterTokens.fontWeight}: var(--plasma-typo-body-xxs-font-weight); + ${counterTokens.letterSpacing}: var(--plasma-typo-body-xxs-letter-spacing); + ${counterTokens.lineHeight}: var(--plasma-typo-body-xxs-line-height); + `, + xxs: css` + ${counterTokens.borderRadius}: 1rem; + ${counterTokens.height}: 0.75rem; + ${counterTokens.padding}: 0 0.125rem; + ${counterTokens.fontFamily}: var(--plasma-typo-body-xxs-font-family); + ${counterTokens.fontSize}: var(--plasma-typo-body-xxs-font-size); + ${counterTokens.fontStyle}: var(--plasma-typo-body-xxs-font-style); + ${counterTokens.fontWeight}: var(--plasma-typo-body-xxs-font-weight); + ${counterTokens.letterSpacing}: var(--plasma-typo-body-xxs-letter-spacing); + ${counterTokens.lineHeight}: var(--plasma-typo-body-xxs-line-height); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Counter/Counter.stories.tsx b/packages/plasma-giga/src/components/Counter/Counter.stories.tsx new file mode 100644 index 0000000000..e1543d8f37 --- /dev/null +++ b/packages/plasma-giga/src/components/Counter/Counter.stories.tsx @@ -0,0 +1,41 @@ +import { disableProps, InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import type { StoryObj, Meta } from '@storybook/react'; + +import { Counter } from './Counter'; + +const sizes = ['l', 'm', 's', 'xs', 'xxs']; +const views = ['default', 'accent', 'positive', 'warning', 'negative', 'dark', 'light']; + +const meta: Meta<typeof Counter> = { + title: 'Data Display/Counter', + component: Counter, + decorators: [InSpacingDecorator], + argTypes: { + size: { + options: sizes, + control: { + type: 'select', + }, + }, + view: { + options: views, + control: { + type: 'select', + }, + }, + ...disableProps(['contentLeft', 'contentRight']), + }, +}; + +export default meta; + +type Story = StoryObj<typeof Counter>; + +export const Default: Story = { + args: { + count: 123, + maxCount: 200, + view: 'default', + size: 'xs', + }, +}; diff --git a/packages/plasma-giga/src/components/Counter/Counter.tsx b/packages/plasma-giga/src/components/Counter/Counter.tsx new file mode 100644 index 0000000000..20465cc23e --- /dev/null +++ b/packages/plasma-giga/src/components/Counter/Counter.tsx @@ -0,0 +1,10 @@ +import { counterConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Counter.config'; + +const mergedConfig = mergeConfig(counterConfig, config); + +/** + * Компонент Counter. + */ +export const Counter = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/Counter/index.ts b/packages/plasma-giga/src/components/Counter/index.ts new file mode 100644 index 0000000000..67564f8ebb --- /dev/null +++ b/packages/plasma-giga/src/components/Counter/index.ts @@ -0,0 +1,3 @@ +export { Counter } from './Counter'; +export { counterTokens } from '@salutejs/plasma-new-hope/styled-components'; +export type { CounterProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/DatePicker/DatePicker.config.ts b/packages/plasma-giga/src/components/DatePicker/DatePicker.config.ts new file mode 100644 index 0000000000..45070b81c9 --- /dev/null +++ b/packages/plasma-giga/src/components/DatePicker/DatePicker.config.ts @@ -0,0 +1,622 @@ +import { datePickerTokens as tokens, css } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + view: { + default: css` + ${tokens.background}: var(--surface-transparent-primary); + ${tokens.backgroundError}: var(--surface-transparent-negative); + ${tokens.backgroundSuccess}: var(--surface-transparent-positive); + + ${tokens.dividerColor}: var(--text-primary); + ${tokens.labelColor}: var(--text-primary); + ${tokens.leftHelperColor}: var(--text-secondary); + + ${tokens.textFieldColor}: var(--text-primary); + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + ${tokens.textFieldCaretColor}: var(--text-accent); + + ${tokens.labelInnerFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.labelInnerFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.labelInnerFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.labelInnerFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.labelInnerLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.indicatorColor}: var(--surface-negative); + + ${tokens.textFieldBackgroundColor}: var(--surface-transparent-primary); + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-secondary); + ${tokens.textFieldBackgroundErrorColor}: var(--surface-transparent-negative); + ${tokens.textFieldBackgroundErrorColorFocus}: var(--surface-transparent-negative-active); + ${tokens.textFieldBackgroundSuccessColor}: var(--surface-transparent-positive); + ${tokens.textFieldBackgroundSuccessColorFocus}: var(--surface-transparent-positive-active); + + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + + ${tokens.focusColor}: var(--text-accent); + + ${tokens.calendarShadow}: var(--shadow-down-soft-s); + ${tokens.calendarSeparatorBackground}: var(--surface-transparent-secondary); + ${tokens.calendarBackgroundColor}: var(--surface-solid-card); + ${tokens.calendarSelectedItemBackground}: var(--surface-solid-default); + ${tokens.calendarSelectedItemColor}: var(--inverse-text-primary); + ${tokens.calendarSelectableItemBackgroundHover}: var(--surface-transparent-secondary); + ${tokens.calendarCurrentItemBorderColor}: var(--surface-solid-default); + ${tokens.calendarCurrentItemBackgroundHover}: transparent; + ${tokens.calendarCurrentItemColorHover}: var(--text-primary); + ${tokens.calendarCurrentItemChildBackgroundHover}: var(--surface-transparent-secondary); + ${tokens.calendarActiveItemBackground}: var(--surface-solid-default); + ${tokens.calendarActiveItemColor}: var(--inverse-text-primary); + ${tokens.calendarHoveredItemBackground}: var(--surface-accent); + ${tokens.calendarHoveredItemColor}: var(--text-primary); + ${tokens.calendarRangeBackground}: var(--surface-transparent-secondary); + ${tokens.calendarOutlineFocusColor}: var(--surface-accent); + ${tokens.calendarContentPrimaryColor}: var(--surface-solid-default); + ${tokens.calendarHeaderArrowColor}: ${tokens.calendarContentPrimaryColor}; + ${tokens.calendarContentSecondaryColor}: var(--text-secondary); + + ${tokens.iconButtonColor}: var(--text-primary); + ${tokens.iconButtonBackgroundColor}: var(--surface-clear); + ${tokens.iconButtonColorHover}: var(--text-primary-hover); + ${tokens.iconButtonBackgroundColorHover}: var(--surface-clear); + ${tokens.iconButtonColorActive}: var(--text-primary-hover); + ${tokens.iconButtonBackgroundColorActive}: var(--surface-clear); + ${tokens.iconButtonFocusColor}: var(--surface-accent); + `, + }, + size: { + l: css` + ${tokens.width}: 26.5rem; + ${tokens.borderRadius}: 0.875rem; + + ${tokens.dividerPadding}: 0 0.375rem; + ${tokens.dividerFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.dividerFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.dividerFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.dividerFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.dividerLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.dividerLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.leftContentMargin}: 0 0 0 1rem; + ${tokens.rightContentMargin}: 0; + + ${tokens.labelOffset}: 0.75rem; + ${tokens.labelInnerPadding}: 0.5625rem 0 0.125rem 0; + ${tokens.contentLabelInnerPadding}: 1.5625rem 0 0.5625rem 0; + + ${tokens.labelFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.labelFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.labelFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.labelFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.indicatorSize}: 0.5rem; + ${tokens.indicatorSizeOuter}: 0.375rem; + ${tokens.indicatorPlacement}: 0 0 0 0; + ${tokens.indicatorOuterPlacement}: 0.5rem auto auto -0.75rem; + ${tokens.indicatorPlacementRight}: 0 0 auto auto; + ${tokens.indicatorOuterPlacementRight}: 0.25rem -0.625rem auto auto; + + ${tokens.textFieldHeight}: 3.5rem; + ${tokens.textFieldBorderRadius}: 0.875rem; + ${tokens.textFieldPadding}: 1.0625rem 1.125rem 1.0625rem 1.125rem; + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.leftHelperOffset}: 0.25rem 0 0 0; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLeftContentMargin}: -0.0625rem 0.5rem -0.0625rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.calendarBorderRadius}: 0.875rem; + ${tokens.calendarWidth}: 26.5rem; + + ${tokens.calendarYearsPadding}: 0.5rem 1rem 1.125rem 1rem; + ${tokens.calendarYearItemBorderRadius}: 0.75rem; + ${tokens.calendarYearItemWidth}: 7.8125rem; + ${tokens.calendarYearItemHeight}: 5.25rem; + + ${tokens.calendarYearFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.calendarYearFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.calendarYearFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.calendarYearFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.calendarYearFontLineHeight}: var(--plasma-typo-body-l-line-height); + ${tokens.calendarYearFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.calendarYearSelectedFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + + ${tokens.calendarMonthsPadding}: 0.5rem 1rem 1.125rem 1rem; + ${tokens.calendarMonthItemBorderRadius}: 0.75rem; + ${tokens.calendarMonthItemWidth}: 7.8125rem; + ${tokens.calendarMonthItemHeight}: 5.25rem; + + ${tokens.calendarMonthFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.calendarMonthFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.calendarMonthFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.calendarMonthFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.calendarMonthFontLineHeight}: var(--plasma-typo-body-l-line-height); + ${tokens.calendarMonthFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.calendarMonthSelectedFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + + ${tokens.calendarQuartersPadding}: 0.5rem 0.5rem 0 0.5rem; + ${tokens.calendarQuarterItemBorderRadius}: 0.75rem; + ${tokens.calendarQuarterItemWidth}: 11.75rem; + ${tokens.calendarQuarterItemHeight}: 10.5rem; + + ${tokens.calendarQuarterFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.calendarQuarterFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.calendarQuarterFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.calendarQuarterFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.calendarQuarterFontLineHeight}: var(--plasma-typo-body-l-line-height); + ${tokens.calendarQuarterFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.calendarQuarterSelectedFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + + ${tokens.calendarDaysPadding}: 0.5rem 1rem 1.125rem 1rem; + ${tokens.calendarDayItemBorderRadius}: 0.75rem; + ${tokens.calendarDayItemWidth}: 3.5rem; + ${tokens.calendarDayItemHeight}: 3rem; + + ${tokens.calendarDayFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.calendarDayFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.calendarDayFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.calendarDayFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.calendarDayFontLineHeight}: var(--plasma-typo-body-l-line-height); + ${tokens.calendarDayFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.calendarDaySelectedFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + + ${tokens.calendarCurrentItemBorderWidth}: 0.063rem; + + ${tokens.calendarHeaderWrapperPadding}: 0.875rem 1rem 0 1rem; + ${tokens.calendarHeaderArrowGap}: 0.5rem; + + ${tokens.calendarHeaderPadding}: 0 0 0 1rem; + ${tokens.calendarHeaderDateGap}: 0.5rem; + + ${tokens.calendarHeaderFontFamily}: var(--plasma-typo-h3-font-family); + ${tokens.calendarHeaderFontSize}: var(--plasma-typo-h3-font-size); + ${tokens.calendarHeaderFontStyle}: var(--plasma-typo-h3-font-style); + ${tokens.calendarHeaderFontLetterSpacing}: var(--plasma-typo-h3-letter-spacing); + ${tokens.calendarHeaderFontLineHeight}: var(--plasma-typo-h3-line-height); + ${tokens.calendarHeaderFontWeight}: var(--plasma-typo-h3-font-weight); + ${tokens.calendarHeaderFontWeightBold}: var(--plasma-typo-h3-bold-font-weight); + + ${tokens.iconButtonHeight}: 3.5rem; + ${tokens.iconButtonWidth}: 3.5rem; + ${tokens.iconButtonPadding}: 1.5rem; + ${tokens.iconButtonRadius}: 0.875rem; + `, + m: css` + ${tokens.width}: 23rem; + ${tokens.borderRadius}: 0.75rem; + + ${tokens.dividerPadding}: 0 0.375rem; + ${tokens.dividerFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.dividerFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.dividerFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.dividerFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.dividerLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.dividerLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.leftContentMargin}: 0 0 0 0.875rem; + ${tokens.rightContentMargin}: 0; + + ${tokens.labelOffset}: 0.625rem; + ${tokens.labelInnerPadding}: 0.375rem 0 0.125rem 0; + ${tokens.contentLabelInnerPadding}: 1.375rem 0 0.375rem 0; + + ${tokens.labelFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.labelFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.labelFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.labelFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.indicatorSize}: 0.5rem; + ${tokens.indicatorSizeOuter}: 0.375rem; + ${tokens.indicatorPlacement}: 0 0 0 0; + ${tokens.indicatorOuterPlacement}: 0.375rem auto auto -0.75rem; + ${tokens.indicatorPlacementRight}: 0 0 auto auto; + ${tokens.indicatorOuterPlacementRight}: 0.25rem -0.6875rem auto auto; + + ${tokens.textFieldHeight}: 3rem; + ${tokens.textFieldBorderRadius}: 0.75rem; + ${tokens.textFieldPadding}: 0.875rem 1rem 0.875rem 1rem; + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.leftHelperOffset}: 0.25rem 0 0 0; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLeftContentMargin}: -0.125rem 0.375rem -0.125rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.125rem -0.125rem -0.125rem 0.75rem; + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.calendarWidth}: 23rem; + ${tokens.calendarBorderRadius}: 0.875rem; + + ${tokens.calendarYearsPadding}: 0.5rem 1rem 1.125rem 1rem; + ${tokens.calendarYearItemBorderRadius}: 0.625rem; + ${tokens.calendarYearItemWidth}: 6.688rem; + ${tokens.calendarYearItemHeight}: 4.375rem; + + ${tokens.calendarYearFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.calendarYearFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.calendarYearFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.calendarYearFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.calendarYearFontLineHeight}: var(--plasma-typo-body-m-line-height); + ${tokens.calendarYearFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.calendarYearSelectedFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + + ${tokens.calendarQuartersPadding}: 0.5rem 0.5rem 0 0.5rem; + ${tokens.calendarQuarterItemBorderRadius}: 0.625rem; + ${tokens.calendarQuarterItemWidth}: 10rem; + ${tokens.calendarQuarterItemHeight}: 8.5rem; + + ${tokens.calendarQuarterFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.calendarQuarterFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.calendarQuarterFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.calendarQuarterFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.calendarQuarterFontLineHeight}: var(--plasma-typo-body-m-line-height); + ${tokens.calendarQuarterFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.calendarQuarterSelectedFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + + ${tokens.calendarMonthsPadding}: 0.5rem 1rem 1.125rem 1rem; + ${tokens.calendarMonthItemBorderRadius}: 0.625rem; + ${tokens.calendarMonthItemWidth}: 6.688rem; + ${tokens.calendarMonthItemHeight}: 4.375rem; + + ${tokens.calendarMonthFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.calendarMonthFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.calendarMonthFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.calendarMonthFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.calendarMonthFontLineHeight}: var(--plasma-typo-body-m-line-height); + ${tokens.calendarMonthFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.calendarMonthSelectedFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + + ${tokens.calendarDaysPadding}: 0.5rem 1rem 1.125rem 1rem; + ${tokens.calendarDayItemBorderRadius}: 0.625rem; + ${tokens.calendarDayItemWidth}: 3rem; + ${tokens.calendarDayItemHeight}: 2.5rem; + + ${tokens.calendarDayFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.calendarDayFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.calendarDayFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.calendarDayFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.calendarDayFontLineHeight}: var(--plasma-typo-body-m-line-height); + ${tokens.calendarDayFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.calendarDaySelectedFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + + ${tokens.calendarCurrentItemBorderWidth}: 0.063rem; + + ${tokens.calendarHeaderWrapperPadding}: 0.75rem 1rem 0 1rem; + ${tokens.calendarHeaderArrowGap}: 0.5rem; + + ${tokens.calendarHeaderPadding}: 0 0 0 0.875rem; + ${tokens.calendarHeaderDateGap}: 0.375rem; + + ${tokens.calendarHeaderFontFamily}: var(--plasma-typo-h4-font-family); + ${tokens.calendarHeaderFontSize}: var(--plasma-typo-h4-font-size); + ${tokens.calendarHeaderFontStyle}: var(--plasma-typo-h4-font-style); + ${tokens.calendarHeaderFontLetterSpacing}: var(--plasma-typo-h4-letter-spacing); + ${tokens.calendarHeaderFontLineHeight}: var(--plasma-typo-h4-line-height); + ${tokens.calendarHeaderFontWeight}: var(--plasma-typo-h4-font-weight); + ${tokens.calendarHeaderFontWeightBold}: var(--plasma-typo-h4-bold-font-weight); + + ${tokens.iconButtonHeight}: 3rem; + ${tokens.iconButtonWidth}: 3rem; + ${tokens.iconButtonPadding}: 1.25rem; + ${tokens.iconButtonRadius}: 0.75rem; + `, + s: css` + ${tokens.width}: 19.5rem; + ${tokens.borderRadius}: 0.625rem; + + ${tokens.dividerPadding}: 0 0.375rem; + ${tokens.dividerFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.dividerFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.dividerFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.dividerFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.dividerLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.dividerLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.leftContentMargin}: 0 0 0 0.75rem; + ${tokens.rightContentMargin}: 0; + + ${tokens.labelOffset}: 0.5rem; + ${tokens.labelInnerPadding}: 0.3125rem 0 0 0; + ${tokens.contentLabelInnerPadding}: 1.0625rem 0 0.3125rem 0; + + ${tokens.labelFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.labelFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.labelFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.labelFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.indicatorSize}: 0.375rem; + ${tokens.indicatorSizeOuter}: 0.375rem; + ${tokens.indicatorPlacement}: 0 0 0 0; + ${tokens.indicatorOuterPlacement}: 0.3125rem auto auto -0.6875rem; + ${tokens.indicatorPlacementRight}: 0 0 auto auto; + ${tokens.indicatorOuterPlacementRight}: 0.25rem -0.625rem auto auto; + + ${tokens.textFieldHeight}: 2.5rem; + ${tokens.textFieldBorderRadius}: 0.625rem; + ${tokens.textFieldPadding}: 0.6875rem 0.875rem 0.6875rem 0.875rem; + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.leftHelperOffset}: 0.25rem 0 0 0; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLeftContentMargin}: -0.1875rem 0.25rem -0.1875rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.1875rem -0.125rem -0.1875rem 0.75rem; + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.calendarWidth}: 19.5rem; + ${tokens.calendarBorderRadius}: 0.875rem; + + ${tokens.calendarYearsPadding}: 0.5rem 1rem 0.875rem 1rem; + ${tokens.calendarYearItemBorderRadius}: 0.5rem; + ${tokens.calendarYearItemWidth}: 5.5rem; + ${tokens.calendarYearItemHeight}: 3.5rem; + + ${tokens.calendarYearFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.calendarYearFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.calendarYearFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.calendarYearFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.calendarYearFontLineHeight}: var(--plasma-typo-body-s-line-height); + ${tokens.calendarYearFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.calendarYearSelectedFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + + ${tokens.calendarQuartersPadding}: 0.5rem 0.5rem 0 0.5rem; + ${tokens.calendarQuarterItemBorderRadius}: 0.5rem; + ${tokens.calendarQuarterItemWidth}: 8.25rem; + ${tokens.calendarQuarterItemHeight}: 7rem; + + ${tokens.calendarQuarterFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.calendarQuarterFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.calendarQuarterFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.calendarQuarterFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.calendarQuarterFontLineHeight}: var(--plasma-typo-body-s-line-height); + ${tokens.calendarQuarterFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.calendarQuarterSelectedFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + + ${tokens.calendarMonthsPadding}: 0.5rem 1rem 0.875rem 1rem; + ${tokens.calendarMonthItemBorderRadius}: 0.5rem; + ${tokens.calendarMonthItemWidth}: 5.5rem; + ${tokens.calendarMonthItemHeight}: 3.5rem; + + ${tokens.calendarMonthFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.calendarMonthFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.calendarMonthFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.calendarMonthFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.calendarMonthFontLineHeight}: var(--plasma-typo-body-s-line-height); + ${tokens.calendarMonthFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.calendarMonthSelectedFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + + ${tokens.calendarDaysPadding}: 0.5rem 1rem 0.875rem 1rem; + ${tokens.calendarDayItemBorderRadius}: 0.5rem; + ${tokens.calendarDayItemWidth}: 2.5rem; + ${tokens.calendarDayItemHeight}: 2rem; + + ${tokens.calendarDayFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.calendarDayFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.calendarDayFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.calendarDayFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.calendarDayFontLineHeight}: var(--plasma-typo-body-s-line-height); + ${tokens.calendarDayFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.calendarDaySelectedFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + + ${tokens.calendarCurrentItemBorderWidth}: 0.063rem; + + ${tokens.calendarHeaderWrapperPadding}: 0.75rem 1rem 0 1rem; + ${tokens.calendarHeaderArrowGap}: 0.5rem; + + ${tokens.calendarHeaderPadding}: 0 0 0 0.5rem; + ${tokens.calendarHeaderDateGap}: 0.25rem; + + ${tokens.calendarHeaderFontFamily}: var(--plasma-typo-h4-font-family); + ${tokens.calendarHeaderFontSize}: var(--plasma-typo-h4-font-size); + ${tokens.calendarHeaderFontStyle}: var(--plasma-typo-h4-font-style); + ${tokens.calendarHeaderFontLetterSpacing}: var(--plasma-typo-h4-letter-spacing); + ${tokens.calendarHeaderFontLineHeight}: var(--plasma-typo-h4-line-height); + ${tokens.calendarHeaderFontWeight}: var(--plasma-typo-h4-font-weight); + ${tokens.calendarHeaderFontWeightBold}: var(--plasma-typo-h4-bold-font-weight); + + ${tokens.iconButtonHeight}: 2rem; + ${tokens.iconButtonWidth}: 2rem; + ${tokens.iconButtonPadding}: 0.75rem; + ${tokens.iconButtonRadius}: 0.5rem; + `, + xs: css` + ${tokens.width}: 19rem; + ${tokens.borderRadius}: 0.5rem; + + ${tokens.dividerPadding}: 0 0.375rem; + ${tokens.dividerFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.dividerFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.dividerFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.dividerFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.dividerLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.dividerLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.leftContentMargin}: 0 0 0 0.5rem; + ${tokens.rightContentMargin}: 0; + + ${tokens.labelOffset}: 0.375rem; + ${tokens.labelInnerPadding}: 0.3125rem 0 0 0; + ${tokens.contentLabelInnerPadding}: 1.0625rem 0 0.3125rem 0; + + ${tokens.labelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.labelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.labelFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.labelFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.indicatorSize}: 0.375rem; + ${tokens.indicatorSizeOuter}: 0.375rem; + ${tokens.indicatorPlacement}: 0 0 0 0; + ${tokens.indicatorOuterPlacement}: 0.25rem auto auto -0.625rem; + ${tokens.indicatorPlacementRight}: 0 0 auto auto; + ${tokens.indicatorOuterPlacementRight}: 0.125rem -0.6875rem auto auto; + + ${tokens.textFieldHeight}: 2rem; + ${tokens.textFieldBorderRadius}: 0.5rem; + ${tokens.textFieldPadding}: 0.5625rem 0.625rem 0.5625rem 0.625rem; + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.leftHelperOffset}: 0.25rem 0 0 0; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLeftContentMargin}: -0.0625rem 0.25rem -0.0625rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.calendarWidth}: 19rem; + ${tokens.calendarBorderRadius}: 0.5rem; + + ${tokens.calendarYearsPadding}: 0.5rem 0.75rem 0.625rem 0.75rem; + ${tokens.calendarYearItemBorderRadius}: 0.375rem; + ${tokens.calendarYearItemWidth}: 5.625rem; + ${tokens.calendarYearItemHeight}: 3.281rem; + + ${tokens.calendarYearFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.calendarYearFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.calendarYearFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.calendarYearFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.calendarYearFontLineHeight}: var(--plasma-typo-body-xs-line-height); + ${tokens.calendarYearFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.calendarYearSelectedFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + + ${tokens.calendarQuartersPadding}: 0.375rem 0.25rem 0 0.25rem; + ${tokens.calendarQuarterItemBorderRadius}: 0.375rem; + ${tokens.calendarQuarterItemWidth}: 8.25rem; + ${tokens.calendarQuarterItemHeight}: 6.563rem; + + ${tokens.calendarQuarterFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.calendarQuarterFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.calendarQuarterFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.calendarQuarterFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.calendarQuarterFontLineHeight}: var(--plasma-typo-body-xs-line-height); + ${tokens.calendarQuarterFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.calendarQuarterSelectedFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + + ${tokens.calendarMonthsPadding}: 0.5rem 0.75rem 0.625rem 0.75rem; + ${tokens.calendarMonthItemBorderRadius}: 0.375rem; + ${tokens.calendarMonthItemWidth}: 5.625rem; + ${tokens.calendarMonthItemHeight}: 3.281rem; + + ${tokens.calendarMonthFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.calendarMonthFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.calendarMonthFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.calendarMonthFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.calendarMonthFontLineHeight}: var(--plasma-typo-body-xs-line-height); + ${tokens.calendarMonthFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.calendarMonthSelectedFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + + ${tokens.calendarDaysPadding}: 0.375rem 0.75rem 0.625rem 0.75rem; + ${tokens.calendarDayItemBorderRadius}: 0.375rem; + ${tokens.calendarDayItemWidth}: 2.5rem; + ${tokens.calendarDayItemHeight}: 2rem; + + ${tokens.calendarDayFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.calendarDayFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.calendarDayFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.calendarDayFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.calendarDayFontLineHeight}: var(--plasma-typo-body-xs-line-height); + ${tokens.calendarDayFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.calendarDaySelectedFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + + ${tokens.calendarCurrentItemBorderWidth}: 0.063rem; + + ${tokens.calendarHeaderWrapperPadding}: 0.5rem 0.75rem 0 0.75rem; + ${tokens.calendarHeaderArrowGap}: 0; + + ${tokens.calendarHeaderPadding}: 0 0 0 0.5rem; + ${tokens.calendarHeaderDateGap}: 0.25rem; + + ${tokens.calendarHeaderFontFamily}: var(--plasma-typo-h5-font-family); + ${tokens.calendarHeaderFontSize}: var(--plasma-typo-h5-font-size); + ${tokens.calendarHeaderFontStyle}: var(--plasma-typo-h5-font-style); + ${tokens.calendarHeaderFontLetterSpacing}: var(--plasma-typo-h5-letter-spacing); + ${tokens.calendarHeaderFontLineHeight}: var(--plasma-typo-h5-line-height); + ${tokens.calendarHeaderFontWeight}: var(--plasma-typo-h5-font-weight); + ${tokens.calendarHeaderFontWeightBold}: var(--plasma-typo-h5-bold-font-weight); + + ${tokens.iconButtonHeight}: 2rem; + ${tokens.iconButtonWidth}: 2rem; + ${tokens.iconButtonPadding}: 0.75rem; + ${tokens.iconButtonRadius}: 0.5rem; + `, + }, + disabled: { + true: css` + ${tokens.disabledOpacity}: 0.4; + `, + }, + readOnly: { + true: css` + ${tokens.backgroundReadOnly}: var(--surface-transparent-primary); + ${tokens.labelColorReadOnly}: var(--text-secondary); + ${tokens.leftHelperColorReadOnly}: var(--text-secondary); + ${tokens.dividerColorReadOnly}: var(--text-secondary); + + ${tokens.textFieldColorReadOnly}: var(--text-secondary); + ${tokens.textFieldBackgroundColorReadOnly}: var(--surface-transparent-primary); + ${tokens.textFieldPlaceholderColorReadOnly}: var(--text-secondary); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/DatePicker/DatePicker.stories.tsx b/packages/plasma-giga/src/components/DatePicker/DatePicker.stories.tsx new file mode 100644 index 0000000000..41955e2308 --- /dev/null +++ b/packages/plasma-giga/src/components/DatePicker/DatePicker.stories.tsx @@ -0,0 +1,374 @@ +import React, { ComponentProps, useEffect, useRef, useState } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { IconPlaceholder, InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { IconButton } from '../IconButton'; + +import { DatePicker, DatePickerRange } from './DatePicker'; + +const onChangeValue = action('onChangeValue'); +const onBlur = action('onBlur'); +const onFocus = action('onFocus'); + +const onChangeFirstValue = action('onChangeFirstValue'); +const onChangeSecondValue = action('onChangeSecondValue'); + +const sizes = ['l', 'm', 's', 'xs']; +const views = ['default']; +const dividers = ['none', 'dash', 'icon']; +const labelPlacements = ['outer', 'inner']; +const requiredPlacements = ['left', 'right']; + +const meta: Meta = { + title: 'Data Entry/DatePicker', + decorators: [InSpacingDecorator], + argTypes: { + view: { + options: views, + control: { + type: 'inline-radio', + }, + }, + size: { + options: sizes, + control: { + type: 'inline-radio', + }, + }, + min: { + control: { + type: 'date', + }, + }, + max: { + control: { + type: 'date', + }, + }, + lang: { + options: ['ru', 'en'], + control: { + type: 'inline-radio', + }, + }, + format: { + options: ['DD.MM.YYYY', 'DD MMMM YYYY'], + control: { + type: 'select', + }, + }, + requiredPlacement: { + options: requiredPlacements, + control: { + type: 'select', + }, + if: { arg: 'required', truthy: true }, + }, + }, +}; + +export default meta; + +type StoryPropsDefault = ComponentProps<typeof DatePicker> & { + enableContentLeft: boolean; + enableContentRight: boolean; +}; + +const StoryDefault = ({ + enableContentLeft, + enableContentRight, + valueError, + valueSuccess, + size, + ...rest +}: StoryPropsDefault) => { + const [isOpen, setIsOpen] = useState(false); + + const iconSize = size === 'xs' ? 'xs' : 's'; + + return ( + <DatePicker + opened={isOpen} + size={size} + valueError={valueError} + valueSuccess={valueSuccess} + contentLeft={enableContentLeft ? <IconPlaceholder size={iconSize} /> : undefined} + contentRight={enableContentRight ? <IconPlaceholder size={iconSize} /> : undefined} + onBlur={onBlur} + onFocus={onFocus} + onToggle={(is) => setIsOpen(is)} + onChangeValue={(e, currentValue) => { + onChangeValue(e, currentValue); + }} + onCommitDate={() => setIsOpen(false)} + {...rest} + /> + ); +}; + +export const Default: StoryObj<StoryPropsDefault> = { + argTypes: { + defaultDate: { + control: { + type: 'date', + }, + }, + labelPlacement: { + options: labelPlacements, + control: { + type: 'inline-radio', + }, + }, + }, + args: { + label: 'Лейбл', + labelPlacement: 'outer', + leftHelper: 'Подсказка к полю', + placeholder: '30.05.2024', + size: 'l', + view: 'default', + lang: 'ru', + format: 'DD.MM.YYYY', + defaultDate: new Date(2024, 5, 14), + min: new Date(2024, 1, 1), + max: new Date(2024, 12, 29), + maskWithFormat: false, + required: false, + requiredPlacement: 'right', + disabled: false, + readOnly: false, + textBefore: '', + enableContentLeft: true, + enableContentRight: true, + valueError: false, + valueSuccess: false, + }, + render: (args) => <StoryDefault {...args} />, +}; + +type StoryPropsRange = ComponentProps<typeof DatePickerRange> & { + enableContentLeft: boolean; + enableContentRight: boolean; + enableFirstTextfieldContentLeft: boolean; + enableSecondTextfieldContentLeft: boolean; + enableFirstTextfieldContentRight: boolean; + enableSecondTextfieldContentRight: boolean; +}; + +const ActionButton = ({ size }) => { + const iconSize = size === 'xs' ? 'xs' : 's'; + return ( + <IconButton view="clear" size={size}> + <IconPlaceholder size={iconSize} /> + </IconButton> + ); +}; + +const StoryRange = ({ + dividerVariant, + enableContentLeft, + enableContentRight, + firstTextfieldTextBefore, + secondTextfieldTextBefore, + enableFirstTextfieldContentLeft, + enableSecondTextfieldContentLeft, + enableFirstTextfieldContentRight, + enableSecondTextfieldContentRight, + firstValueError, + firstValueSuccess, + secondValueError, + secondValueSuccess, + size, + ...rest +}: StoryPropsRange) => { + const rangeRef = useRef(null); + + const [isOpen, setIsOpen] = useState(false); + const [firstDate, setFirstDate] = useState<string | Date>(''); + + const iconSize = size === 'xs' ? 'xs' : 's'; + const showDividerIcon = dividerVariant === 'icon'; + const showDefaultTextBefore = dividerVariant === 'none'; + + const dividerIconProps = { + dividerIcon: showDividerIcon ? <IconPlaceholder size={iconSize} /> : null, + dividerVariant, + }; + + return ( + <DatePickerRange + size={size} + ref={rangeRef} + opened={isOpen} + firstValueError={firstValueError} + firstValueSuccess={firstValueSuccess} + secondValueError={secondValueError} + secondValueSuccess={secondValueSuccess} + contentLeft={enableContentLeft ? <IconPlaceholder size={iconSize} /> : undefined} + contentRight={enableContentRight ? <ActionButton size={size} /> : undefined} + firstTextfieldContentLeft={ + enableFirstTextfieldContentLeft ? <IconPlaceholder size={iconSize} /> : undefined + } + firstTextfieldContentRight={ + enableFirstTextfieldContentRight ? <IconPlaceholder size={iconSize} /> : undefined + } + secondTextfieldContentLeft={ + enableSecondTextfieldContentLeft ? <IconPlaceholder size={iconSize} /> : undefined + } + secondTextfieldContentRight={ + enableSecondTextfieldContentRight ? <IconPlaceholder size={iconSize} /> : undefined + } + firstTextfieldTextBefore={ + showDefaultTextBefore ? firstTextfieldTextBefore || 'С' : firstTextfieldTextBefore + } + secondTextfieldTextBefore={ + showDefaultTextBefore ? secondTextfieldTextBefore || 'ПО' : secondTextfieldTextBefore + } + onToggle={(is) => setIsOpen(is)} + onChangeFirstValue={(e, currentValue) => { + onChangeFirstValue(e, currentValue); + }} + onChangeSecondValue={(e, currentValue) => { + onChangeSecondValue(e, currentValue); + }} + onCommitFirstDate={(currentValue) => { + setFirstDate(currentValue); + }} + onCommitSecondDate={(currentValue) => { + firstDate && currentValue && setIsOpen(false); + }} + {...dividerIconProps} + {...rest} + /> + ); +}; + +export const Range: StoryObj<StoryPropsRange> = { + argTypes: { + dividerVariant: { + options: dividers, + control: { + type: 'inline-radio', + }, + }, + }, + args: { + label: 'Лейбл', + leftHelper: 'Подсказка к полю', + firstPlaceholder: '30.05.2024', + secondPlaceholder: '04.06.2024', + firstTextfieldTextBefore: '', + secondTextfieldTextBefore: '', + firstTextfieldTextAfter: '', + secondTextfieldTextAfter: '', + size: 'l', + view: 'default', + isDoubleCalendar: false, + dividerVariant: 'dash', + min: new Date(2024, 1, 1), + max: new Date(2024, 12, 29), + lang: 'ru', + format: 'DD.MM.YYYY', + maskWithFormat: false, + required: false, + requiredPlacement: 'right', + disabled: false, + readOnly: false, + enableContentLeft: true, + enableContentRight: true, + enableFirstTextfieldContentLeft: false, + enableFirstTextfieldContentRight: false, + enableSecondTextfieldContentLeft: false, + enableSecondTextfieldContentRight: false, + + firstValueError: false, + firstValueSuccess: false, + secondValueError: false, + secondValueSuccess: false, + }, + render: (args) => <StoryRange {...args} />, +}; + +const StoryDeferred = ({ + enableContentLeft, + enableContentRight, + valueError, + valueSuccess, + size, + ...rest +}: StoryPropsDefault) => { + const [isOpen, setIsOpen] = useState(false); + + const [defVal, setDefVal] = useState<Date | undefined>(undefined); + + const iconSize = size === 'xs' ? 'xs' : 's'; + + useEffect(() => { + setTimeout(() => { + setDefVal(new Date(2024, 5, 14)); + }, 5000); + }, []); + + return ( + <> + <h3>Асинхронная установка даты по умолчанию</h3> + <DatePicker + defaultDate={defVal} + opened={isOpen} + size={size} + valueError={valueError} + valueSuccess={valueSuccess} + contentLeft={enableContentLeft ? <IconPlaceholder size={iconSize} /> : undefined} + contentRight={enableContentRight ? <IconPlaceholder size={iconSize} /> : undefined} + onBlur={onBlur} + onFocus={onFocus} + onToggle={(is) => setIsOpen(is)} + onChangeValue={(e, currentValue) => { + onChangeValue(e, currentValue); + }} + onCommitDate={() => setIsOpen(false)} + {...rest} + /> + </> + ); +}; + +export const Deferred: StoryObj<StoryPropsDefault> = { + argTypes: { + defaultDate: { + control: { + type: 'date', + }, + }, + labelPlacement: { + options: labelPlacements, + control: { + type: 'inline-radio', + }, + }, + }, + args: { + label: 'Лейбл', + leftHelper: 'Подсказка к полю', + lang: 'ru', + format: 'DD.MM.YYYY', + placeholder: '30.05.2024', + size: 'l', + view: 'default', + labelPlacement: 'outer', + min: new Date(2024, 1, 1), + max: new Date(2024, 12, 29), + maskWithFormat: false, + required: false, + requiredPlacement: 'right', + disabled: false, + readOnly: false, + textBefore: '', + enableContentLeft: true, + enableContentRight: true, + valueError: false, + valueSuccess: false, + }, + render: (args) => <StoryDeferred {...args} />, +}; diff --git a/packages/plasma-giga/src/components/DatePicker/DatePicker.ts b/packages/plasma-giga/src/components/DatePicker/DatePicker.ts new file mode 100644 index 0000000000..2c664ca314 --- /dev/null +++ b/packages/plasma-giga/src/components/DatePicker/DatePicker.ts @@ -0,0 +1,14 @@ +import { + datePickerConfig, + datePickerRangeConfig, + component, + mergeConfig, +} from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './DatePicker.config'; + +const mergedConfig = mergeConfig(datePickerConfig, config); +export const DatePicker = component(mergedConfig); + +const mergedRangeConfig = mergeConfig(datePickerRangeConfig, config); +export const DatePickerRange = component(mergedRangeConfig); diff --git a/packages/plasma-giga/src/components/DatePicker/index.ts b/packages/plasma-giga/src/components/DatePicker/index.ts new file mode 100644 index 0000000000..0675665ef9 --- /dev/null +++ b/packages/plasma-giga/src/components/DatePicker/index.ts @@ -0,0 +1,10 @@ +export type { + DatePickerProps, + DatePickerPlacementBasic, + DatePickerPlacement, + DatePickerRangeProps, + DatePickerRangePlacement, +} from '@salutejs/plasma-new-hope/styled-components'; + +export { DatePicker, DatePickerRange } from './DatePicker'; +export { datePickerClasses, datePickerTokens } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Divider/Divider.config.ts b/packages/plasma-giga/src/components/Divider/Divider.config.ts new file mode 100644 index 0000000000..df0449d5c0 --- /dev/null +++ b/packages/plasma-giga/src/components/Divider/Divider.config.ts @@ -0,0 +1,39 @@ +import { css, dividerTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + orientation: 'horizontal', + }, + variations: { + view: { + default: css` + ${dividerTokens.background}: var(--surface-transparent-tertiary); + `, + dark: css` + ${dividerTokens.background}: var(--on-dark-surface-transparent-tertiary); + `, + light: css` + ${dividerTokens.background}: var(--on-light-surface-transparent-tertiary); + `, + // TODO поменять на корректный токен --inverse-surface-transparent-tertiary когда он появится + inverse: css` + ${dividerTokens.background}: var(--inverse-text-tertiary); + `, + }, + size: { + m: css` + ${dividerTokens.borderRadius}: 0.0625rem; + `, + }, + orientation: { + horizontal: css` + ${dividerTokens.baseSideSize}: 0.0625rem; + `, + vertical: css` + ${dividerTokens.baseSideSize}: 0.0625rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Divider/Divider.stories.tsx b/packages/plasma-giga/src/components/Divider/Divider.stories.tsx new file mode 100644 index 0000000000..1068194ae6 --- /dev/null +++ b/packages/plasma-giga/src/components/Divider/Divider.stories.tsx @@ -0,0 +1,58 @@ +import React from 'react'; +import type { ComponentProps } from 'react'; +import styled from 'styled-components'; +import { disableProps, InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import type { StoryObj, Meta } from '@storybook/react'; + +import { BodyS } from '../Typography'; + +import { Divider } from './Divider'; + +const meta: Meta<typeof Divider> = { + title: 'Data Display/Divider', + decorators: [InSpacingDecorator], + argTypes: { + orientation: { + options: ['horizontal', 'vertical'], + control: { + type: 'select', + }, + table: { defaultValue: { summary: 'horizontal' } }, + }, + view: { + options: ['default', 'dark', 'light', 'inverse'], + control: { + type: 'select', + }, + table: { defaultValue: { summary: 'default' } }, + }, + ...disableProps(['size']), + }, +}; + +export default meta; + +const StyledWrapper = styled.div<{ orientation?: string }>` + display: inline-flex; + gap: 0.5rem; + padding: 1rem; + background: #aab1e9; + align-items: center; + justify-content: center; + flex-direction: ${(props) => (props.orientation === 'horizontal' ? 'column' : 'row')}; +`; + +export const Default: StoryObj<ComponentProps<typeof Divider>> = { + args: { + view: 'default', + orientation: 'horizontal', + length: '100%', + }, + render: (args) => ( + <StyledWrapper orientation={args.orientation}> + <BodyS>Before</BodyS> + <Divider {...args} /> + <BodyS>After</BodyS> + </StyledWrapper> + ), +}; diff --git a/packages/plasma-giga/src/components/Divider/Divider.ts b/packages/plasma-giga/src/components/Divider/Divider.ts new file mode 100644 index 0000000000..793e857dc9 --- /dev/null +++ b/packages/plasma-giga/src/components/Divider/Divider.ts @@ -0,0 +1,10 @@ +import { dividerConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Divider.config'; + +const mergedConfig = mergeConfig(dividerConfig, config); + +/** + * Компонент Divider. + */ +export const Divider = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/Divider/index.ts b/packages/plasma-giga/src/components/Divider/index.ts new file mode 100644 index 0000000000..5a5ce5ff97 --- /dev/null +++ b/packages/plasma-giga/src/components/Divider/index.ts @@ -0,0 +1,4 @@ +export { Divider } from './Divider'; +export { dividerTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export type { DividerProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Drawer/Drawer.config.ts b/packages/plasma-giga/src/components/Drawer/Drawer.config.ts new file mode 100644 index 0000000000..b0b00b1504 --- /dev/null +++ b/packages/plasma-giga/src/components/Drawer/Drawer.config.ts @@ -0,0 +1,32 @@ +import { css, drawerTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + view: { + default: css` + ${drawerTokens.background}: var(--surface-solid-card); + ${drawerTokens.shadow}: 0 3.75rem 7rem -0.5rem rgba(0, 0, 0, 0.08); + ${drawerTokens.contentBackgroundColor}: var(--surface-transparent-primary); + ${drawerTokens.drawerOverlayWithBlurColor}: var(--overlay-blur); + ${drawerTokens.drawerOverlayColor}: var(--overlay-soft); + `, + }, + size: { + m: css` + ${drawerTokens.padding}: 1.5rem; + `, + }, + borderRadius: { + none: css` + ${drawerTokens.borderRadius}: 0; + `, + default: css` + ${drawerTokens.borderRadius}: 1.25rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Drawer/Drawer.stories.tsx b/packages/plasma-giga/src/components/Drawer/Drawer.stories.tsx new file mode 100644 index 0000000000..4b8672b146 --- /dev/null +++ b/packages/plasma-giga/src/components/Drawer/Drawer.stories.tsx @@ -0,0 +1,205 @@ +import React, { useState } from 'react'; +import styled from 'styled-components'; +import type { ComponentProps } from 'react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import type { StoryObj, Meta } from '@storybook/react'; +import { IconDone } from '@salutejs/plasma-icons'; + +import { Button } from '../Button'; +import { SSRProvider } from '../SSRProvider'; +import { H2, H3 } from '../Typography'; +import { PopupProvider } from '../Popup'; + +import type { ClosePlacementType } from '.'; +import { Drawer, DrawerContent, DrawerFooter, DrawerHeader } from '.'; + +export default { + title: 'Overlay/Drawer', + decorators: [InSpacingDecorator], + argTypes: { + placement: { + options: ['top', 'bottom', 'right', 'left'], + control: { + type: 'select', + }, + table: { defaultValue: { summary: 'center' } }, + }, + offsetX: { + control: { + type: 'number', + }, + table: { defaultValue: { summary: 0 } }, + }, + offsetY: { + control: { + type: 'number', + }, + table: { defaultValue: { summary: 0 } }, + }, + closeOnEsc: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: true } }, + }, + closeOnOverlayClick: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: true } }, + }, + withBlur: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: false } }, + }, + showHeader: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: true } }, + }, + showFooter: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: true } }, + }, + showActions: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: true } }, + }, + closePlacement: { + options: ['right', 'left'], + control: { + type: 'select', + }, + table: { defaultValue: { summary: 'right' } }, + }, + borderRadius: { + options: ['none', 'default'], + control: { + type: 'select', + }, + }, + }, +} as Meta; + +type StoryDrawerProps = ComponentProps<typeof Drawer> & { + placement: string; + offsetX: number; + offsetY: number; + closeOnEsc: boolean; + closeOnOverlayClick: boolean; + showHeader: boolean; + showFooter: boolean; + showActions: boolean; + closePlacement: string; + hasClose: boolean; + asModal: boolean; +}; + +const StyledWrapper = styled.div` + height: 100vh; + width: 100%; + display: flex; + flex-direction: column; +`; + +const StyledContentWrapper = styled.div` + height: 80%; + display: flex; + flex-grow: 1; +`; + +const StyledContent = styled.div` + background: #a8a875; + flex-grow: 1; + height: 100%; +`; + +const StyledSection = styled.div` + background: #808080; + min-height: 20%; +`; + +const StyledIconButton = styled(Button)` + position: relative; + width: 1.5rem; + height: 1.5rem; +`; + +const StoryDrawerDemo = ({ + showHeader, + showFooter, + showActions, + hasClose, + closePlacement, + ...rest +}: StoryDrawerProps) => { + const [isOpen, setIsOpen] = useState(false); + + return ( + <SSRProvider> + <PopupProvider> + <StyledWrapper> + <StyledSection> + <Button text="Открыть панель" onClick={() => setIsOpen(true)} /> + </StyledSection> + <StyledContentWrapper> + <Drawer opened={isOpen} onClose={() => setIsOpen(false)} {...rest}> + <DrawerHeader + hasClose={hasClose} + closePlacement={closePlacement as ClosePlacementType} + actions={ + showActions && ( + <StyledIconButton size="s" view="clear"> + <IconDone size="s" color="inherit" /> + </StyledIconButton> + ) + } + onClose={() => setIsOpen(false)} + > + {showHeader && <H3>Header</H3>} + </DrawerHeader> + <DrawerContent>Content</DrawerContent> + {showFooter && ( + <DrawerFooter> + <H3>Footer</H3> + </DrawerFooter> + )} + </Drawer> + <StyledContent> + <H2 style={{ margin: '2rem' }}>Some basic content</H2> + </StyledContent> + </StyledContentWrapper> + <StyledSection /> + </StyledWrapper> + </PopupProvider> + </SSRProvider> + ); +}; + +export const DrawerDemo: StoryObj<StoryDrawerProps> = { + args: { + placement: 'right', + withBlur: false, + closeOnEsc: true, + closeOnOverlayClick: true, + offsetX: 0, + offsetY: 0, + showHeader: true, + showFooter: true, + showActions: true, + hasClose: true, + asModal: true, + closePlacement: 'right', + width: '25vw', + height: '100dvh', + borderRadius: 'none', + }, + render: (args) => <StoryDrawerDemo {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Drawer/Drawer.ts b/packages/plasma-giga/src/components/Drawer/Drawer.ts new file mode 100644 index 0000000000..c86e1f45e5 --- /dev/null +++ b/packages/plasma-giga/src/components/Drawer/Drawer.ts @@ -0,0 +1,35 @@ +import { + drawerConfig, + drawerContentConfig, + drawerFooterConfig, + drawerHeaderConfig, + component, + mergeConfig, +} from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Drawer.config'; + +const mergedConfig = mergeConfig(drawerConfig, config); +const mergedContentConfig = mergeConfig(drawerContentConfig); +const mergedHeaderConfig = mergeConfig(drawerHeaderConfig); +const mergedFooterConfig = mergeConfig(drawerFooterConfig); + +/** + * Компонент Drawer. + */ +export const Drawer = component(mergedConfig); + +/** + * Компонент части контента Drawer. + */ +export const DrawerContent = component(mergedContentConfig); + +/** + * Компонент верхней части Drawer. + */ +export const DrawerHeader = component(mergedHeaderConfig); + +/** + * Компонент нижней контента Drawer. + */ +export const DrawerFooter = component(mergedFooterConfig); diff --git a/packages/plasma-giga/src/components/Drawer/index.ts b/packages/plasma-giga/src/components/Drawer/index.ts new file mode 100644 index 0000000000..6070852add --- /dev/null +++ b/packages/plasma-giga/src/components/Drawer/index.ts @@ -0,0 +1,8 @@ +export { Drawer, DrawerContent, DrawerFooter, DrawerHeader } from './Drawer'; +export type { + DrawerProps, + DrawerContentProps, + DrawerHeaderProps, + DrawerFooterProps, + ClosePlacementType, +} from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Dropdown/Dropdown.config.ts b/packages/plasma-giga/src/components/Dropdown/Dropdown.config.ts new file mode 100644 index 0000000000..59095032ce --- /dev/null +++ b/packages/plasma-giga/src/components/Dropdown/Dropdown.config.ts @@ -0,0 +1,166 @@ +import { css, dropdownTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + size: { + l: css` + ${tokens.padding}: 0.125rem; + ${tokens.width}: 17.5rem; + ${tokens.borderRadius}: 0.875rem; + + ${tokens.itemHeight}: 1.5rem; + ${tokens.itemPadding}: 1rem 1.125rem; + ${tokens.itemPaddingTight}: 0.75rem 1.125rem; + ${tokens.itemBorderRadius}: 0.75rem; + + ${tokens.dividerMarginTop}: 0.5rem; + ${tokens.dividerMarginRight}: 1.125rem; + ${tokens.dividerMarginBottom}: 0.5rem; + ${tokens.dividerMarginLeft}: 1.125rem; + ${tokens.dividerMarginTopTight}: 0.375rem; + ${tokens.dividerMarginBottomTight}: 0.375rem; + + ${tokens.itemFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.itemFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.itemFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.itemFontWeightBold}: var(--plasma-typo-body-l-font-weight); + ${tokens.itemFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.itemFontLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.cellPadding}: 0rem; + ${tokens.cellPaddingLeftContent}: 0rem; + ${tokens.cellPaddingContent}: 0rem; + ${tokens.cellPaddingRightContent}: 0rem; + ${tokens.cellTextboxGap}: 0.125rem; + ${tokens.cellGap}: 0.375rem; + ${tokens.cellTitleFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.cellTitleFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.cellTitleFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.cellTitleFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.cellTitleLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.cellTitleLineHeight}: var(--plasma-typo-body-l-line-height); + `, + m: css` + ${tokens.padding}: 0.125rem; + ${tokens.width}: 15rem; + ${tokens.borderRadius}: 0.75rem; + + ${tokens.itemHeight}: 1.5rem; + ${tokens.itemPadding}: 0.75rem 0.875rem; + ${tokens.itemPaddingTight}: 0.5rem 0.875rem; + ${tokens.itemBorderRadius}: 0.625rem; + + ${tokens.dividerMarginTop}: 0.375rem; + ${tokens.dividerMarginRight}: 0.875rem; + ${tokens.dividerMarginBottom}: 0.375rem; + ${tokens.dividerMarginLeft}: 0.875rem; + ${tokens.dividerMarginTopTight}: 0.375rem; + ${tokens.dividerMarginBottomTight}: 0.375rem; + + ${tokens.itemFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.itemFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.itemFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.itemFontWeightBold}: var(--plasma-typo-body-m-font-weight); + ${tokens.itemFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.itemFontLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.cellPadding}: 0rem; + ${tokens.cellPaddingLeftContent}: 0rem; + ${tokens.cellPaddingContent}: 0rem; + ${tokens.cellPaddingRightContent}: 0rem; + ${tokens.cellTextboxGap}: 0.125rem; + ${tokens.cellGap}: 0.375rem; + ${tokens.cellTitleFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.cellTitleFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.cellTitleFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.cellTitleFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.cellTitleLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.cellTitleLineHeight}: var(--plasma-typo-body-m-line-height); + `, + s: css` + ${tokens.padding}: 0.125rem; + ${tokens.width}: 12.5rem; + ${tokens.borderRadius}: 0.625rem; + + ${tokens.itemHeight}: 1.5rem; + ${tokens.itemPadding}: 0.5rem 0.75rem; + ${tokens.itemPaddingTight}: 0.25rem 0.75rem; + ${tokens.itemBorderRadius}: 0.5rem; + + ${tokens.dividerMarginTop}: 0.375rem; + ${tokens.dividerMarginRight}: 0.75rem; + ${tokens.dividerMarginBottom}: 0.375rem; + ${tokens.dividerMarginLeft}: 0.75rem; + ${tokens.dividerMarginTopTight}: 0.25rem; + ${tokens.dividerMarginBottomTight}: 0.25rem; + + ${tokens.itemFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.itemFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.itemFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.itemFontWeightBold}: var(--plasma-typo-body-s-font-weight); + ${tokens.itemFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.itemFontLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.cellPadding}: 0rem; + ${tokens.cellPaddingLeftContent}: 0rem; + ${tokens.cellPaddingContent}: 0rem; + ${tokens.cellPaddingRightContent}: 0rem; + ${tokens.cellTextboxGap}: 0.125rem; + ${tokens.cellGap}: 0.375rem; + ${tokens.cellTitleFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.cellTitleFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.cellTitleFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.cellTitleFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.cellTitleLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.cellTitleLineHeight}: var(--plasma-typo-body-s-line-height); + `, + xs: css` + ${tokens.padding}: 0.125rem; + ${tokens.width}: 10rem; + ${tokens.borderRadius}: 0.5rem; + + ${tokens.itemHeight}: 1rem; + ${tokens.itemPadding}: 0.5rem; + ${tokens.itemPaddingTight}: 0.25rem 0.5rem; + ${tokens.itemBorderRadius}: 0.375rem; + + ${tokens.dividerMarginTop}: 0.25rem; + ${tokens.dividerMarginRight}: 0.5rem; + ${tokens.dividerMarginBottom}: 0.25rem; + ${tokens.dividerMarginLeft}: 0.5rem; + ${tokens.dividerMarginTopTight}: 0.125rem; + ${tokens.dividerMarginBottomTight}: 0.125rem; + + ${tokens.itemFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.itemFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.itemFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.itemFontWeightBold}: var(--plasma-typo-body-xs-font-weight); + ${tokens.itemFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.itemFontLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.cellPadding}: 0rem; + ${tokens.cellPaddingLeftContent}: 0rem; + ${tokens.cellPaddingContent}: 0rem; + ${tokens.cellPaddingRightContent}: 0rem; + ${tokens.cellTextboxGap}: 0.125rem; + ${tokens.cellGap}: 0.25rem; + ${tokens.cellTitleFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.cellTitleFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.cellTitleFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.cellTitleFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.cellTitleLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.cellTitleLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + }, + view: { + default: css` + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + ${tokens.dividerColor}: var(--surface-transparent-tertiary); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Dropdown/Dropdown.stories.tsx b/packages/plasma-giga/src/components/Dropdown/Dropdown.stories.tsx new file mode 100644 index 0000000000..e317f5ada6 --- /dev/null +++ b/packages/plasma-giga/src/components/Dropdown/Dropdown.stories.tsx @@ -0,0 +1,323 @@ +import React, { ComponentProps } from 'react'; +import type { Meta, StoryObj } from '@storybook/react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import { IconLocation } from '@salutejs/plasma-icons'; +import { action } from '@storybook/addon-actions'; + +import { Button } from '../Button'; + +import { Dropdown } from '.'; + +type DropdownProps = ComponentProps<typeof Dropdown>; + +const placements: DropdownProps['placement'][] = ['auto', 'top', 'right', 'bottom', 'left']; +const triggers: DropdownProps['trigger'][] = ['click', 'hover']; +const size = ['xs', 's', 'm', 'l']; +const variant = ['normal', 'tight']; + +const meta: Meta<DropdownProps> = { + title: 'Data Entry/Dropdown', + component: Dropdown, + decorators: [InSpacingDecorator], + argTypes: { + placement: { + options: placements, + control: { + type: 'select', + }, + mapping: placements, + }, + trigger: { + options: triggers, + control: { + type: 'select', + }, + }, + size: { + options: size, + control: { + type: 'select', + }, + }, + variant: { + options: variant, + control: { + type: 'select', + }, + }, + closeOnOverlayClick: { + control: { type: 'boolean' }, + if: { arg: 'alwaysOpened', truthy: false }, + }, + closeOnSelect: { + control: { type: 'boolean' }, + if: { arg: 'alwaysOpened', truthy: false }, + }, + }, + args: { + size: 'm', + variant: 'normal', + placement: 'bottom-start', + trigger: 'click', + offset: [0, 0], + listWidth: '', + hasArrow: true, + alwaysOpened: false, + closeOnOverlayClick: true, + closeOnSelect: true, + }, + parameters: { + controls: { + include: [ + 'size', + 'variant', + 'placement', + 'trigger', + 'offset', + 'listWidth', + 'hasArrow', + 'closeOnOverlayClick', + 'closeOnSelect', + ], + }, + }, +}; + +export default meta; + +const items = (dropdownSize: DropdownProps['size']) => [ + { + value: 'north_america', + label: 'Северная Америка', + contentLeft: <IconLocation size={dropdownSize !== 'xs' ? 's' : 'xs'} color="inherit" />, + contentRight: <IconLocation size={dropdownSize !== 'xs' ? 's' : 'xs'} color="inherit" />, + }, + { + value: 'south_america', + label: 'Южная Америка', + items: [ + { + value: 'brazil', + label: 'Бразилия', + items: [ + { + value: 'rio_de_janeiro', + label: 'Рио-де-Жанейро', + }, + { + value: 'sao_paulo', + label: 'Сан-Паулу', + }, + ], + }, + { + value: 'argentina', + label: 'Аргентина', + items: [ + { + value: 'buenos_aires', + label: 'Буэнос-Айрес', + }, + { + value: 'cordoba', + label: 'Кордова', + }, + ], + }, + { + value: 'colombia', + label: 'Колумбия', + items: [ + { + value: 'bogota', + label: 'Богота', + }, + { + value: 'medellin', + label: 'Медельин', + }, + ], + }, + ], + }, + { + value: 'europe', + label: 'Европа', + dividerBefore: true, + dividerAfter: true, + items: [ + { + value: 'france', + label: 'Франция', + items: [ + { + value: 'paris', + label: 'Париж', + }, + { + value: 'lyon', + label: 'Лион', + }, + ], + }, + { + value: 'germany', + label: 'Германия', + items: [ + { + value: 'berlin', + label: 'Берлин', + }, + { + value: 'munich', + label: 'Мюнхен', + }, + ], + }, + { + value: 'italy', + label: 'Италия', + items: [ + { + value: 'rome', + label: 'Рим', + }, + { + value: 'milan', + label: 'Милан', + }, + ], + }, + { + value: 'spain', + label: 'Испания', + items: [ + { + value: 'madrid', + label: 'Мадрид', + }, + { + value: 'barcelona', + label: 'Барселона', + }, + ], + }, + { + value: 'united_kingdom', + label: 'Великобритания', + items: [ + { + value: 'london', + label: 'Лондон', + }, + { + value: 'manchester', + label: 'Манчестер', + }, + ], + }, + ], + }, + { + value: 'asia', + label: 'Азия', + items: [ + { + value: 'china', + label: 'Китай', + items: [ + { + value: 'beijing', + label: 'Пекин', + }, + { + value: 'shanghai', + label: 'Шанхай', + }, + ], + }, + { + value: 'japan', + label: 'Япония', + items: [ + { + value: 'tokyo', + label: 'Токио', + }, + { + value: 'osaka', + label: 'Осака', + }, + ], + }, + { + value: 'india', + label: 'Индия', + items: [ + { + value: 'delhi', + label: 'Дели', + }, + { + value: 'mumbai', + label: 'Мумбаи', + }, + ], + }, + { + value: 'south_korea', + label: 'Южная Корея', + items: [ + { + value: 'seoul', + label: 'Сеул', + }, + { + value: 'busan', + label: 'Пусан', + }, + ], + }, + { + value: 'thailand', + label: 'Таиланд', + items: [ + { + value: 'bangkok', + label: 'Бангкок', + }, + { + value: 'phuket', + label: 'Пхукет', + }, + ], + }, + ], + }, + { + value: 'africa', + label: 'Африка', + disabled: true, + }, +]; + +const StoryNormal = (args: DropdownProps) => { + return ( + <> + <Dropdown + {...args} + items={items(args.size)} + onToggle={action('onToggle')} + onHover={action('onHover')} + onItemSelect={action('onItemSelect')} + onItemClick={action('onItemClick')} + > + <Button text="Список стран" /> + </Dropdown> + </> + ); +}; + +export const Default: StoryObj<DropdownProps> = { + render: (args) => <StoryNormal {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Dropdown/Dropdown.tsx b/packages/plasma-giga/src/components/Dropdown/Dropdown.tsx new file mode 100644 index 0000000000..756684a5fa --- /dev/null +++ b/packages/plasma-giga/src/components/Dropdown/Dropdown.tsx @@ -0,0 +1,22 @@ +import { dropdownConfig, component, mergeConfig, fixedForwardRef } from '@salutejs/plasma-new-hope/styled-components'; +import type { DropdownItemOption, DropdownNewProps } from '@salutejs/plasma-new-hope'; +import React, { ComponentProps, ForwardedRef } from 'react'; + +import { config } from './Dropdown.config'; + +const mergedConfig = mergeConfig(dropdownConfig, config); +const DropdownNewHope = component(mergedConfig); + +type DropdownProps<T extends DropdownItemOption> = Omit<DropdownNewProps<T>, 'size' | 'view'> & + Pick<ComponentProps<typeof DropdownNewHope>, 'size' | 'view'>; + +const DropdownComponent = <T extends DropdownItemOption>( + props: DropdownProps<T>, + ref: ForwardedRef<HTMLButtonElement>, +) => { + return <DropdownNewHope ref={ref} {...(props as any)} />; +}; + +const Dropdown = fixedForwardRef(DropdownComponent); + +export { Dropdown }; diff --git a/packages/plasma-giga/src/components/Dropdown/index.ts b/packages/plasma-giga/src/components/Dropdown/index.ts new file mode 100644 index 0000000000..c0ad316fc2 --- /dev/null +++ b/packages/plasma-giga/src/components/Dropdown/index.ts @@ -0,0 +1 @@ +export { Dropdown } from './Dropdown'; diff --git a/packages/plasma-giga/src/components/Dropzone/Dropzone.config.ts b/packages/plasma-giga/src/components/Dropzone/Dropzone.config.ts new file mode 100644 index 0000000000..8e02e0f740 --- /dev/null +++ b/packages/plasma-giga/src/components/Dropzone/Dropzone.config.ts @@ -0,0 +1,50 @@ +import { css, dropzoneTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + view: { + default: css` + ${dropzoneTokens.background}: var(--surface-solid-card); + ${dropzoneTokens.backgroundHover}: var(--surface-solid-card-hover); + ${dropzoneTokens.overlayColorActive}: var(--overlay-soft); + ${dropzoneTokens.borderColor}: var(--outline-solid-secondary); + ${dropzoneTokens.borderColorHover}: var(--outline-solid-secondary-hover); + ${dropzoneTokens.borderColorActive}: var(--outline-accent); + ${dropzoneTokens.titleColor}: var(--text-primary); + ${dropzoneTokens.descriptionColor}: var(--text-secondary); + `, + }, + size: { + m: css` + ${dropzoneTokens.padding}: 1.5rem; + ${dropzoneTokens.borderRadius}: 1.25rem; + ${dropzoneTokens.contentWrapperGap}: 0.75rem; + ${dropzoneTokens.contentGap}: 0.375rem; + ${dropzoneTokens.contentColumnGap}: 0.5rem; + + ${dropzoneTokens.titleFontFamily}: var(--plasma-typo-h4-font-family); + ${dropzoneTokens.titleFontSize}: var(--plasma-typo-h4-font-size); + ${dropzoneTokens.titleFontStyle}: var(--plasma-typo-h4-font-style); + ${dropzoneTokens.titleFontWeight}: var(--plasma-typo-h4-bold-font-weight); + ${dropzoneTokens.titleLetterSpacing}: var(--plasma-typo-h4-letter-spacing); + ${dropzoneTokens.titleLineHeight}: var(--plasma-typo-h4-line-height); + + ${dropzoneTokens.descriptionFontFamily}: var(--plasma-typo-body-s-font-family); + ${dropzoneTokens.descriptionFontSize}: var(--plasma-typo-body-s-font-size); + ${dropzoneTokens.descriptionFontStyle}: var(--plasma-typo-body-s-font-style); + ${dropzoneTokens.descriptionFontWeight}: var(--plasma-typo-body-s-font-weight); + ${dropzoneTokens.descriptionLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${dropzoneTokens.descriptionLineHeight}: var(--plasma-typo-body-s-line-height); + `, + }, + disabled: { + true: css` + ${dropzoneTokens.disabledOpacity}: 0.4; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Dropzone/Dropzone.stories.tsx b/packages/plasma-giga/src/components/Dropzone/Dropzone.stories.tsx new file mode 100644 index 0000000000..2f8cb38aaf --- /dev/null +++ b/packages/plasma-giga/src/components/Dropzone/Dropzone.stories.tsx @@ -0,0 +1,58 @@ +import React, { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; + +import { Dropzone } from './Dropzone'; + +const onDragEnter = action('onDragEnter'); +const onDragLeave = action('onDragLeave'); +const onDrop = action('onDrop'); +const onChange = action('onChange'); +const onChoseFiles = action('onChoseFiles'); + +const iconPlacements = ['top', 'left']; + +const meta: Meta<typeof Dropzone> = { + title: 'Data Entry/Dropzone', + component: Dropzone, + decorators: [InSpacingDecorator], + argTypes: { + iconPlacement: { + options: iconPlacements, + control: { + type: 'inline-radio', + }, + defaultValue: 'top', + }, + ...disableProps(['view', 'size']), + }, +}; + +export default meta; + +type StoryPropsDefault = ComponentProps<typeof Dropzone>; + +export const Default: StoryObj<StoryPropsDefault> = { + args: { + iconPlacement: 'top', + width: 400, + height: 280, + disabled: false, + stretch: false, + title: 'Click to upload', + description: 'or drag and drop files here', + }, + render: (args) => ( + <div style={{ height: '100vh' }}> + <Dropzone + {...args} + onDragEnter={onDragEnter} + onDragLeave={onDragLeave} + onDrop={onDrop} + onChange={onChange} + onChoseFiles={onChoseFiles} + /> + </div> + ), +}; diff --git a/packages/plasma-giga/src/components/Dropzone/Dropzone.ts b/packages/plasma-giga/src/components/Dropzone/Dropzone.ts new file mode 100644 index 0000000000..92f99e5fef --- /dev/null +++ b/packages/plasma-giga/src/components/Dropzone/Dropzone.ts @@ -0,0 +1,7 @@ +import { dropzoneConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Dropzone.config'; + +const mergedConfig = mergeConfig(dropzoneConfig, config); + +export const Dropzone = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/Dropzone/index.ts b/packages/plasma-giga/src/components/Dropzone/index.ts new file mode 100644 index 0000000000..b9b53cd492 --- /dev/null +++ b/packages/plasma-giga/src/components/Dropzone/index.ts @@ -0,0 +1,2 @@ +export { Dropzone } from './Dropzone'; +export { dropzoneTokens, dropzoneClasses } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/EmptyState/EmptyState.config.ts b/packages/plasma-giga/src/components/EmptyState/EmptyState.config.ts new file mode 100644 index 0000000000..406c7041d2 --- /dev/null +++ b/packages/plasma-giga/src/components/EmptyState/EmptyState.config.ts @@ -0,0 +1,67 @@ +import { css, emptyStateTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + size: 'l', + }, + variations: { + size: { + l: css` + ${tokens.borderRadius}: 0.875rem; + ${tokens.padding}: 2rem 1rem 1rem 1rem; + ${tokens.iconMargin}: 0 0 0.5rem 0; + ${tokens.descriptionMargin}: 0 0 1rem 0; + ${tokens.buttonMargin}: -1rem 0 0 0; + ${tokens.buttonHeight}: 3.5rem; + ${tokens.fontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.fontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.fontLineHeight}: var(--plasma-typo-body-l-line-height); + `, + m: css` + ${tokens.borderRadius}: 0.75rem; + ${tokens.padding}: 1.625rem 1rem 0.875rem 1rem; + ${tokens.iconMargin}: 0 0 0.375rem 0; + ${tokens.descriptionMargin}: 0 0 0.875rem 0; + ${tokens.buttonMargin}: -0.875rem 0 0 0; + ${tokens.buttonHeight}: 3rem; + ${tokens.fontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.fontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.fontLineHeight}: var(--plasma-typo-body-m-line-height); + `, + s: css` + ${tokens.borderRadius}: 0.625rem; + ${tokens.padding}: 1.375rem 0.875rem 0.625rem 0.875rem; + ${tokens.iconMargin}: 0 0 0.25rem 0; + ${tokens.descriptionMargin}: 0 0 0.625rem 0; + ${tokens.buttonMargin}: -0.625rem 0 0 0; + ${tokens.buttonHeight}: 2.5rem; + ${tokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.fontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.fontLineHeight}: var(--plasma-typo-body-s-line-height); + `, + xs: css` + ${tokens.borderRadius}: 0.5rem; + ${tokens.padding}: 1rem 0.625rem 0.5rem 0.625rem; + ${tokens.iconMargin}: 0 0 0.25rem 0; + ${tokens.descriptionMargin}: 0 0 0.5rem 0; + ${tokens.buttonMargin}: -0.5rem 0 0 0; + ${tokens.buttonHeight}: 2rem; + ${tokens.fontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.fontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.fontLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/EmptyState/EmptyState.stories.tsx b/packages/plasma-giga/src/components/EmptyState/EmptyState.stories.tsx new file mode 100644 index 0000000000..ffa5dd9a33 --- /dev/null +++ b/packages/plasma-giga/src/components/EmptyState/EmptyState.stories.tsx @@ -0,0 +1,43 @@ +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import * as React from 'react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import { IconPlasma } from '@salutejs/plasma-icons'; + +import { EmptyState } from './EmptyState'; + +const sizes = ['l', 'm', 's', 'xs']; + +type StoryProps = ComponentProps<typeof EmptyState> & { + enableIcon: boolean; +}; + +const meta: Meta<StoryProps> = { + title: 'Data Entry/EmptyState', + decorators: [InSpacingDecorator], + component: EmptyState, + args: { + description: 'Описание', + buttonText: 'Кнопка', + size: 'l', + enableIcon: true, + }, + argTypes: { + size: { + options: sizes, + control: { + type: 'inline-radio', + }, + }, + }, +}; + +export default meta; + +const DefaultStory = (args: StoryProps) => { + return <EmptyState {...args} icon={args.enableIcon ? <IconPlasma size="s" /> : undefined} />; +}; + +export const Default: StoryObj<StoryProps> = { + render: (args) => <DefaultStory {...args} />, +}; diff --git a/packages/plasma-giga/src/components/EmptyState/EmptyState.ts b/packages/plasma-giga/src/components/EmptyState/EmptyState.ts new file mode 100644 index 0000000000..ed5712ce7b --- /dev/null +++ b/packages/plasma-giga/src/components/EmptyState/EmptyState.ts @@ -0,0 +1,7 @@ +import { emptyStateConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './EmptyState.config'; + +export const mergedConfig = mergeConfig(emptyStateConfig, config); + +export const EmptyState = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/EmptyState/index.ts b/packages/plasma-giga/src/components/EmptyState/index.ts new file mode 100644 index 0000000000..89798dbd68 --- /dev/null +++ b/packages/plasma-giga/src/components/EmptyState/index.ts @@ -0,0 +1 @@ +export { EmptyState } from './EmptyState'; diff --git a/packages/plasma-giga/src/components/Grid/Grid.config.tsx b/packages/plasma-giga/src/components/Grid/Grid.config.tsx new file mode 100644 index 0000000000..13a14f0966 --- /dev/null +++ b/packages/plasma-giga/src/components/Grid/Grid.config.tsx @@ -0,0 +1,48 @@ +import { css, gridTokens, getBaseGridView } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + }, + variations: { + view: { + default: css` + ${getBaseGridView( + { + [gridTokens.smallMMinWidth]: 0, + [gridTokens.mediumSMinWidth]: '35rem', + [gridTokens.mediumMMinWidth]: '49.125rem', + [gridTokens.largeSMinWidth]: '60rem', + [gridTokens.largeMMinWidth]: '75rem', + }, + 'default', + )}; + + ${gridTokens.smallMColsCount}: 6; + ${gridTokens.smallMGap}: 0.5rem; + ${gridTokens.smallMMargin}: 1rem; + ${gridTokens.smallMMinWidth}: 0; + + ${gridTokens.mediumSColsCount}: 12; + ${gridTokens.mediumSGap}: 0.5rem; + ${gridTokens.mediumSMargin}: 1.25rem; + ${gridTokens.mediumSMinWidth}: 35rem; + + ${gridTokens.mediumMColsCount}: 18; + ${gridTokens.mediumMGap}: 0.5rem; + ${gridTokens.mediumMMargin}: 1.75rem; + ${gridTokens.mediumMMinWidth}: 49.125rem; + + ${gridTokens.largeSColsCount}: 24; + ${gridTokens.largeSGap}: 0.5rem; + ${gridTokens.largeSMargin}: 2.5rem; + ${gridTokens.largeSMinWidth}: 60rem; + + ${gridTokens.largeMColsCount}: 30; + ${gridTokens.largeMGap}: 0.5rem; + ${gridTokens.largeMMargin}: 4rem; + ${gridTokens.largeMMinWidth}: 75rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Grid/Grid.stories.tsx b/packages/plasma-giga/src/components/Grid/Grid.stories.tsx new file mode 100644 index 0000000000..6056d81e78 --- /dev/null +++ b/packages/plasma-giga/src/components/Grid/Grid.stories.tsx @@ -0,0 +1,119 @@ +import React from 'react'; +import type { Meta } from '@storybook/react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import styled from 'styled-components'; + +import { Col, Grid, Row } from './Grid'; + +const meta: Meta = { + title: 'Layout/Grid', + decorators: [InSpacingDecorator], +}; + +export default meta; + +const StyledContent = styled.div` + height: 10rem; + width: 100%; + background: #f5f5dc; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid var(--inverse-text-primary); +`; + +export const Default = { + args: { + colsCount: 6, + }, + render: ({ colsCount }) => ( + <Grid> + <Row> + {Array(colsCount) + .fill(true) + .map((_, i) => ( + <Col size={1} key={colsCount + i}> + <StyledContent>{i + 1}</StyledContent> + </Col> + ))} + </Row> + </Grid> + ), +}; + +export const CustomColsPosition = { + render: () => ( + <Grid view="default"> + <Row> + <Col + smallM={{ + size: 1, + }} + mediumS={{ + size: 2, + }} + mediumM={{ + size: 3, + offset: 1, + }} + largeS={{ + size: 4, + offset: 1, + }} + largeM={{ + size: 5, + offset: 2, + }} + > + <StyledContent>1</StyledContent> + </Col> + <Col + smallM={{ + size: 1, + offset: 1, + }} + mediumS={{ + size: 2, + offset: 1, + }} + mediumM={{ + size: 4, + }} + largeS={{ + size: 4, + offset: 3, + }} + largeM={{ + size: 5, + offset: 1, + }} + > + <StyledContent>2</StyledContent> + </Col> + <Col + smallM={{ + size: 1, + }} + mediumS={{ + size: 2, + offset: 1, + }} + mediumM={{ + size: 2, + offset: 2, + }} + largeS={{ + size: 3, + offset: 4, + }} + largeM={{ + size: 6, + offset: 3, + }} + > + <StyledContent>3</StyledContent> + </Col> + </Row> + </Grid> + ), +}; diff --git a/packages/plasma-giga/src/components/Grid/Grid.tsx b/packages/plasma-giga/src/components/Grid/Grid.tsx new file mode 100644 index 0000000000..b64b578b1d --- /dev/null +++ b/packages/plasma-giga/src/components/Grid/Grid.tsx @@ -0,0 +1,8 @@ +import { gridConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Grid.config'; + +export { Row, Col } from '@salutejs/plasma-new-hope/styled-components'; + +const mergedConfig = mergeConfig(gridConfig, config); +export const Grid = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/Grid/index.ts b/packages/plasma-giga/src/components/Grid/index.ts new file mode 100644 index 0000000000..41a8c904ba --- /dev/null +++ b/packages/plasma-giga/src/components/Grid/index.ts @@ -0,0 +1,12 @@ +export { Grid, Col, Row } from './Grid'; + +export type { + GridProps, + ColCount, + ColProps, + ColSizeProps, + ColOffsetProps, + ScreenMap, + ScreenConfig, + ScreenVariant, +} from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/IconButton/IconButton.config.ts b/packages/plasma-giga/src/components/IconButton/IconButton.config.ts new file mode 100644 index 0000000000..7806dd83e6 --- /dev/null +++ b/packages/plasma-giga/src/components/IconButton/IconButton.config.ts @@ -0,0 +1,227 @@ +import { css, iconButtonTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + focused: 'true', + size: 'm', + }, + variations: { + view: { + default: css` + ${iconButtonTokens.iconButtonColor}: var(--inverse-text-primary); + ${iconButtonTokens.iconButtonBackgroundColor}: var(--surface-solid-default); + ${iconButtonTokens.iconButtonLoadingBackgroundColor}: var(${iconButtonTokens.iconButtonBackgroundColor}); + ${iconButtonTokens.iconButtonColorHover}: var(--inverse-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorHover}: var(--surface-solid-default-hover); + ${iconButtonTokens.iconButtonColorActive}: var(--inverse-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorActive}: var(--surface-solid-default-active); + `, + accent: css` + ${iconButtonTokens.iconButtonColor}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColor}: var(--surface-accent); + ${iconButtonTokens.iconButtonLoadingBackgroundColor}: var(${iconButtonTokens.iconButtonBackgroundColor}); + ${iconButtonTokens.iconButtonColorHover}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorHover}: var(--surface-accent-hover); + ${iconButtonTokens.iconButtonColorActive}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorActive}: var(--surface-accent-active); + `, + secondary: css` + ${iconButtonTokens.iconButtonColor}: var(--text-primary); + ${iconButtonTokens.iconButtonBackgroundColor}: var(--surface-transparent-secondary); + ${iconButtonTokens.iconButtonLoadingBackgroundColor}: var(${iconButtonTokens.iconButtonBackgroundColor}); + ${iconButtonTokens.iconButtonColorHover}: var(--text-primary); + ${iconButtonTokens.iconButtonBackgroundColorHover}: var(--surface-transparent-secondary-hover); + ${iconButtonTokens.iconButtonColorActive}: var(--text-primary); + ${iconButtonTokens.iconButtonBackgroundColorActive}: var(--surface-transparent-secondary-active); + `, + clear: css` + ${iconButtonTokens.iconButtonColor}: var(--text-primary); + ${iconButtonTokens.iconButtonBackgroundColor}: var(--surface-clear); + ${iconButtonTokens.iconButtonLoadingBackgroundColor}: var(${iconButtonTokens.iconButtonBackgroundColor}); + ${iconButtonTokens.iconButtonColorHover}: var(--text-primary-hover); + ${iconButtonTokens.iconButtonBackgroundColorHover}: var(--surface-clear); + ${iconButtonTokens.iconButtonColorActive}: var(--text-primary-active); + ${iconButtonTokens.iconButtonBackgroundColorActive}: var(--surface-clear); + `, + success: css` + ${iconButtonTokens.iconButtonColor}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColor}: var(--surface-positive); + ${iconButtonTokens.iconButtonLoadingBackgroundColor}: var(${iconButtonTokens.iconButtonBackgroundColor}); + ${iconButtonTokens.iconButtonColorHover}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorHover}: var(--surface-positive-hover); + ${iconButtonTokens.iconButtonColorActive}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorActive}: var(--surface-positive-active); + `, + warning: css` + ${iconButtonTokens.iconButtonColor}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColor}: var(--surface-warning); + ${iconButtonTokens.iconButtonLoadingBackgroundColor}: var(${iconButtonTokens.iconButtonBackgroundColor}); + ${iconButtonTokens.iconButtonColorHover}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorHover}: var(--surface-warning-hover); + ${iconButtonTokens.iconButtonColorActive}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorActive}: var(--surface-warning-active); + `, + critical: css` + ${iconButtonTokens.iconButtonColor}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColor}: var(--surface-negative); + ${iconButtonTokens.iconButtonLoadingBackgroundColor}: var(${iconButtonTokens.iconButtonBackgroundColor}); + ${iconButtonTokens.iconButtonColorHover}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorHover}: var(--surface-negative-hover); + ${iconButtonTokens.iconButtonColorActive}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorActive}: var(--surface-negative-active); + `, + dark: css` + ${iconButtonTokens.iconButtonColor}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColor}: var(--on-light-surface-transparent-deep); + ${iconButtonTokens.iconButtonLoadingBackgroundColor}: var(${iconButtonTokens.iconButtonBackgroundColor}); + ${iconButtonTokens.iconButtonColorHover}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorHover}: var(--on-light-surface-transparent-deep-hover); + ${iconButtonTokens.iconButtonColorActive}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorActive}: var(--on-light-surface-transparent-deep-active); + `, + black: css` + ${iconButtonTokens.iconButtonColor}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColor}: var(--on-light-surface-solid-default); + ${iconButtonTokens.iconButtonLoadingBackgroundColor}: var(${iconButtonTokens.iconButtonBackgroundColor}); + ${iconButtonTokens.iconButtonColorHover}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorHover}: var(--on-light-surface-solid-default-hover); + ${iconButtonTokens.iconButtonColorActive}: var(--on-dark-text-primary); + ${iconButtonTokens.iconButtonBackgroundColorActive}: var(--on-light-surface-solid-default-active); + `, + white: css` + ${iconButtonTokens.iconButtonColor}: var(--on-light-text-primary); + ${iconButtonTokens.iconButtonBackgroundColor}: var(--on-dark-surface-solid-default); + ${iconButtonTokens.iconButtonLoadingBackgroundColor}: var(${iconButtonTokens.iconButtonBackgroundColor}); + ${iconButtonTokens.iconButtonColorHover}: var(--on-light-text-primary-hover); + ${iconButtonTokens.iconButtonBackgroundColorHover}: var(--on-dark-surface-solid-default-hover); + ${iconButtonTokens.iconButtonColorActive}: var(--on-light-text-primary-active); + ${iconButtonTokens.iconButtonBackgroundColorActive}: var(--on-dark-surface-solid-default-active); + `, + }, + size: { + l: css` + ${iconButtonTokens.iconButtonHeight}: 3.5rem; + ${iconButtonTokens.iconButtonWidth}: 3.5rem; + ${iconButtonTokens.iconButtonPadding}: 1.5rem; + ${iconButtonTokens.iconButtonRadius}: 0.875rem; + ${iconButtonTokens.iconButtonFontFamily}: var(--plasma-typo-body-l-font-family); + ${iconButtonTokens.iconButtonFontSize}: var(--plasma-typo-body-l-font-size); + ${iconButtonTokens.iconButtonFontStyle}: var(--plasma-typo-body-l-font-style); + ${iconButtonTokens.iconButtonFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${iconButtonTokens.iconButtonLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${iconButtonTokens.iconButtonLineHeight}: var(--plasma-typo-body-l-line-height); + + ${iconButtonTokens.iconButtonSpinnerSize}: 1.375rem; + ${iconButtonTokens.iconButtonSpinnerColor}: inherit; + `, + lr: css` + ${iconButtonTokens.iconButtonHeight}: 3.5rem; + ${iconButtonTokens.iconButtonWidth}: 3.5rem; + ${iconButtonTokens.iconButtonFontFamily}: var(--plasma-typo-body-l-font-family); + ${iconButtonTokens.iconButtonFontSize}: var(--plasma-typo-body-l-font-size); + ${iconButtonTokens.iconButtonFontStyle}: var(--plasma-typo-body-l-font-style); + ${iconButtonTokens.iconButtonFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${iconButtonTokens.iconButtonLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${iconButtonTokens.iconButtonLineHeight}: var(--plasma-typo-body-l-line-height); + + ${iconButtonTokens.iconButtonSpinnerSize}: 1.375rem; + ${iconButtonTokens.iconButtonSpinnerColor}: inherit; + `, + m: css` + ${iconButtonTokens.iconButtonHeight}: 3rem; + ${iconButtonTokens.iconButtonWidth}: 3rem; + ${iconButtonTokens.iconButtonPadding}: 1.25rem; + ${iconButtonTokens.iconButtonRadius}: 0.75rem; + ${iconButtonTokens.iconButtonFontFamily}: var(--plasma-typo-body-m-font-family); + ${iconButtonTokens.iconButtonFontSize}: var(--plasma-typo-body-m-font-size); + ${iconButtonTokens.iconButtonFontStyle}: var(--plasma-typo-body-m-font-style); + ${iconButtonTokens.iconButtonFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${iconButtonTokens.iconButtonLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${iconButtonTokens.iconButtonLineHeight}: var(--plasma-typo-body-m-line-height); + + ${iconButtonTokens.iconButtonSpinnerSize}: 1.375rem; + ${iconButtonTokens.iconButtonSpinnerColor}: inherit; + `, + mr: css` + ${iconButtonTokens.iconButtonHeight}: 3rem; + ${iconButtonTokens.iconButtonWidth}: 3rem; + ${iconButtonTokens.iconButtonFontFamily}: var(--plasma-typo-body-m-font-family); + ${iconButtonTokens.iconButtonFontSize}: var(--plasma-typo-body-m-font-size); + ${iconButtonTokens.iconButtonFontStyle}: var(--plasma-typo-body-m-font-style); + ${iconButtonTokens.iconButtonFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${iconButtonTokens.iconButtonLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${iconButtonTokens.iconButtonLineHeight}: var(--plasma-typo-body-m-line-height); + + ${iconButtonTokens.iconButtonSpinnerSize}: 1.375rem; + ${iconButtonTokens.iconButtonSpinnerColor}: inherit; + `, + s: css` + ${iconButtonTokens.iconButtonHeight}: 2.5rem; + ${iconButtonTokens.iconButtonWidth}: 2.5rem; + ${iconButtonTokens.iconButtonPadding}: 1rem; + ${iconButtonTokens.iconButtonRadius}: 0.625rem; + ${iconButtonTokens.iconButtonFontFamily}: var(--plasma-typo-body-s-font-family); + ${iconButtonTokens.iconButtonFontSize}: var(--plasma-typo-body-s-font-size); + ${iconButtonTokens.iconButtonFontStyle}: var(--plasma-typo-body-s-font-style); + ${iconButtonTokens.iconButtonFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${iconButtonTokens.iconButtonLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${iconButtonTokens.iconButtonLineHeight}: var(--plasma-typo-body-s-line-height); + + ${iconButtonTokens.iconButtonSpinnerSize}: 1.375rem; + ${iconButtonTokens.iconButtonSpinnerColor}: inherit; + `, + sr: css` + ${iconButtonTokens.iconButtonHeight}: 2.5rem; + ${iconButtonTokens.iconButtonWidth}: 2.5rem; + ${iconButtonTokens.iconButtonFontFamily}: var(--plasma-typo-body-s-font-family); + ${iconButtonTokens.iconButtonFontSize}: var(--plasma-typo-body-s-font-size); + ${iconButtonTokens.iconButtonFontStyle}: var(--plasma-typo-body-s-font-style); + ${iconButtonTokens.iconButtonFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${iconButtonTokens.iconButtonLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${iconButtonTokens.iconButtonLineHeight}: var(--plasma-typo-body-s-line-height); + + ${iconButtonTokens.iconButtonSpinnerSize}: 1.375rem; + ${iconButtonTokens.iconButtonSpinnerColor}: inherit; + `, + xs: css` + ${iconButtonTokens.iconButtonHeight}: 2rem; + ${iconButtonTokens.iconButtonWidth}: 2rem; + ${iconButtonTokens.iconButtonPadding}: 0.75rem; + ${iconButtonTokens.iconButtonRadius}: 0.5rem; + ${iconButtonTokens.iconButtonFontFamily}: var(--plasma-typo-body-xs-font-family); + ${iconButtonTokens.iconButtonFontSize}: var(--plasma-typo-body-xs-font-size); + ${iconButtonTokens.iconButtonFontStyle}: var(--plasma-typo-body-xs-font-style); + ${iconButtonTokens.iconButtonFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${iconButtonTokens.iconButtonLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${iconButtonTokens.iconButtonLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${iconButtonTokens.iconButtonSpinnerSize}: 1rem; + ${iconButtonTokens.iconButtonSpinnerColor}: inherit; + `, + xsr: css` + ${iconButtonTokens.iconButtonHeight}: 2rem; + ${iconButtonTokens.iconButtonWidth}: 2rem; + ${iconButtonTokens.iconButtonFontFamily}: var(--plasma-typo-body-xs-font-family); + ${iconButtonTokens.iconButtonFontSize}: var(--plasma-typo-body-xs-font-size); + ${iconButtonTokens.iconButtonFontStyle}: var(--plasma-typo-body-xs-font-style); + ${iconButtonTokens.iconButtonFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${iconButtonTokens.iconButtonLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${iconButtonTokens.iconButtonLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${iconButtonTokens.iconButtonSpinnerSize}: 1rem; + ${iconButtonTokens.iconButtonSpinnerColor}: inherit; + `, + }, + disabled: { + true: css` + ${iconButtonTokens.iconButtonDisabledOpacity}: 0.4; + `, + }, + focused: { + true: css` + ${iconButtonTokens.iconButtonFocusColor}: var(--surface-accent); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/IconButton/IconButton.stories.tsx b/packages/plasma-giga/src/components/IconButton/IconButton.stories.tsx new file mode 100644 index 0000000000..9eb86e9eef --- /dev/null +++ b/packages/plasma-giga/src/components/IconButton/IconButton.stories.tsx @@ -0,0 +1,83 @@ +import React, { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { IconClose } from '@salutejs/plasma-icons'; +import { disableProps, InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { IconButton } from './IconButton'; + +type StoryButtonProps = ComponentProps<typeof IconButton> & { contentType: string; isLoading: boolean }; + +const views = ['default', 'accent', 'secondary', 'success', 'warning', 'critical', 'clear', 'dark', 'black', 'white']; +const sizes = ['l', 'm', 's', 'xs']; +const pins = [ + 'square-square', + 'square-clear', + 'clear-square', + 'clear-clear', + 'clear-circle', + 'circle-clear', + 'circle-circle', + '', +]; + +const meta: Meta<StoryButtonProps> = { + title: 'Data Entry/IconButton', + decorators: [InSpacingDecorator], + argTypes: { + size: { + options: sizes, + control: { + type: 'inline-radio', + }, + }, + view: { + options: views, + control: { + type: 'select', + }, + }, + pin: { + options: pins, + control: { + type: 'select', + }, + table: { defaultValue: { summary: 'bottom' } }, + }, + ...disableProps(['children', 'theme', 'loader', 'onClick', 'onFocus', 'onBlur', 'contentLeft', 'contentRight']), + }, +}; + +export default meta; + +const getSizeForIcon = (size) => { + const map = { + mr: 's', + lr: 's', + m: 's', + l: 's', + sr: 's', + xsr: 'xs', + }; + if (map[size]) { + return map[size]; + } + + return size; +}; + +export const Default: StoryObj<ComponentProps<typeof IconButton>> = { + args: { + children: <IconClose />, + view: 'default', + size: 'm', + disabled: false, + focused: true, + isLoading: false, + }, + argTypes: { ...disableProps(['children']) }, + render: (args) => ( + <IconButton {...args}> + <IconClose color="inhert" size={getSizeForIcon(args.size)} /> + </IconButton> + ), +}; diff --git a/packages/plasma-giga/src/components/IconButton/IconButton.ts b/packages/plasma-giga/src/components/IconButton/IconButton.ts new file mode 100644 index 0000000000..6faeac7efe --- /dev/null +++ b/packages/plasma-giga/src/components/IconButton/IconButton.ts @@ -0,0 +1,11 @@ +import { iconButtonConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './IconButton.config'; + +const mergedConfig = mergeConfig(iconButtonConfig, config); +const IconButtonComponent = component(mergedConfig); + +/** + * Кнопка с иконкой. + */ +export const IconButton = IconButtonComponent; diff --git a/packages/plasma-giga/src/components/IconButton/index.ts b/packages/plasma-giga/src/components/IconButton/index.ts new file mode 100644 index 0000000000..bd4d78d297 --- /dev/null +++ b/packages/plasma-giga/src/components/IconButton/index.ts @@ -0,0 +1 @@ +export { IconButton } from './IconButton'; diff --git a/packages/plasma-giga/src/components/Image/Image.component-test.tsx b/packages/plasma-giga/src/components/Image/Image.component-test.tsx new file mode 100644 index 0000000000..b64eaa9846 --- /dev/null +++ b/packages/plasma-giga/src/components/Image/Image.component-test.tsx @@ -0,0 +1,91 @@ +import React, { Fragment } from 'react'; +import styled from 'styled-components'; +import { mount, CypressTestDecorator, getComponent, PadMe } from '@salutejs/plasma-cy-utils'; + +const src = 'https://bit.ly/3xRatFGimages/320_320_0.jpg'; + +describe('plasma-core: Image', () => { + const Image = getComponent('Image'); + + const Why = styled.div` + width: 8rem; + display: inline-block; + `; + + beforeEach(() => { + cy.intercept(src, (req) => { + req.reply({ + fixture: 'images/320_320_0.jpg', + }); + }); + }); + + it('default', () => { + mount( + <CypressTestDecorator> + <Image src={src} width="320px" height="320px" /> + </CypressTestDecorator>, + ); + cy.matchImageSnapshot(); + }); + + it('div', () => { + mount( + <CypressTestDecorator> + <Image base="div" src={src} width="320px" height="320px" /> + </CypressTestDecorator>, + ); + cy.matchImageSnapshot(); + }); + + it('_ratio', () => { + const ratios = Object.keys({ + '1 / 1': '100', + '1/1': '100', + '3 / 4': '133.3333', + '3/4': '133.3333', + '4 / 3': '75', + '4/3': '75', + '9 / 16': '177.7778', + '9/16': '177.7778', + '16 / 9': '56.25', + '16/9': '56.25', + '1 / 2': '200', + '1/2': '200', + '2 / 1': '50', + '2/1': '50', + }); + + mount( + <CypressTestDecorator> + {ratios.map((ratio) => ( + <Fragment key={ratio}> + <Why key="_base_div"> + <Image base="div" ratio={ratio} src={src} /> + </Why> + <Why key="_base_img"> + <Image ratio={ratio} src={src} /> + </Why> + <PadMe /> + </Fragment> + ))} + </CypressTestDecorator>, + ); + cy.matchImageSnapshot(); + }); + + it('_customRatio', () => { + mount( + <CypressTestDecorator> + <Why key="_base_div"> + <Image base="div" customRatio={75} src={src} /> + </Why> + <Why key="_base_img"> + <Image customRatio={75} src={src} /> + </Why> + <PadMe /> + </CypressTestDecorator>, + ); + cy.matchImageSnapshot(); + }); +}); diff --git a/packages/plasma-giga/src/components/Image/Image.stories.tsx b/packages/plasma-giga/src/components/Image/Image.stories.tsx new file mode 100644 index 0000000000..fb9965d92d --- /dev/null +++ b/packages/plasma-giga/src/components/Image/Image.stories.tsx @@ -0,0 +1,44 @@ +import React from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; + +import { Image, Ratio } from '.'; +import type { ImageProps } from '.'; + +const meta: Meta<ImageProps> = { + title: 'Data Display/Image', + component: Image, + decorators: [InSpacingDecorator], + argTypes: { + base: { + options: ['div', 'img'], + control: { + type: 'inline-radio', + }, + }, + ratio: { + options: ['1/1', '3/4', '4/3', '9/16', '16/9', '1/2', '2/1'], + control: { + type: 'select', + }, + }, + ...disableProps(['src', 'alt', 'customRatio']), + }, +}; + +export default meta; + +export const Default: StoryObj<ImageProps & { ratio: Ratio }> = { + args: { + base: 'div', + src: './images/320_320_9.jpg', + alt: 'картинка для примера фоном', + width: '200px', + height: '200px', + }, + render: (args) => ( + <div style={{ maxWidth: '10rem' }}> + <Image {...args} /> + </div> + ), +}; diff --git a/packages/plasma-giga/src/components/Image/Image.tsx b/packages/plasma-giga/src/components/Image/Image.tsx new file mode 100644 index 0000000000..d46cd0e5ec --- /dev/null +++ b/packages/plasma-giga/src/components/Image/Image.tsx @@ -0,0 +1,9 @@ +import { imageConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +const mergedConfig = mergeConfig(imageConfig); +const ImageComponent = component(mergedConfig); + +/** + * Компонент Image. + */ +export const Image = ImageComponent; diff --git a/packages/plasma-giga/src/components/Image/index.ts b/packages/plasma-giga/src/components/Image/index.ts new file mode 100644 index 0000000000..ee73fa42fd --- /dev/null +++ b/packages/plasma-giga/src/components/Image/index.ts @@ -0,0 +1,3 @@ +export { Image } from './Image'; + +export type { ImageProps, Ratio } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Indicator/Indicator.config.tsx b/packages/plasma-giga/src/components/Indicator/Indicator.config.tsx new file mode 100644 index 0000000000..a852fab074 --- /dev/null +++ b/packages/plasma-giga/src/components/Indicator/Indicator.config.tsx @@ -0,0 +1,47 @@ +import { css, indicatorTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + size: 's', + view: 'default', + }, + variations: { + view: { + default: css` + ${tokens.color}: var(--surface-solid-default); + `, + accent: css` + ${tokens.color}: var(--surface-accent); + `, + inactive: css` + ${tokens.color}: var(--surface-solid-tertiary); + `, + positive: css` + ${tokens.color}: var(--surface-positive); + `, + warning: css` + ${tokens.color}: var(--surface-warning); + `, + negative: css` + ${tokens.color}: var(--surface-negative); + `, + black: css` + ${tokens.color}: var(--on-light-surface-solid-default); + `, + white: css` + ${tokens.color}: var(--on-dark-surface-solid-default); + `, + }, + size: { + l: css` + ${tokens.size}: 0.75rem; + `, + m: css` + ${tokens.size}: 0.5rem; + `, + s: css` + ${tokens.size}: 0.375rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Indicator/Indicator.stories.tsx b/packages/plasma-giga/src/components/Indicator/Indicator.stories.tsx new file mode 100644 index 0000000000..bbf072a45a --- /dev/null +++ b/packages/plasma-giga/src/components/Indicator/Indicator.stories.tsx @@ -0,0 +1,34 @@ +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; + +import { Indicator } from './Indicator'; + +const meta: Meta<typeof Indicator> = { + title: 'Data Display/Indicator', + component: Indicator, + argTypes: { + view: { + options: ['default', 'accent', 'inactive', 'positive', 'warning', 'negative', 'black', 'white'], + control: { + type: 'select', + }, + }, + size: { + options: ['l', 'm', 's'], + control: { + type: 'select', + }, + }, + }, +}; + +export default meta; + +type Story = StoryObj<ComponentProps<typeof Indicator>>; + +export const Default: Story = { + args: { + size: 's', + view: 'default', + }, +}; diff --git a/packages/plasma-giga/src/components/Indicator/Indicator.ts b/packages/plasma-giga/src/components/Indicator/Indicator.ts new file mode 100644 index 0000000000..c3620c7f91 --- /dev/null +++ b/packages/plasma-giga/src/components/Indicator/Indicator.ts @@ -0,0 +1,8 @@ +import { indicatorConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Indicator.config'; + +const mergedConfig = mergeConfig(indicatorConfig, config); +const Indicator = component(mergedConfig); + +export { Indicator, mergedConfig }; diff --git a/packages/plasma-giga/src/components/Indicator/index.ts b/packages/plasma-giga/src/components/Indicator/index.ts new file mode 100644 index 0000000000..083d9e1a55 --- /dev/null +++ b/packages/plasma-giga/src/components/Indicator/index.ts @@ -0,0 +1,3 @@ +export { Indicator } from './Indicator'; + +export type { IndicatorProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Link/Link.config.tsx b/packages/plasma-giga/src/components/Link/Link.config.tsx new file mode 100644 index 0000000000..b0e732a6d5 --- /dev/null +++ b/packages/plasma-giga/src/components/Link/Link.config.tsx @@ -0,0 +1,112 @@ +import { css } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + focused: 'true', + }, + variations: { + view: { + default: css` + --plasma-link-font-family: var(--plasma-typo-text-m-font-family); + --plasma-link-color: var(--text-primary); + --plasma-link-color-hover: var(--text-primary-hover); + --plasma-link-color-active: var(--text-primary-active); + --plasma-link-color-visited: var(--text-primary); + --plasma-link-color-visited-hover: var(--text-primary-hover); + --plasma-link-color-visited-active: var(--text-primary-active); + --plasma-link-underline-border: 0; + `, + secondary: css` + --plasma-link-font-family: var(--plasma-typo-text-m-font-family); + --plasma-link-color: var(--text-secondary); + --plasma-link-color-hover: var(--text-secondary-hover); + --plasma-link-color-active: var(--text-secondary-active); + --plasma-link-color-visited: var(--text-secondary); + --plasma-link-color-visited-hover: var(--text-secondary-hover); + --plasma-link-color-visited-active: var(--text-secondary-active); + --plasma-link-underline-border: 0; + `, + tertiary: css` + --plasma-link-font-family: var(--plasma-typo-text-m-font-family); + --plasma-link-color: var(--text-tertiary); + --plasma-link-color-hover: var(--text-tertiary-hover); + --plasma-link-color-active: var(--text-tertiary-active); + --plasma-link-color-visited: var(--text-tertiary); + --plasma-link-color-visited-hover: var(--text-tertiary-hover); + --plasma-link-color-visited-active: var(--text-tertiary-active); + --plasma-link-underline-border: 0; + `, + paragraph: css` + --plasma-link-font-family: var(--plasma-typo-text-m-font-family); + --plasma-link-color: var(--text-paragraph); + --plasma-link-color-hover: var(--text-paragraph-hover); + --plasma-link-color-active: var(--text-paragraph-active); + --plasma-link-color-visited: var(--text-paragraph); + --plasma-link-color-visited-hover: var(--text-paragraph-hover); + --plasma-link-color-visited-active: var(--text-paragraph-active); + --plasma-link-underline-border: 0; + `, + accent: css` + --plasma-link-font-family: var(--plasma-typo-text-m-font-family); + --plasma-link-color: var(--text-accent); + --plasma-link-color-hover: var(--text-accent-hover); + --plasma-link-color-active: var(--text-accent-active); + --plasma-link-color-visited: var(--text-accent); + --plasma-link-color-visited-hover: var(--text-accent-hover); + --plasma-link-color-visited-active: var(--text-accent-active); + --plasma-link-underline-border: 0; + `, + positive: css` + --plasma-link-font-family: var(--plasma-typo-text-m-font-family); + --plasma-link-color: var(--text-positive); + --plasma-link-color-hover: var(--text-positive-hover); + --plasma-link-color-active: var(--text-positive-active); + --plasma-link-color-visited: var(--text-positive); + --plasma-link-color-visited-hover: var(--text-positive-hover); + --plasma-link-color-visited-active: var(--text-positive-active); + --plasma-link-underline-border: 0; + `, + warning: css` + --plasma-link-font-family: var(--plasma-typo-text-m-font-family); + --plasma-link-color: var(--text-warning); + --plasma-link-color-hover: var(--text-warning-hover); + --plasma-link-color-active: var(--text-warning-active); + --plasma-link-color-visited: var(--text-warning); + --plasma-link-color-visited-hover: var(--text-warning-hover); + --plasma-link-color-visited-active: var(--text-warning-active); + --plasma-link-underline-border: 0; + `, + negative: css` + --plasma-link-font-family: var(--plasma-typo-text-m-font-family); + --plasma-link-color: var(--text-negative); + --plasma-link-color-hover: var(--text-negative-hover); + --plasma-link-color-active: var(--text-negative-active); + --plasma-link-color-visited: var(--text-negative); + --plasma-link-color-visited-hover: var(--text-negative-hover); + --plasma-link-color-visited-active: var(--text-negative-active); + --plasma-link-underline-border: 0; + `, + clear: css` + --plasma-link-font-family: var(--plasma-typo-text-m-font-family); + --plasma-link-color: inherit; + --plasma-link-color-hover: inherit; + --plasma-link-color-active: inherit; + --plasma-link-color-visited: inherit; + --plasma-link-color-visited-hover: inherit; + --plasma-link-color-visited-active: inherit; + --plasma-link-underline-border: 0.063rem; + `, + }, + disabled: { + true: css` + --plasma-link-disabled-opacity: 0.4; + `, + }, + focused: { + true: css` + --plasma-link-focus-color: var(--text-primary); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Link/Link.stories.tsx b/packages/plasma-giga/src/components/Link/Link.stories.tsx new file mode 100644 index 0000000000..7de5b65fee --- /dev/null +++ b/packages/plasma-giga/src/components/Link/Link.stories.tsx @@ -0,0 +1,57 @@ +import React, { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { TextM } from '../Typography'; + +import { Link } from '.'; + +const meta: Meta<typeof Link> = { + title: 'Navigation/Link', + decorators: [InSpacingDecorator], + component: Link, + argTypes: { + view: { + options: [ + 'default', + 'secondary', + 'tertiary', + 'paragraph', + 'accent', + 'positive', + 'warning', + 'negative', + 'clear', + ], + control: { + type: 'select', + }, + }, + }, +}; + +export default meta; + +type StoryLinkProps = { + text: string; + href: string; +} & ComponentProps<typeof Link>; + +export const Default: StoryObj<StoryLinkProps> = { + args: { + text: 'приложение', + href: 'https://google.com', + view: 'default', + disabled: false, + focused: true, + }, + render: ({ text, ...props }) => ( + <TextM> + Скачайте{' '} + <Link target="_blank" {...props}> + {text} + </Link> + . + </TextM> + ), +}; diff --git a/packages/plasma-giga/src/components/Link/Link.tsx b/packages/plasma-giga/src/components/Link/Link.tsx new file mode 100644 index 0000000000..4e13a71908 --- /dev/null +++ b/packages/plasma-giga/src/components/Link/Link.tsx @@ -0,0 +1,13 @@ +import { linkConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Link.config'; + +const mergedConfig = mergeConfig(linkConfig, config); +const LinkComponent = component(mergedConfig); + +export type LinkProps = typeof LinkComponent; + +/** + * Ссылка. + */ +export const Link = LinkComponent; diff --git a/packages/plasma-giga/src/components/Link/index.ts b/packages/plasma-giga/src/components/Link/index.ts new file mode 100644 index 0000000000..ed4870671a --- /dev/null +++ b/packages/plasma-giga/src/components/Link/index.ts @@ -0,0 +1,2 @@ +export { Link } from './Link'; +export type { LinkProps } from './Link'; diff --git a/packages/plasma-giga/src/components/Mask/Mask.stories.tsx b/packages/plasma-giga/src/components/Mask/Mask.stories.tsx new file mode 100644 index 0000000000..e1873ebc20 --- /dev/null +++ b/packages/plasma-giga/src/components/Mask/Mask.stories.tsx @@ -0,0 +1,167 @@ +import React from 'react'; +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; + +import { Mask } from './Mask'; + +const onChange = action('onChange'); + +const sizes = ['l', 'm', 's', 'xs']; +const views = ['default', 'positive', 'warning', 'negative']; + +const propsToDisable = [ + 'helperBlock', + 'contentLeft', + 'htmlSize', + '$isFocused', + 'contentRight', + 'onChangeChips', + 'onSearch', + 'type', + 'name', + 'onFocus', + 'onBlur', + 'onChange', + 'value', + 'checked', + 'minLength', + 'caption', + 'values', + 'enumerationType', + 'chips', + 'label', +]; + +const meta: Meta<typeof Mask> = { + title: 'Data Display/Mask', + component: Mask, + decorators: [InSpacingDecorator], + argTypes: { + requiredPlacement: { + options: ['left', 'right'], + control: { + type: 'select', + }, + }, + required: { + control: { + type: 'boolean', + }, + if: { arg: 'optional', truthy: false }, + }, + optional: { + control: { + type: 'boolean', + }, + if: { arg: 'required', truthy: false }, + }, + view: { + options: views, + control: { + type: 'select', + }, + }, + size: { + options: sizes, + control: { + type: 'inline-radio', + }, + }, + ...disableProps(propsToDisable), + }, +}; + +export default meta; + +type StoryPropsDefault = Omit< + ComponentProps<typeof Mask>, + | 'helperBlock' + | 'contentLeft' + | 'htmlSize' + | 'contentRight' + | 'type' + | 'name' + | 'onFocus' + | 'onBlur' + | 'onChange' + | 'value' + | 'checked' + | 'maxLength' + | 'minLength' + | 'enumerationType' + | 'chips' + | 'onChangeChips' +>; + +const StoryDemo = ({ view, ...rest }: StoryPropsDefault) => { + return ( + <div style={{ display: 'flex', flexDirection: 'column', gap: '2rem', width: '50%' }}> + <Mask + label="Маска телефона" + mask="+7 (000) 000 - 00 - 00" + maskChar="_" + showStartChars={false} + view={view} + onChange={onChange} + {...rest} + /> + + <Mask + label="Маска телефона: отображается всегда" + mask="+7 (000) 000 - 00 - 00" + maskChar="_" + view={view} + alwaysShowMask + onChange={onChange} + {...rest} + /> + + <Mask + label="Маска даты" + mask="00/00/0000" + maskString="DD/MM/YYYY" + alwaysShowMask + view={view} + onChange={onChange} + {...rest} + /> + + <Mask + label="Маска даты: значения по умолчанию" + // eslint-disable-next-line no-octal-escape + mask="12.\04.0000" + maskChar="_" + alwaysShowMask + view={view} + onChange={onChange} + {...rest} + /> + + <Mask + label="Маска времени" + mask="00:00" + maskChar="_" + alwaysShowMask + view={view} + onChange={onChange} + {...rest} + /> + </div> + ); +}; + +export const Default: StoryObj<StoryPropsDefault> = { + args: { + size: 'l', + view: 'default', + placeholder: 'Заполните поле', + disabled: false, + readOnly: false, + required: false, + requiredPlacement: 'right', + optional: false, + }, + render: (args) => <StoryDemo {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Mask/Mask.ts b/packages/plasma-giga/src/components/Mask/Mask.ts new file mode 100644 index 0000000000..1abaf0b6f3 --- /dev/null +++ b/packages/plasma-giga/src/components/Mask/Mask.ts @@ -0,0 +1,5 @@ +import { composeMask } from '@salutejs/plasma-new-hope/styled-components'; + +import { TextField } from '../TextField'; + +export const Mask = composeMask(TextField); diff --git a/packages/plasma-giga/src/components/Mask/index.ts b/packages/plasma-giga/src/components/Mask/index.ts new file mode 100644 index 0000000000..aa2cdb1f26 --- /dev/null +++ b/packages/plasma-giga/src/components/Mask/index.ts @@ -0,0 +1 @@ +export { Mask } from './Mask'; diff --git a/packages/plasma-giga/src/components/Modal/Modal.config.ts b/packages/plasma-giga/src/components/Modal/Modal.config.ts new file mode 100644 index 0000000000..8b107b98ea --- /dev/null +++ b/packages/plasma-giga/src/components/Modal/Modal.config.ts @@ -0,0 +1,24 @@ +import { css, modalTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + }, + variations: { + view: { + default: css` + ${modalTokens.modalOverlayWithBlurColor}: rgba(35, 35, 35, 0.2); + ${modalTokens.modalOverlayColor}: var(--overlay-soft); + ${modalTokens.modalBodyBackground}: var(--surface-solid-card); + ${modalTokens.modalBodyBorderRadius}: 1.25rem; + ${modalTokens.modalBodyPadding}: 2rem; + ${modalTokens.modalContentPadding}: 0.625rem; + ${modalTokens.modalCloseButtonRadius}: 0.375rem; + ${modalTokens.modalCloseButtonColor}: var(--text-secondary); + ${modalTokens.modalCloseButtonHoverColor}: var(--text-secondary-hover); + ${modalTokens.modalCloseButtonActiveColor}: var(--text-secondary-active); + ${modalTokens.modalOutlineFocusColor}: var(--surface-accent); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Modal/Modal.stories.tsx b/packages/plasma-giga/src/components/Modal/Modal.stories.tsx new file mode 100644 index 0000000000..6bfa56482b --- /dev/null +++ b/packages/plasma-giga/src/components/Modal/Modal.stories.tsx @@ -0,0 +1,425 @@ +import React, { useCallback, useRef, useState } from 'react'; +import type { ComponentProps } from 'react'; +import styled from 'styled-components'; +import type { Meta, StoryObj } from '@storybook/react'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; + +import { SSRProvider } from '../SSRProvider'; +import { Button } from '../Button'; +import { TextField } from '../TextField'; +import { PopupProvider, popupClasses } from '../Popup'; + +import { Modal, modalClasses } from '.'; +import type { ModalProps } from '.'; + +const meta: Meta<ModalProps> = { + title: 'Overlay/Modal', + decorators: [InSpacingDecorator], + parameters: { + docs: { story: { inline: false, iframeHeight: '30rem' } }, + }, + argTypes: { + ...disableProps(['hasBody']), + placement: { + options: [ + 'center', + 'top', + 'bottom', + 'right', + 'left', + 'top-right', + 'top-left', + 'bottom-right', + 'bottom-left', + ], + control: { + type: 'select', + }, + table: { defaultValue: { summary: 'center' } }, + }, + offsetX: { + control: { + type: 'number', + }, + table: { defaultValue: { summary: 0 } }, + }, + offsetY: { + control: { + type: 'number', + }, + table: { defaultValue: { summary: 0 } }, + }, + closeOnEsc: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: true } }, + }, + closeOnOverlayClick: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: true } }, + }, + withBlur: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: false } }, + }, + }, +} as Meta; + +export default meta; + +type StoryModalProps = ComponentProps<typeof Modal> & { + placement: string; + offsetX: number; + offsetY: number; + closeOnEsc: boolean; + closeOnOverlayClick: boolean; + withBlur: boolean; + hasClose?: boolean; +}; + +const StyledButton = styled(Button)` + margin-top: 1rem; + width: 15rem; +`; + +const StyledWrapper = styled.div` + height: 1200px; +`; + +const Content = styled.div` + background: var(--surface-solid-secondary); + padding: 1rem; +`; + +const ButtonWrapper = styled.div` + display: flex; + flex-direction: column; +`; + +const StyledModal = styled(Modal)` + && > .${popupClasses.root}, .${modalClasses.overlay} { + animation: fadeIn 1s forwards; + } + + &&.${popupClasses.endAnimation} .${popupClasses.root} { + animation: fadeOut 1s forwards; + } + + &&.${popupClasses.endAnimation} .${modalClasses.overlay} { + animation: fadeOut 1s forwards; + } + + @keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } + } + + @keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } + } +`; + +const StoryModalDemo = ({ placement, offsetX, offsetY, ...rest }: StoryModalProps) => { + const [isOpenA, setIsOpenA] = useState(false); + const [isOpenB, setIsOpenB] = useState(false); + const [isOpenC, setIsOpenC] = useState(false); + + return ( + <SSRProvider> + <StyledWrapper> + <PopupProvider> + <ButtonWrapper> + <StyledButton text="Открыть A" onClick={() => setIsOpenA(true)} /> + </ButtonWrapper> + <StyledModal + id="modalA" + frame="theme-root" + withAnimation + onClose={() => setIsOpenA(false)} + opened={isOpenA} + placement={placement} + offset={[offsetX, offsetY]} + hasBody + {...rest} + > + <Button onClick={() => setIsOpenA(false)}>Close</Button> + <ButtonWrapper> + <StyledButton text="Открыть B" onClick={() => setIsOpenB(true)} /> + </ButtonWrapper> + <Modal + id="modalB" + frame="theme-root" + onClose={() => setIsOpenB(false)} + opened={isOpenB} + placement="left" + offset={[offsetX, offsetY]} + hasBody + {...rest} + > + <Button style={{ marginRight: '1rem' }} onClick={() => setIsOpenB(false)}> + Close + </Button> + <ButtonWrapper> + <StyledButton text="Открыть C" onClick={() => setIsOpenC(true)} /> + </ButtonWrapper> + <Modal + id="modalC" + frame="theme-root" + onClose={() => setIsOpenC(false)} + opened={isOpenC} + placement="top" + offset={[offsetX, offsetY]} + hasBody + {...rest} + > + <Button style={{ marginRight: '1rem' }} onClick={() => setIsOpenC(false)}> + Close + </Button> + <>Content</> + </Modal> + </Modal> + </StyledModal> + </PopupProvider> + </StyledWrapper> + </SSRProvider> + ); +}; + +const StoryCustomModalDemo = ({ placement, offsetX, offsetY, ...rest }: StoryModalProps) => { + const [isOpenA, setIsOpenA] = useState(false); + const [isOpenB, setIsOpenB] = useState(false); + const [isOpenC, setIsOpenC] = useState(false); + + return ( + <SSRProvider> + <StyledWrapper> + <PopupProvider> + <ButtonWrapper> + <StyledButton text="Открыть A" onClick={() => setIsOpenA(true)} /> + </ButtonWrapper> + <StyledModal + id="modalA" + frame="theme-root" + withAnimation + onClose={() => setIsOpenA(false)} + opened={isOpenA} + placement={placement} + offset={[offsetX, offsetY]} + {...rest} + > + <Content> + <Button onClick={() => setIsOpenA(false)}>Close</Button> + <ButtonWrapper> + <StyledButton text="Открыть B" onClick={() => setIsOpenB(true)} /> + </ButtonWrapper> + <Modal + id="modalB" + frame="theme-root" + onClose={() => setIsOpenB(false)} + opened={isOpenB} + placement="left" + offset={[offsetX, offsetY]} + {...rest} + > + <Content> + <Button style={{ marginRight: '1rem' }} onClick={() => setIsOpenB(false)}> + Close + </Button> + <ButtonWrapper> + <StyledButton text="Открыть C" onClick={() => setIsOpenC(true)} /> + </ButtonWrapper> + <Modal + id="modalC" + frame="theme-root" + onClose={() => setIsOpenC(false)} + opened={isOpenC} + placement="top" + offset={[offsetX, offsetY]} + {...rest} + > + <Content> + <Button style={{ marginRight: '1rem' }} onClick={() => setIsOpenC(false)}> + Close + </Button> + <>Content</> + </Content> + </Modal> + </Content> + </Modal> + </Content> + </StyledModal> + </PopupProvider> + </StyledWrapper> + </SSRProvider> + ); +}; + +export const Default: StoryObj<StoryModalProps> = { + args: { + placement: 'center', + withBlur: false, + closeOnEsc: true, + closeOnOverlayClick: true, + offsetX: 0, + offsetY: 0, + hasClose: true, + }, + argTypes: { + hasClose: { + control: { + type: 'boolean', + }, + }, + }, + render: (args) => <StoryModalDemo {...args} />, +}; + +export const CustomModalDemo: StoryObj<StoryModalProps> = { + args: { + placement: 'center', + withBlur: false, + closeOnEsc: true, + closeOnOverlayClick: true, + offsetX: 0, + offsetY: 0, + }, + render: (args) => <StoryCustomModalDemo {...args} />, +}; + +const StyledModalAnimation = styled(Modal)` + /* stylelint-disable */ + ${({ placement }) => + placement !== 'center' + ? css` + --initial-position: 0, 100%; + --end-position: 0, -50%; + ` + : css` + --initial-position: -50%, 100%; + --end-position: -50%, -50%; + `} + + && .${popupClasses.root} { + animation: fadeIn 1s forwards; + } + + &&.${popupClasses.endAnimation} .${popupClasses.root} { + animation: fadeOut 1s forwards; + } + + && .${modalClasses.overlay} { + animation: overlayFadeIn 1s forwards; + } + + &&.${popupClasses.endAnimation} .${modalClasses.overlay} { + animation: overlayFadeOut 1s forwards; + } + /* stylelint-enable */ + + @keyframes overlayFadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } + } + + @keyframes overlayFadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } + } + + @keyframes fadeIn { + from { + opacity: 0; + transform: translate(var(--initial-position)); + } + + to { + opacity: 1; + transform: translate(var(--end-position)); + } + } + + @keyframes fadeOut { + from { + opacity: 1; + transform: translate(var(--end-position)); + } + + to { + opacity: 0; + transform: translate(var(--initial-position)); + } + } +`; + +const StoryModalAnimationDemo = ({ placement, offsetX, offsetY, ...rest }: StoryModalProps) => { + const ref = useRef(null); + const [isOpen, setIsOpen] = useState(false); + + const close = useCallback(() => { + setIsOpen(false); + }, []); + + return ( + <SSRProvider> + <PopupProvider> + <Button view="default" text="Открыть новое модальное окно" onClick={() => setIsOpen(!isOpen)} /> + <StyledModalAnimation + id="modal" + frame="theme-root" + withAnimation + onClose={() => setIsOpen(false)} + opened={isOpen} + placement={placement} + offset={[offsetX, offsetY]} + initialFocusRef={ref} + {...rest} + > + <Content> + <TextField value="Text" onChange={() => {}} /> + <TextField ref={ref} value="Text2" onChange={() => {}} /> + <Button text="Закрыть" onClick={close} /> + </Content> + </StyledModalAnimation> + </PopupProvider> + </SSRProvider> + ); +}; + +export const ModalBottomAnimation: StoryObj<StoryModalProps> = { + args: { + placement: 'bottom', + withAnimation: true, + withBlur: false, + closeOnEsc: true, + closeOnOverlayClick: true, + offsetX: 0, + offsetY: 0, + }, + render: (args) => <StoryModalAnimationDemo {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Modal/Modal.tsx b/packages/plasma-giga/src/components/Modal/Modal.tsx new file mode 100644 index 0000000000..bed62674ac --- /dev/null +++ b/packages/plasma-giga/src/components/Modal/Modal.tsx @@ -0,0 +1,14 @@ +import { modalConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; +import type { ForwardRefExoticComponent, RefAttributes } from 'react'; + +import { config } from './Modal.config'; + +import { ModalProps } from '.'; + +const mergedConfig = mergeConfig(modalConfig, config); +const ModalComponent = component(mergedConfig) as ForwardRefExoticComponent<ModalProps & RefAttributes<HTMLDivElement>>; + +/** + * Модальное окно. + */ +export const Modal = ModalComponent; diff --git a/packages/plasma-giga/src/components/Modal/index.ts b/packages/plasma-giga/src/components/Modal/index.ts new file mode 100644 index 0000000000..b331695161 --- /dev/null +++ b/packages/plasma-giga/src/components/Modal/index.ts @@ -0,0 +1,4 @@ +export { Modal } from './Modal'; +export { modalClasses } from '@salutejs/plasma-new-hope/styled-components'; + +export type { ModalProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Notification/Notification.config.ts b/packages/plasma-giga/src/components/Notification/Notification.config.ts new file mode 100644 index 0000000000..8492f79c0d --- /dev/null +++ b/packages/plasma-giga/src/components/Notification/Notification.config.ts @@ -0,0 +1,110 @@ +import { css, notificationTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + closeIconType: 'default', + }, + variations: { + view: { + default: css` + ${notificationTokens.contentColor}: var(--text-secondary); + ${notificationTokens.background}: var(--surface-transparent-card); + ${notificationTokens.borderRadius}: 0.75rem; + ${notificationTokens.padding}: 0.375rem; + + ${notificationTokens.contentPaddingTop}: 0.125rem; + ${notificationTokens.contentPaddingRight}: 0.25rem; + ${notificationTokens.contentPaddingBottom}: 0rem; + ${notificationTokens.contentPaddingLeft}: 0.25rem; + + ${notificationTokens.contentPaddingTopWithoutIcon}: 0.25rem; + ${notificationTokens.horizontalLayoutRightPaddingWithoutCloseIcon}: 1rem; + + ${notificationTokens.textboxPaddingTop}: 0.1875rem; + ${notificationTokens.textboxPaddingRight}: 0.125rem; + ${notificationTokens.textboxPaddingBottom}: 0.375rem; + ${notificationTokens.textboxPaddingLeft}: 0.125rem; + + ${notificationTokens.textboxPaddingRightWithCloseIcon}: 1.625rem; + ${notificationTokens.textboxGap}: 0.25rem; + + ${notificationTokens.closeIconTop}: 0.5rem; + ${notificationTokens.closeIconRight}: 0.5rem; + + ${notificationTokens.buttonsMarginTop}: 0.375rem; + + ${notificationTokens.contentLeftIconSize}: 1.5rem; + ${notificationTokens.contentLeftIconMargin}: 0.375rem; + ${notificationTokens.contentTopIconMargin}: 0.5rem; + + ${notificationTokens.contentFontFamily}: var(--plasma-typo-body-s-font-family); + ${notificationTokens.contentFontSize}: var(--plasma-typo-body-s-font-size); + ${notificationTokens.contentFontStyle}: var(--plasma-typo-body-s-font-style); + ${notificationTokens.contentFontWeight}: var(--plasma-typo-body-s-font-weight); + ${notificationTokens.contentFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${notificationTokens.contentFontLineHeight}: var(--plasma-typo-body-s-line-height); + + ${notificationTokens.titleFontFamily}: var(--plasma-typo-body-s-font-family); + ${notificationTokens.titleFontSize}: var(--plasma-typo-body-s-font-size); + ${notificationTokens.titleFontStyle}: var(--plasma-typo-body-s-font-style); + ${notificationTokens.titleFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${notificationTokens.titleFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${notificationTokens.titleFontLineHeight}: var(--plasma-typo-body-s-line-height); + + ${notificationTokens.closeIconColor}: var(--text-tertiary); + ${notificationTokens.closeIconColorOnHover}: var(--text-primary); + + ${notificationTokens.horizontalLayoutGap}: 0.375rem; + ${notificationTokens.horizontalLayoutLeftIconMargin}: 0.75rem; + ${notificationTokens.paddingOneLineTextbox}: 0.8125rem 0.5rem 0.8125rem 0.875rem; + `, + }, + layout: { + horizontal: css` + ${notificationTokens.width}: 25rem; + ${notificationTokens.horizontalLayoutPadding}: 1rem 0.5rem 1rem 0.875rem; + `, + vertical: css` + ${notificationTokens.width}: 15rem; + ${notificationTokens.padding}: 0.375rem; + `, + }, + closeIconType: { + default: css` + ${notificationTokens.closeIconButtonSize}: 1.5rem; + ${notificationTokens.closeIconSize}: 1.5rem; + `, + }, + size: { + xs: css` + ${notificationTokens.closeIconTop}: 0.5rem; + ${notificationTokens.closeIconRight}: 0.5rem; + + ${notificationTokens.padding}: 0.375rem; + ${notificationTokens.textboxPaddingTopWithTopIcon}: 0rem; + + ${notificationTokens.contentPaddingTop}: 0.125rem; + ${notificationTokens.contentPaddingRight}: 0.25rem; + ${notificationTokens.contentPaddingBottom}: 0rem; + ${notificationTokens.contentPaddingLeft}: 0.25rem; + + ${notificationTokens.buttonsMarginLeft}: 0rem; + `, + xxs: css` + ${notificationTokens.closeIconTop}: 0.8125rem; + ${notificationTokens.closeIconRight}: 1rem; + + ${notificationTokens.padding}: 0.5625rem 1rem 1rem 1rem; + ${notificationTokens.textboxPaddingTopWithTopIcon}: 0.1875rem; + + ${notificationTokens.contentPaddingTop}: 0.25rem; + ${notificationTokens.contentPaddingRight}: 0rem; + ${notificationTokens.contentPaddingBottom}: 0rem; + ${notificationTokens.contentPaddingLeft}: 0rem; + + ${notificationTokens.buttonsMarginLeft}: 2rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Notification/Notification.stories.tsx b/packages/plasma-giga/src/components/Notification/Notification.stories.tsx new file mode 100644 index 0000000000..62dbdeea42 --- /dev/null +++ b/packages/plasma-giga/src/components/Notification/Notification.stories.tsx @@ -0,0 +1,198 @@ +import React, { useCallback, useRef, useState } from 'react'; +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { IconDisclosureRight } from '@salutejs/plasma-icons'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { Button } from '../Button/Button'; +import { Modal } from '../Modal/Modal'; +import { PopupProvider } from '../Popup'; + +import { + Notification, + NotificationsProvider, + NotificationPlacement, + NotificationIconPlacement, + NotificationLayout, + addNotification, +} from './Notification'; + +const titles = ['Выполнено', 'Внимание', 'Ошибка']; +const texts = ['SSH ключ успешно скопирован', 'Нельзя скопировать SSH ключ', 'Не удалось скопировать SSH ключ']; +const size = ['xs', 'xxs']; +const iconPlacement = ['top', 'left']; +const notificationsPlacements = ['bottom-right', 'bottom-left']; + +const longText = `JavaScript frameworks are an essential part of modern front-end web development, +providing developers with proven tools for building scalable, interactive web applications. +`; + +const getNotificationProps = (i: number) => ({ + title: titles[i % 3], + children: texts[i % 3], + size: size[i % 2], + iconPlacement: iconPlacement[i % 2] as NotificationIconPlacement, +}); + +const placements = ['top', 'left']; + +const meta: Meta<typeof Notification> = { + title: 'Overlay/Notification', + decorators: [InSpacingDecorator], +}; + +export default meta; + +interface StoryDefaultProps { + title: string; + children: string; + showCloseIcon: boolean; + showLeftIcon: boolean; + layout: NotificationLayout; + size: 'xs' | 'xxs'; + iconPlacement: NotificationIconPlacement; + placement?: NotificationPlacement; +} + +const StoryDefault = ({ title, children, iconPlacement, size, layout, showLeftIcon, ...rest }: StoryDefaultProps) => { + return ( + <Notification + title={title} + icon={showLeftIcon ? <IconDisclosureRight /> : ''} + iconPlacement={iconPlacement} + actions={ + <Button + text="text" + size={layout === 'horizontal' ? 'xs' : size} + stretch={layout === 'vertical' && size === 'xs'} + /> + } + size={size} + layout={layout} + {...rest} + > + {children} + </Notification> + ); +}; + +export const Default: StoryObj<StoryDefaultProps> = { + argTypes: { + iconPlacement: { + options: placements, + control: { + type: 'select', + }, + }, + size: { + options: ['xs', 'xxs'], + control: { + type: 'select', + }, + }, + layout: { + options: ['vertical', 'horizontal'], + control: { + type: 'select', + }, + }, + }, + args: { + title: 'Title', + children: longText, + showCloseIcon: true, + showLeftIcon: true, + iconPlacement: 'top', + layout: 'vertical', + size: 'xs', + }, + render: (args) => <StoryDefault {...args} />, +}; + +type StoryLiveDemoProps = ComponentProps<typeof Notification> & { + timeout: number; + layout: NotificationLayout; + size: 'xs' | 'xxs'; + iconPlacement: NotificationIconPlacement; + placement?: NotificationPlacement; +}; + +const StoryLiveDemo = ({ timeout, placement, ...rest }: StoryLiveDemoProps) => { + const count = useRef(0); + const handleClick = useCallback(() => { + addNotification({ icon: <IconDisclosureRight />, ...rest, ...getNotificationProps(count.current) }, timeout); + count.current++; + }, [count, rest]); + + return ( + <NotificationsProvider placement={placement}> + <Button text="Добавить уведомление" onClick={handleClick} /> + </NotificationsProvider> + ); +}; + +export const LiveDemo: StoryObj<StoryLiveDemoProps> = { + argTypes: { + layout: { + options: ['vertical', 'horizontal'], + control: { + type: 'select', + }, + }, + placement: { + options: notificationsPlacements, + control: { + type: 'select', + }, + }, + }, + args: { + timeout: 3000, + role: 'alert', + layout: 'vertical', + placement: 'bottom-right', + }, + render: (args) => <StoryLiveDemo {...args} />, +}; + +type StoryWithModalProps = ComponentProps<typeof Notification> & { + timeout: number; + placement?: NotificationPlacement; +}; + +const StoryWithModal = ({ timeout, placement }: StoryWithModalProps) => { + const [isModalOpen, setIsModalOpen] = useState(false); + const count = useRef(0); + const handleClick = useCallback(() => { + addNotification(getNotificationProps(count.current), timeout); + count.current++; + }, [count]); + + return ( + <NotificationsProvider placement={placement}> + <PopupProvider> + <Button text="Open modal" onClick={() => setIsModalOpen(true)} /> + <Modal opened={isModalOpen} onClose={() => setIsModalOpen(false)}> + <div>Hello!</div> + <Button view="default" text="Add notification" onClick={handleClick} /> + </Modal> + </PopupProvider> + </NotificationsProvider> + ); +}; + +export const WithModal: StoryObj<StoryLiveDemoProps> = { + args: { + timeout: 3500, + placement: 'bottom-right', + }, + argTypes: { + placement: { + options: notificationsPlacements, + control: { + type: 'select', + }, + }, + }, + render: (args) => <StoryWithModal {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Notification/Notification.tsx b/packages/plasma-giga/src/components/Notification/Notification.tsx new file mode 100644 index 0000000000..46035e9311 --- /dev/null +++ b/packages/plasma-giga/src/components/Notification/Notification.tsx @@ -0,0 +1,36 @@ +import React, { ReactNode } from 'react'; +import { + component, + mergeConfig, + notificationConfig, + NotificationProps, + NotificationsProvider as Provider, + NotificationIconPlacement, + NotificationPlacement, + NotificationLayout, + addNotification, + closeNotification, +} from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Notification.config'; + +export { modalClasses } from '../Modal'; + +const mergedConfig = mergeConfig(notificationConfig, config); + +export const Notification = component(mergedConfig); + +export const NotificationsProvider: React.FC<{ + children: ReactNode; + frame?: string; + placement?: NotificationPlacement; +}> = ({ children, frame = 'document', placement }) => { + return ( + <Provider config={mergedConfig} frame={frame} placement={placement}> + {children} + </Provider> + ); +}; + +export type { NotificationIconPlacement, NotificationPlacement, NotificationLayout, NotificationProps }; +export { addNotification, closeNotification }; diff --git a/packages/plasma-giga/src/components/Notification/index.ts b/packages/plasma-giga/src/components/Notification/index.ts new file mode 100644 index 0000000000..8b23eec7e7 --- /dev/null +++ b/packages/plasma-giga/src/components/Notification/index.ts @@ -0,0 +1,2 @@ +export { NotificationsProvider, Notification, addNotification, closeNotification } from './Notification'; +export type { NotificationIconPlacement, NotificationLayout, NotificationProps } from './Notification'; diff --git a/packages/plasma-giga/src/components/NumberInput/NumberInput.config.ts b/packages/plasma-giga/src/components/NumberInput/NumberInput.config.ts new file mode 100644 index 0000000000..e55e70fd71 --- /dev/null +++ b/packages/plasma-giga/src/components/NumberInput/NumberInput.config.ts @@ -0,0 +1,281 @@ +import { css, numberInputTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'l', + shape: 'cornered', + inputBackgroundType: 'fill', + }, + variations: { + view: { + default: css` + ${tokens.caretColor}: var(--text-accent); + ${tokens.errorColor}: var(--text-negative); + ${tokens.backgroundErrorColor}: var(--surface-transparent-negative); + + ${tokens.color}: var(--text-primary); + ${tokens.colorSolid}: var(--inverse-text-primary); + ${tokens.additionalTextColor}: var(--text-tertiary); + ${tokens.additionalTextColorSolid}: var(--inverse-text-tertiary); + ${tokens.backgroundColorFocus}: var(--surface-transparent-secondary); + ${tokens.backgroundColorSolidFocus}: var(--inverse-surface-transparent-secondary); + ${tokens.backgroundColorSolid}: var(--surface-solid-default); + + ${tokens.iconButtonColor}: var(--inverse-text-primary); + ${tokens.iconButtonBackgroundColor}: var(--surface-solid-default); + ${tokens.iconButtonColorHover}: var(--inverse-text-primary); + ${tokens.iconButtonColorSolidHover}: var(--inverse-text-primary-hover); + ${tokens.iconButtonBackgroundColorHover}: var(--surface-solid-default-hover); + ${tokens.iconButtonColorActive}: var(--inverse-text-primary); + ${tokens.iconButtonColorSolidActive}: var(--inverse-text-primary-active); + ${tokens.iconButtonBackgroundColorActive}: var(--surface-solid-default-active); + + ${tokens.actionButtonDisabledOpacity}: 0.4; + + ${tokens.loaderSpinnerColor}: inherit; + ${tokens.loaderSpinnerColorSolid}: inherit; + `, + secondary: css` + ${tokens.caretColor}: var(--text-accent); + ${tokens.errorColor}: var(--text-negative); + ${tokens.backgroundErrorColor}: var(--surface-transparent-negative); + + ${tokens.color}: var(--text-primary); + ${tokens.colorSolid}: var(--text-primary); + ${tokens.additionalTextColor}: var(--text-tertiary); + ${tokens.additionalTextColorSolid}: var(--text-tertiary); + ${tokens.backgroundColorFocus}: var(--surface-transparent-secondary); + ${tokens.backgroundColorSolidFocus}: var(--surface-transparent-secondary); + ${tokens.backgroundColorSolid}: var(--surface-transparent-secondary); + + ${tokens.iconButtonColor}: var(--text-primary); + ${tokens.iconButtonBackgroundColor}: var(--surface-transparent-secondary); + ${tokens.iconButtonColorHover}: var(--text-primary); + ${tokens.iconButtonColorSolidHover}: var(--text-primary-hover); + ${tokens.iconButtonBackgroundColorHover}: var(--surface-transparent-secondary-hover); + ${tokens.iconButtonColorActive}: var(--text-primary); + ${tokens.iconButtonColorSolidActive}: var(--text-primary-active); + ${tokens.iconButtonBackgroundColorActive}: var(--surface-transparent-secondary-active); + + ${tokens.actionButtonDisabledOpacity}: 0.4; + + ${tokens.loaderSpinnerColor}: inherit; + ${tokens.loaderSpinnerColorSolid}: inherit; + `, + accent: css` + ${tokens.caretColor}: var(--text-accent); + ${tokens.caretColorSolid}: var(--inverse-text-primary); + ${tokens.errorColor}: var(--text-negative); + ${tokens.backgroundErrorColor}: var(--surface-transparent-negative); + + ${tokens.color}: var(--text-primary); + ${tokens.colorSolid}: var(--on-dark-text-primary); + ${tokens.additionalTextColor}: var(--text-tertiary); + ${tokens.additionalTextColorSolid}: var(--on-dark-text-tertiary); + ${tokens.backgroundColorFocus}: var(--surface-transparent-secondary); + ${tokens.backgroundColorSolidFocus}: var(--on-dark-surface-transparent-secondary); + ${tokens.backgroundColorSolid}: var(--surface-accent); + + ${tokens.iconButtonColor}: var(--on-dark-text-primary); + ${tokens.iconButtonBackgroundColor}: var(--surface-accent); + ${tokens.iconButtonColorHover}: var(--inverse-text-primary); + ${tokens.iconButtonColorSolidHover}: var(--on-dark-text-primary-hover); + ${tokens.iconButtonBackgroundColorHover}: var(--surface-accent-hover); + ${tokens.iconButtonColorActive}: var(--inverse-text-primary); + ${tokens.iconButtonColorSolidActive}: var(--on-dark-text-primary-active); + ${tokens.iconButtonBackgroundColorActive}: var(--surface-accent-active); + + ${tokens.actionButtonDisabledOpacity}: 0.4; + + ${tokens.loaderSpinnerColor}: inherit; + ${tokens.loaderSpinnerColorSolid}: inherit; + `, + clear: css` + ${tokens.caretColor}: var(--text-accent); + ${tokens.caretColorSolid}: var(--text-accent); + ${tokens.errorColor}: var(--text-negative); + ${tokens.backgroundErrorColor}: var(--surface-transparent-negative); + + ${tokens.color}: var(--text-primary); + ${tokens.colorSolid}: var(--text-primary); + ${tokens.iconButtonColorSolidHover}: var(--text-primary-hover); + ${tokens.additionalTextColor}: var(--text-tertiary); + ${tokens.additionalTextColorSolid}: var(--text-tertiary); + ${tokens.backgroundColorFocus}: var(--surface-transparent-secondary); + ${tokens.backgroundColorSolidFocus}: var(--surface-transparent-secondary); + ${tokens.backgroundColorSolid}: transparent; + + ${tokens.iconButtonColor}: var(--text-primary); + ${tokens.iconButtonBackgroundColor}: transparent; + ${tokens.iconButtonColorHover}: var(--text-primary-hover); + ${tokens.iconButtonBackgroundColorHover}: transparent; + ${tokens.iconButtonColorActive}: var(--text-primary-active); + ${tokens.iconButtonBackgroundColorActive}: transparent; + + ${tokens.actionButtonDisabledOpacity}: 0.4; + + ${tokens.loaderSpinnerColor}: inherit; + ${tokens.loaderSpinnerColorSolid}: inherit; + `, + }, + size: { + l: css` + ${tokens.rootMinWidth}: 11.75rem; + ${tokens.iconButtonHeight}: 3.5rem; + ${tokens.iconButtonWidth}: 3.5rem; + ${tokens.iconButtonPadding}: 1.5rem; + ${tokens.iconButtonFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.iconButtonFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.iconButtonFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.iconButtonFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${tokens.iconButtonLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.iconButtonLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.iconButtonRadius}: 0.875rem; + ${tokens.iconButtonSegmentationRadius}: 0.375rem; + + ${tokens.inputWrapperMargin}: 0 0.125rem; + ${tokens.inputWrapperBorderRadius}: 0.875rem; + ${tokens.textWrapperHeight}: 3.5rem; + ${tokens.textWrapperPadding}: 1.063rem 1.125rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.textBeforeMarginRight}: 0.25rem; + ${tokens.textAfterMarginLeft}: 0.25rem; + + ${tokens.loaderSpinnerSize}: 1.375rem; + `, + m: css` + ${tokens.rootMinWidth}: 10.25rem; + ${tokens.iconButtonHeight}: 3rem; + ${tokens.iconButtonWidth}: 3rem; + ${tokens.iconButtonPadding}: 1.25rem; + ${tokens.iconButtonFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.iconButtonFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.iconButtonFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.iconButtonFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${tokens.iconButtonLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.iconButtonLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.iconButtonRadius}: 0.75rem; + ${tokens.iconButtonSegmentationRadius}: 0.25rem; + + ${tokens.inputWrapperMargin}: 0 0.125rem; + ${tokens.inputWrapperBorderRadius}: 0.75rem; + ${tokens.textWrapperHeight}: 3rem; + ${tokens.textWrapperPadding}: 0.875rem 1rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.textBeforeMarginRight}: 0.25rem; + ${tokens.textAfterMarginLeft}: 0.25rem; + + ${tokens.loaderSpinnerSize}: 1.375rem; + `, + s: css` + ${tokens.rootMinWidth}: 8.75rem; + ${tokens.iconButtonHeight}: 2.5rem; + ${tokens.iconButtonWidth}: 2.5rem; + ${tokens.iconButtonPadding}: 1rem; + ${tokens.iconButtonFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.iconButtonFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.iconButtonFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.iconButtonFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${tokens.iconButtonLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.iconButtonLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.iconButtonRadius}: 0.625rem; + ${tokens.iconButtonSegmentationRadius}: 0.25rem; + + ${tokens.inputWrapperMargin}: 0 0.125rem; + ${tokens.inputWrapperBorderRadius}: 0.625rem; + ${tokens.textWrapperHeight}: 2.5rem; + ${tokens.textWrapperPadding}: 0.688rem 0.875rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.textBeforeMarginRight}: 0.25rem; + ${tokens.textAfterMarginLeft}: 0.25rem; + + ${tokens.loaderSpinnerSize}: 1.375rem; + `, + xs: css` + ${tokens.rootMinWidth}: 6.875rem; + ${tokens.iconButtonHeight}: 2rem; + ${tokens.iconButtonWidth}: 2rem; + ${tokens.iconButtonPadding}: 0.75rem; + ${tokens.iconButtonFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.iconButtonFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.iconButtonFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.iconButtonFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${tokens.iconButtonLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.iconButtonLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.iconButtonRadius}: 0.5rem; + ${tokens.iconButtonSegmentationRadius}: 0.125rem; + + ${tokens.inputWrapperMargin}: 0 0.125rem; + ${tokens.inputWrapperBorderRadius}: 0.5rem; + ${tokens.textWrapperHeight}: 2rem; + ${tokens.textWrapperPadding}: 0.563rem 0.625rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textBeforeMarginRight}: 0.25rem; + ${tokens.textAfterMarginLeft}: 0.25rem; + + ${tokens.loaderSpinnerSize}: 1rem; + `, + }, + shape: { + cornered: css``, + pilled: css` + ${tokens.iconButtonRadius}: 50%; + `, + }, + inputBackgroundType: { + fill: css` + ${tokens.backgroundColor}: var(--surface-transparent-primary); + ${tokens.backgroundColorHover}: var(--surface-transparent-primary); + `, + clear: css` + ${tokens.backgroundColor}: transparent; + ${tokens.backgroundColorHover}: transparent; + `, + }, + segmentation: { + default: css``, + segmented: css``, + solid: css` + ${tokens.iconButtonSegmentationRadius}: 0; + `, + }, + disabled: { + true: css` + ${tokens.disabledOpacity}: 0.4; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/NumberInput/NumberInput.stories.tsx b/packages/plasma-giga/src/components/NumberInput/NumberInput.stories.tsx new file mode 100644 index 0000000000..27c4bd58dd --- /dev/null +++ b/packages/plasma-giga/src/components/NumberInput/NumberInput.stories.tsx @@ -0,0 +1,107 @@ +import React, { useState, ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { NumberInput } from './NumberInput'; + +const onChange = action('onChange'); +const onDecrement = action('onDecrement'); +const onIncrement = action('onIncrement'); + +const views = ['default', 'secondary', 'accent', 'clear']; +const sizes = ['l', 'm', 's', 'xs']; +const shapes = ['cornered', 'pilled']; +const inputBackgroundTypes = ['fill', 'clear']; +const segmentation = ['default', 'segmented', 'solid']; + +const meta: Meta<typeof NumberInput> = { + title: 'Data Entry/NumberInput', + component: NumberInput, + decorators: [InSpacingDecorator], + argTypes: { + min: { + control: { + type: 'number', + }, + }, + max: { + control: { + type: 'number', + }, + }, + view: { + options: views, + control: { + type: 'select', + }, + }, + size: { + options: sizes, + control: { + type: 'inline-radio', + }, + }, + shape: { + options: shapes, + control: { + type: 'inline-radio', + }, + }, + inputBackgroundType: { + options: inputBackgroundTypes, + control: { + type: 'inline-radio', + }, + }, + segmentation: { + options: segmentation, + control: { + type: 'select', + }, + }, + }, +}; + +export default meta; + +type StoryPropsDefault = ComponentProps<typeof NumberInput>; + +const StoryDefault = (args: StoryPropsDefault) => { + const [value, setValue] = useState(5); + + const handleChange = (_: any, newValue: number) => { + setValue(newValue); + onChange(newValue); + }; + + return ( + <NumberInput + {...args} + value={value} + onChange={handleChange} + onDecrement={onDecrement} + onIncrement={onIncrement} + /> + ); +}; + +export const Default: StoryObj<StoryPropsDefault> = { + args: { + view: 'default', + size: 'l', + shape: 'cornered', + inputBackgroundType: 'fill', + segmentation: 'default', + min: 0, + max: 9, + step: 1, + width: 188, + isManualInput: false, + textBefore: '', + textAfter: '', + isLoading: false, + disabled: false, + }, + render: StoryDefault, +}; diff --git a/packages/plasma-giga/src/components/NumberInput/NumberInput.ts b/packages/plasma-giga/src/components/NumberInput/NumberInput.ts new file mode 100644 index 0000000000..82bb04fe78 --- /dev/null +++ b/packages/plasma-giga/src/components/NumberInput/NumberInput.ts @@ -0,0 +1,7 @@ +import { numberInputConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './NumberInput.config'; + +const mergedConfig = mergeConfig(numberInputConfig, config); + +export const NumberInput = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/NumberInput/index.ts b/packages/plasma-giga/src/components/NumberInput/index.ts new file mode 100644 index 0000000000..ce83317c2b --- /dev/null +++ b/packages/plasma-giga/src/components/NumberInput/index.ts @@ -0,0 +1,2 @@ +export { NumberInput } from './NumberInput'; +export { numberInputTokens, numberInputClasses } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Overlay/Overlay.stories.tsx b/packages/plasma-giga/src/components/Overlay/Overlay.stories.tsx new file mode 100644 index 0000000000..8481de7067 --- /dev/null +++ b/packages/plasma-giga/src/components/Overlay/Overlay.stories.tsx @@ -0,0 +1,76 @@ +import React, { useState } from 'react'; +import styled from 'styled-components'; +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { disableProps, InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { Button } from '../Button/Button'; + +import { Overlay } from '.'; + +const onOverlayClick = action('onOverlayClick'); + +export default { + title: 'Overlay/Overlay', + decorators: [InSpacingDecorator], + argTypes: { + isClickable: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: true } }, + }, + withBlur: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: false } }, + }, + ...disableProps(['onOverlayClick', 'zIndex']), + }, +} as Meta; + +type StoryOverlayProps = ComponentProps<typeof Overlay>; + +const StyledButton = styled(Button)` + margin: 1rem; + width: 15rem; +`; + +const StyledCloseButton = styled(Button)` + position: fixed; + top: 50%; + left: 50%; + z-index: 101; + transform: translate(-50%, -50%); + width: 15rem; +`; + +const StoryDefault = (props: StoryOverlayProps) => { + const [isVisible, setIsVisible] = useState(false); + + return ( + <> + <StyledButton text="Показать overlay" onClick={() => setIsVisible(true)} /> + {isVisible && ( + <> + <Overlay {...props} /> + <StyledCloseButton view="primary" text=" Скрыть overlay" onClick={() => setIsVisible(false)} /> + </> + )} + </> + ); +}; + +export const Default: StoryObj<StoryOverlayProps> = { + args: { + zIndex: '100', + backgroundColorProperty: 'var(--overlay-soft)', + withBlur: false, + transparent: false, + isClickable: true, + onOverlayClick, + }, + render: (args) => <StoryDefault {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Overlay/index.ts b/packages/plasma-giga/src/components/Overlay/index.ts new file mode 100644 index 0000000000..b7384b5a9b --- /dev/null +++ b/packages/plasma-giga/src/components/Overlay/index.ts @@ -0,0 +1,2 @@ +export { Overlay } from '@salutejs/plasma-new-hope/styled-components'; +export type { OverlayProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Pagination/Pagination.component-test.tsx b/packages/plasma-giga/src/components/Pagination/Pagination.component-test.tsx new file mode 100644 index 0000000000..d25e2e5f15 --- /dev/null +++ b/packages/plasma-giga/src/components/Pagination/Pagination.component-test.tsx @@ -0,0 +1,299 @@ +/* eslint-disable */ +import React, { useState, useCallback } from 'react'; +import { mount, CypressTestDecorator, getComponent, SpaceMe } from '@salutejs/plasma-cy-utils'; +import { createGlobalStyle } from 'styled-components'; +import { standard as standardTypo } from '@salutejs/plasma-typo'; +import type { FC } from 'react'; + +const id = 'test-pagination'; +const slots = [7, 9, 13]; +const values = [1, 10, 20]; +const count = 20; +const views = ['clear', 'secondary', 'default']; + +const StandardTypoStyle = createGlobalStyle(standardTypo); + +describe('plasma-new-hope: Pagination Styled', () => { + const Pagination = getComponent('Pagination'); + + const CypressTestDecoratorWithTypo: FC = ({ children }) => ( + <CypressTestDecorator> + <StandardTypoStyle /> + {children} + </CypressTestDecorator> + ); + + const ControlledPagination = () => { + const [value, setValue] = useState(values[1]); + + return <Pagination id={id} value={value} count={count} slots={slots[1]} onChange={(v) => setValue(v)} />; + }; + + it('default', () => { + mount( + <CypressTestDecoratorWithTypo> + <ControlledPagination /> + </CypressTestDecoratorWithTypo>, + ); + + cy.matchImageSnapshot(); + }); + + it('_size', () => { + mount( + <CypressTestDecoratorWithTypo> + <Pagination size="xs" value={values[1]} slots={slots[1]} count={count} /> + <SpaceMe /> + <Pagination size="s" value={values[1]} slots={slots[1]} count={count} /> + <SpaceMe /> + <Pagination size="m" value={values[1]} slots={slots[1]} count={count} /> + <SpaceMe /> + <Pagination size="l" value={values[1]} slots={slots[1]} count={count} /> + </CypressTestDecoratorWithTypo>, + ); + + cy.matchImageSnapshot(); + }); + + it('_view', () => { + mount( + <CypressTestDecoratorWithTypo> + <Pagination view={views[0]} value={values[1]} slots={slots[1]} count={count} /> + <SpaceMe /> + <Pagination view={views[1]} value={values[1]} slots={slots[1]} count={count} /> + <SpaceMe /> + <Pagination view={views[2]} value={values[1]} slots={slots[1]} count={count} /> + </CypressTestDecoratorWithTypo>, + ); + + cy.matchImageSnapshot(); + }); + + it('_viewCurrentPage', () => { + mount( + <CypressTestDecoratorWithTypo> + <Pagination viewCurrentPage={views[0]} value={values[1]} slots={slots[1]} count={count} /> + <SpaceMe /> + <Pagination viewCurrentPage={views[1]} value={values[1]} slots={slots[1]} count={count} /> + <SpaceMe /> + <Pagination viewCurrentPage={views[2]} value={values[1]} slots={slots[1]} count={count} /> + </CypressTestDecoratorWithTypo>, + ); + + cy.matchImageSnapshot(); + }); + + it('type', () => { + mount( + <CypressTestDecoratorWithTypo> + <Pagination type="default" hasQuickJump hasPerPage value={values[1]} slots={slots[1]} count={count} /> + <SpaceMe /> + <Pagination + type="default" + hasQuickJump + hasPerPage={false} + value={values[1]} + slots={slots[1]} + count={count} + /> + <SpaceMe /> + <Pagination + type="default" + hasQuickJump={false} + hasPerPage + value={values[1]} + slots={slots[1]} + count={count} + /> + <SpaceMe /> + <Pagination + type="default" + hasQuickJump={false} + hasPerPage={false} + value={values[1]} + slots={slots[1]} + count={count} + /> + <SpaceMe /> + <Pagination type="compact" hasQuickJump hasPerPage value={values[1]} slots={slots[1]} count={count} /> + <SpaceMe /> + <Pagination + type="compact" + hasQuickJump + hasPerPage={false} + value={values[1]} + slots={slots[1]} + count={count} + /> + <SpaceMe /> + <Pagination + type="compact" + hasQuickJump={false} + hasPerPage + value={values[1]} + slots={slots[1]} + count={count} + /> + <SpaceMe /> + <Pagination + type="compact" + hasQuickJump={false} + hasPerPage={false} + value={values[1]} + slots={slots[1]} + count={count} + /> + </CypressTestDecoratorWithTypo>, + ); + + cy.matchImageSnapshot(); + }); +}); + +describe('plasma-new-hope: Pagination Slots', () => { + const Pagination = getComponent('Pagination'); + + const CypressTestDecoratorWithTypo: FC = ({ children }) => ( + <CypressTestDecorator> + <StandardTypoStyle /> + {children} + </CypressTestDecorator> + ); + + it('minSlots', () => { + mount( + <CypressTestDecoratorWithTypo> + <Pagination slots={slots[0]} value={values[0]} count={count} /> + <SpaceMe /> + <Pagination slots={slots[0]} value={values[1]} count={count} /> + <SpaceMe /> + <Pagination slots={slots[0]} value={values[2]} count={count} /> + </CypressTestDecoratorWithTypo>, + ); + + cy.matchImageSnapshot(); + }); + it('avrSlots', () => { + mount( + <CypressTestDecoratorWithTypo> + <Pagination slots={slots[1]} value={values[0]} count={count} /> + <SpaceMe /> + <Pagination slots={slots[1]} value={values[1]} count={count} /> + <SpaceMe /> + <Pagination slots={slots[1]} value={values[2]} count={count} /> + </CypressTestDecoratorWithTypo>, + ); + + cy.matchImageSnapshot(); + }); + it('maxSlots', () => { + mount( + <CypressTestDecoratorWithTypo> + <Pagination slots={slots[2]} value={values[0]} count={count} /> + <SpaceMe /> + <Pagination slots={slots[2]} value={values[1]} count={count} /> + <SpaceMe /> + <Pagination slots={slots[2]} value={values[2]} count={count} /> + </CypressTestDecoratorWithTypo>, + ); + + cy.matchImageSnapshot(); + }); +}); + +describe('plasma-new-hope: Pagination Content', () => { + const Pagination = getComponent('Pagination'); + const Button = getComponent('Button'); + + const CypressTestDecoratorWithTypo: FC = ({ children }) => ( + <CypressTestDecorator> + <StandardTypoStyle /> + {children} + </CypressTestDecorator> + ); + + const PaginationContent = (agrs) => { + const [pageValue, setPageValue] = useState(agrs.value); + const [perPageValue, setPerPageValue] = useState(agrs.perPage); + + const handleChangePerpage = useCallback( + (perPage: number) => { + setPerPageValue(perPage); + }, + [perPageValue, setPerPageValue], + ); + + const handleChangePage = useCallback( + (page: number) => { + setPageValue(page); + }, + [pageValue, setPageValue], + ); + + return ( + <> + <Pagination + {...agrs} + value={pageValue} + perPage={perPageValue} + leftContent={ + <Button + id="pagination-button-prev" + onClick={() => { + handleChangePage(pageValue - 1); + }} + > + Prev + </Button> + } + rightContent={ + <Button + id="pagination-button-next" + onClick={() => { + handleChangePage(pageValue + 1); + }} + > + Next + </Button> + } + onChangePageValue={handleChangePage} + onChangePerageValue={handleChangePerpage} + /> + </> + ); + }; + + it('clickOnContent', () => { + mount( + <CypressTestDecoratorWithTypo> + <PaginationContent value={values[0]} count={count} /> + </CypressTestDecoratorWithTypo>, + ); + + cy.get('button[id="pagination-button-next"]').click(); + cy.get('button[id="pagination-button-next"]').click(); + cy.get('button[id="pagination-button-prev"]').click(); + + cy.matchImageSnapshot(); + }); + it('setInput', () => { + mount( + <CypressTestDecoratorWithTypo> + <Pagination slots={slots[1]} value={values[0]} count={count} /> + </CypressTestDecoratorWithTypo>, + ); + cy.get('input:first').focus().type('10').type('{enter}'); + + cy.matchImageSnapshot(); + }); + it('setSelect', () => { + mount( + <CypressTestDecoratorWithTypo> + <Pagination slots={slots[2]} value={values[0]} count={count} /> + </CypressTestDecoratorWithTypo>, + ); + cy.get('button').last().click(); + + cy.matchImageSnapshot(); + }); +}); diff --git a/packages/plasma-giga/src/components/Pagination/Pagination.config.ts b/packages/plasma-giga/src/components/Pagination/Pagination.config.ts new file mode 100644 index 0000000000..079a6a601f --- /dev/null +++ b/packages/plasma-giga/src/components/Pagination/Pagination.config.ts @@ -0,0 +1,287 @@ +import { css, paginationTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'clear', + viewCurrentPage: 'secondary', + size: 'xs', + }, + variations: { + view: { + default: css` + ${paginationTokens.buttonColor}: var(--inverse-text-primary); + ${paginationTokens.buttonColorHover}: var(--inverse-text-primary-hover); + ${paginationTokens.buttonColorActive}: var(--inverse-text-primary-active); + ${paginationTokens.buttonHoverColor}: var(--inverse-text-primary); + ${paginationTokens.buttonBackgroundColor}: var(--surface-solid-default); + ${paginationTokens.buttonBackgroundColorHover}: var(--surface-solid-default-hover); + ${paginationTokens.buttonBackgroundColorActive}: var(--surface-solid-default-active); + ${paginationTokens.buttonActiveColor}: var(--inverse-text-primary); + ${paginationTokens.buttonArrowColor}: var(--inverse-text-secondary); + ${paginationTokens.buttonArrowColorHover}: var(--inverse-text-secondary-hover); + ${paginationTokens.buttonArrowColorActive}: var(--inverse-text-secondary-hover); + + ${paginationTokens.buttonDisabledOpacity}: 0.4; + + ${paginationTokens.inputBackgroundColor}: var(--surface-transparent-secondary); + ${paginationTokens.inputBorderColor}:transparent; + ${paginationTokens.selectBackgroundColor}: color-mix( + in srgb, + var(--inverse-text-primary), + var(--surface-solid-default) 85% + ); + + ${paginationTokens.paginationColor}: var(--text-primary); + ${paginationTokens.buttonFocusColor}: var(--surface-accent); + `, + secondary: css` + ${paginationTokens.buttonColor}: var(--text-primary); + ${paginationTokens.buttonColorHover}: var(--text-primary-hover); + ${paginationTokens.buttonColorActive}: var(--text-primary-active); + ${paginationTokens.buttonBackgroundColor}: var(--surface-transparent-secondary); + ${paginationTokens.buttonBackgroundColorHover}: var(--surface-transparent-secondary-hover); + ${paginationTokens.buttonBackgroundColorActive}: var(--surface-transparent-secondary-active); + ${paginationTokens.buttonHoverColor}: var(--text-primary); + ${paginationTokens.buttonActiveColor}: var(--text-primary); + ${paginationTokens.buttonArrowColor}: var(--text-secondary); + ${paginationTokens.buttonArrowColorHover}: var(--text-secondary-hover); + ${paginationTokens.buttonArrowColorActive}: var(--text-secondary-hover); + + ${paginationTokens.buttonDisabledOpacity}: 0.4; + + ${paginationTokens.inputBackgroundColor}: var(--surface-transparent-secondary); + ${paginationTokens.selectBackgroundColor}: var(--surface-solid-secondary); + ${paginationTokens.inputBorderColor}: transparent; + + ${paginationTokens.paginationColor}: var(--text-primary); + ${paginationTokens.buttonFocusColor}: var(--surface-accent); + `, + clear: css` + ${paginationTokens.buttonColor}: var(--text-primary); + ${paginationTokens.buttonColorHover}: var(--text-primary-hover); + ${paginationTokens.buttonColorActive}: var(--text-primary-active); + ${paginationTokens.buttonBackgroundColor}: var(--surface-clear); + ${paginationTokens.buttonBackgroundColorHover}: var(--surface-clear); + ${paginationTokens.buttonBackgroundColorActive}: var(--surface-clear); + ${paginationTokens.buttonHoverColor}: var(--text-primary); + ${paginationTokens.buttonActiveColor}: var(--text-primary); + ${paginationTokens.buttonArrowColor}: var(--text-secondary); + ${paginationTokens.buttonArrowColorHover}: var(--text-secondary-hover); + ${paginationTokens.buttonArrowColorActive}: var(--text-secondary-hover); + + ${paginationTokens.buttonDisabledOpacity}: 0.4; + + ${paginationTokens.inputBackgroundColor}: var(--surface-transparent-secondary); + ${paginationTokens.selectBackgroundColor}: var(--surface-solid-card); + ${paginationTokens.inputBorderColor}: transparent; + + ${paginationTokens.paginationColor}: var(--text-primary); + ${paginationTokens.buttonFocusColor}: var(--surface-accent); + `, + }, + viewCurrentPage: { + default: css` + ${paginationTokens.paginationCurrentButtonColor}: var(--inverse-text-primary); + ${paginationTokens.paginationCurrentButtonBackgroundColor}: var(--surface-solid-default); + ${paginationTokens.paginationCurrentButtonHoverColor}: var(--inverse-text-primary); + ${paginationTokens.paginationCurrentButtonHoverBackgroundColor}: color-mix( + in srgb, + var(--inverse-text-primary), + var(--surface-solid-default) 85% + ); + ${paginationTokens.paginationCurrentButtonActiveColor}: var(--inverse-text-primary); + ${paginationTokens.paginationCurrentButtonActiveBackgroundColor}: color-mix( + in srgb, + var(--inverse-text-primary), + var(--surface-solid-default) 80% + ); + `, + secondary: css` + ${paginationTokens.paginationCurrentButtonColor}: var(--text-primary); + ${paginationTokens.paginationCurrentButtonBackgroundColor}: var(--surface-transparent-secondary); + ${paginationTokens.paginationCurrentButtonHoverColor}: var(--text-primary); + ${paginationTokens.paginationCurrentButtonHoverBackgroundColor}: color-mix( + in srgb, + var(--inverse-text-primary), + var(--surface-transparent-secondary) 85% + ); + ${paginationTokens.paginationCurrentButtonActiveColor}: var(--text-primary); + ${paginationTokens.paginationCurrentButtonActiveBackgroundColor}: color-mix( + in srgb, + var(--inverse-text-primary), + var(--surface-transparent-secondary) 80% + ); + `, + clear: css` + ${paginationTokens.paginationCurrentButtonColor}: var(--text-primary); + ${paginationTokens.paginationCurrentButtonBackgroundColor}: var(--surface-clear); + ${paginationTokens.paginationCurrentButtonHoverColor}: var(--text-primary); + ${paginationTokens.paginationCurrentButtonHoverBackgroundColor}: color-mix(in srgb, var(--text-primary), var(--surface-clear) 95%); + ${paginationTokens.paginationCurrentButtonActiveColor}: var(--text-primary); + ${paginationTokens.paginationCurrentButtonActiveBackgroundColor}: color-mix(in srgb, var(--text-primary), var(--surface-clear) 90%); + `, + }, + size: { + l: css` + ${paginationTokens.paginationFontFamily}: var(--plasma-typo-body-l-font-family); + ${paginationTokens.paginationFontSize}: var(--plasma-typo-body-l-font-size); + ${paginationTokens.paginationFontStyle}: var(--plasma-typo-body-l-font-style); + ${paginationTokens.paginationFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${paginationTokens.paginationLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${paginationTokens.paginationLineHeight}: var(--plasma-typo-body-l-line-height); + + ${paginationTokens.buttonHeight}: 3.5rem; + ${paginationTokens.buttonWidth}: 3rem; + ${paginationTokens.buttonWidthShorter}: 2.25rem; + ${paginationTokens.paginationInputWidth}: 4rem; + ${paginationTokens.buttonRadius}: 0.875rem; + ${paginationTokens.paginationIconSize}: 1.2rem; + ${paginationTokens.paginationIconDoubleSize}: 1.45rem; + ${paginationTokens.buttonArrowMargin}: 0 -0.125rem 0 0.5rem; + + ${paginationTokens.selectHeight}: auto; + ${paginationTokens.selectPaddingTop}: 0.125rem; + ${paginationTokens.selectPaddingRight}: 0.125rem; + ${paginationTokens.selectPaddingBottom}: 0.125rem; + ${paginationTokens.selectPaddingLeft}: 0.125rem; + + ${paginationTokens.selectItemHeight}: 1.5rem; + ${paginationTokens.selectItemPadding}: 1rem 1rem 1rem 1rem; + ${paginationTokens.selectItemContentLeftWidth}: 1.875rem; + ${paginationTokens.selectItemBackground}: transparent; + + ${paginationTokens.selectTargetArrowRight}: 1rem; + ${paginationTokens.selectTargetPadding}: 1.5rem 0 1.5rem; + ${paginationTokens.selectTargetInnerTop}: 0.5rem; + ${paginationTokens.selectTargetLabelInnerTop}: 0.375rem; + + ${paginationTokens.inputBorderRadius}: 0.875rem; + ${paginationTokens.inputWidth}: 4rem; + ${paginationTokens.inputHeight}: 3.5rem; + ${paginationTokens.inputPadding}: 0 0.625rem; + ${paginationTokens.inputBorderWidth}: 0.0625rem; + `, + m: css` + ${paginationTokens.paginationFontFamily}: var(--plasma-typo-body-m-font-family); + ${paginationTokens.paginationFontSize}: var(--plasma-typo-body-m-font-size); + ${paginationTokens.paginationFontStyle}: var(--plasma-typo-body-m-font-style); + ${paginationTokens.paginationFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${paginationTokens.paginationLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${paginationTokens.paginationLineHeight}: var(--plasma-typo-body-m-line-height); + + ${paginationTokens.buttonHeight}: 3rem; + ${paginationTokens.buttonWidth}: 3rem; + ${paginationTokens.buttonWidthShorter}: 2rem; + ${paginationTokens.paginationInputWidth}: 3.5rem; + ${paginationTokens.buttonRadius}: 0.75rem; + ${paginationTokens.paginationIconSize}: 1.05rem; + ${paginationTokens.paginationIconDoubleSize}: 1.3rem; + ${paginationTokens.buttonArrowMargin}: 0 -0.125rem 0 0.375rem; + + ${paginationTokens.selectHeight}: auto; + ${paginationTokens.selectPaddingTop}: 0.125rem; + ${paginationTokens.selectPaddingRight}: 0.125rem; + ${paginationTokens.selectPaddingBottom}: 0.125rem; + ${paginationTokens.selectPaddingLeft}: 0.125rem; + + ${paginationTokens.selectItemHeight}: 1.5rem; + ${paginationTokens.selectItemPadding}: 0.75rem 0.75rem 0.75rem 0.75rem; + ${paginationTokens.selectItemContentLeftWidth}: 1.75rem; + ${paginationTokens.selectItemBackground}: transparent; + + ${paginationTokens.selectTargetArrowRight}: 0.875rem; + ${paginationTokens.selectTargetPadding}: 1.25rem 0 1.25rem; + ${paginationTokens.selectTargetInnerTop}: 0.5rem; + ${paginationTokens.selectTargetLabelInnerTop}: 0.375rem; + + ${paginationTokens.inputBorderRadius}: 0.75rem; + ${paginationTokens.inputWidth}: 3.5rem; + ${paginationTokens.inputHeight}: 3rem; + ${paginationTokens.inputPadding}: 0 0.625rem; + ${paginationTokens.inputBorderWidth}: 0.0625rem; + `, + s: css` + ${paginationTokens.paginationFontFamily}: var(--plasma-typo-body-s-font-family); + ${paginationTokens.paginationFontSize}: var(--plasma-typo-body-s-font-size); + ${paginationTokens.paginationFontStyle}: var(--plasma-typo-body-s-font-style); + ${paginationTokens.paginationFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${paginationTokens.paginationLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${paginationTokens.paginationLineHeight}: var(--plasma-typo-body-s-line-height); + + ${paginationTokens.buttonHeight}: 2.5rem; + ${paginationTokens.buttonWidth}: 2.5rem; + ${paginationTokens.buttonWidthShorter}: 1.75rem; + ${paginationTokens.paginationInputWidth}: 3rem; + ${paginationTokens.buttonRadius}: 0.625rem; + ${paginationTokens.paginationIconSize}: 0.9rem; + ${paginationTokens.paginationIconDoubleSize}: 1.15rem; + ${paginationTokens.buttonArrowMargin}: 0 -0.125rem 0 0.25rem; + + ${paginationTokens.selectHeight}: auto; + ${paginationTokens.selectPaddingTop}: 0.125rem; + ${paginationTokens.selectPaddingRight}: 0.125rem; + ${paginationTokens.selectPaddingBottom}: 0.125rem; + ${paginationTokens.selectPaddingLeft}: 0.125rem; + + ${paginationTokens.selectItemHeight}: 1.5rem; + ${paginationTokens.selectItemPadding}: 0.5rem 0.75rem 0.5rem 0.75rem; + ${paginationTokens.selectItemContentLeftWidth}: 1.75rem; + ${paginationTokens.selectItemBackground}: transparent; + + ${paginationTokens.selectTargetArrowRight}: 0.75rem; + ${paginationTokens.selectTargetPadding}: 1rem 0 1rem; + ${paginationTokens.selectTargetInnerTop}: 0.5rem; + ${paginationTokens.selectTargetLabelInnerTop}: 0.375rem; + + ${paginationTokens.inputBorderRadius}: 0.625rem; + ${paginationTokens.inputWidth}: 3rem; + ${paginationTokens.inputHeight}: 2.5rem; + ${paginationTokens.inputPadding}: 0 0.625rem; + ${paginationTokens.inputBorderWidth}: 0.0625rem; + `, + xs: css` + ${paginationTokens.paginationFontFamily}: var(--plasma-typo-body-xs-font-family); + ${paginationTokens.paginationFontSize}: var(--plasma-typo-body-xs-font-size); + ${paginationTokens.paginationFontStyle}: var(--plasma-typo-body-xs-font-style); + ${paginationTokens.paginationFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${paginationTokens.paginationLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${paginationTokens.paginationLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${paginationTokens.buttonHeight}: 2rem; + ${paginationTokens.paginationInputWidth}: 2.5rem; + ${paginationTokens.buttonRadius}: 0.5rem; + ${paginationTokens.buttonWidth}: 2rem; + ${paginationTokens.buttonWidthShorter}: 1.5rem; + ${paginationTokens.paginationIconSize}: 0.75rem; + ${paginationTokens.paginationIconDoubleSize}: 1rem; + ${paginationTokens.buttonArrowMargin}: 0 -0.125rem 0 0.25rem; + + ${paginationTokens.selectHeight}: auto; + ${paginationTokens.selectPaddingTop}: 0.125rem; + ${paginationTokens.selectPaddingRight}: 0.125rem; + ${paginationTokens.selectPaddingBottom}: 0.125rem; + ${paginationTokens.selectPaddingLeft}: 0.125rem; + + ${paginationTokens.selectItemHeight}: 1rem; + ${paginationTokens.selectItemPadding}: 0.5rem 0.5rem 0.5rem 0.5rem; + ${paginationTokens.selectItemContentLeftWidth}: 1.25rem; + ${paginationTokens.selectItemBackground}: transparent; + + ${paginationTokens.selectTargetArrowRight}: 0.5rem; + ${paginationTokens.selectTargetPadding}: 0.75rem 0 0.75rem; + ${paginationTokens.selectTargetInnerTop}: 0.5rem; + ${paginationTokens.selectTargetLabelInnerTop}: 0.375rem; + + ${paginationTokens.inputBorderRadius}: 0.5rem; + ${paginationTokens.inputWidth}: 2.5rem; + ${paginationTokens.inputHeight}: 2rem; + ${paginationTokens.inputPadding}: 0 0.625rem; + ${paginationTokens.inputBorderWidth}: 0.0625rem; + `, + }, + type: { + compact: css``, + default: css``, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Pagination/Pagination.stories.tsx b/packages/plasma-giga/src/components/Pagination/Pagination.stories.tsx new file mode 100644 index 0000000000..0e164e37a0 --- /dev/null +++ b/packages/plasma-giga/src/components/Pagination/Pagination.stories.tsx @@ -0,0 +1,133 @@ +import React, { useState, useCallback } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { disableProps, InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { Button } from '../Button'; + +import { Pagination } from './Pagination'; + +const meta: Meta<typeof Pagination> = { + title: 'Navigation/Pagination', + decorators: [InSpacingDecorator], + argTypes: { + size: { + options: ['xs', 's', 'm', 'l'], + control: { + type: 'select', + }, + }, + type: { + options: ['default', 'compact'], + control: { + type: 'select', + }, + }, + view: { + options: ['clear', 'default', 'secondary'], + control: { + type: 'select', + }, + }, + slots: { + control: { + type: 'range', + min: 7, + max: 15, + }, + }, + viewCurrentPage: { + options: ['clear', 'default', 'secondary'], + control: { + type: 'select', + }, + }, + ...disableProps(['contentLeft', 'contentRight']), + }, +}; + +export default meta; + +type Story = StoryObj<typeof Pagination>; + +export const Default: Story = { + args: { + count: 2000, + value: 1, + slots: 9, + type: 'default', + view: 'clear', + viewCurrentPage: 'secondary', + size: 'xs', + hasQuickJump: true, + hasPerPage: true, + pilled: false, + square: true, + }, + render: (args) => <Pagination {...args} />, +}; + +const PaginationContent = (agrs) => { + const [pageValue, setPageValue] = useState(agrs.value); + const [perPageValue, setPerPageValue] = useState(agrs.perPage); + + const handleChangePage = useCallback( + (page: number) => { + setPageValue(page); + }, + [pageValue, setPageValue], + ); + + const handleChangePerpage = useCallback( + (perPage: number) => { + setPerPageValue(perPage); + }, + [perPageValue, setPerPageValue], + ); + + return ( + <> + <Pagination + {...agrs} + value={pageValue} + perPage={perPageValue} + leftContent={ + <Button + onClick={() => { + setPageValue(pageValue - 1); + }} + > + Prev + </Button> + } + rightContent={ + <Button + onClick={() => { + setPageValue(pageValue + 1); + }} + > + Next + </Button> + } + onChangePageValue={handleChangePage} + onChangePerPageValue={handleChangePerpage} + /> + </> + ); +}; + +export const Content: Story = { + args: { + count: 2000, + value: 1, + slots: 9, + type: 'default', + view: 'clear', + viewCurrentPage: 'secondary', + size: 'xs', + hasQuickJump: true, + hasPerPage: true, + pilled: false, + square: true, + }, + render: (args) => <PaginationContent {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Pagination/Pagination.tsx b/packages/plasma-giga/src/components/Pagination/Pagination.tsx new file mode 100644 index 0000000000..16446f4343 --- /dev/null +++ b/packages/plasma-giga/src/components/Pagination/Pagination.tsx @@ -0,0 +1,11 @@ +import { paginationConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Pagination.config'; + +const mergedConfig = mergeConfig(paginationConfig, config); +const PaginationComponent = component(mergedConfig); + +/** + * Пагинация + */ +export const Pagination = PaginationComponent; diff --git a/packages/plasma-giga/src/components/Pagination/index.ts b/packages/plasma-giga/src/components/Pagination/index.ts new file mode 100644 index 0000000000..cfb2b99d71 --- /dev/null +++ b/packages/plasma-giga/src/components/Pagination/index.ts @@ -0,0 +1,3 @@ +export { Pagination } from './Pagination'; + +export type { PaginationProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Popover/Popover.config.ts b/packages/plasma-giga/src/components/Popover/Popover.config.ts new file mode 100644 index 0000000000..c6ca29bf72 --- /dev/null +++ b/packages/plasma-giga/src/components/Popover/Popover.config.ts @@ -0,0 +1,19 @@ +import { css, popoverTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + }, + variations: { + view: { + default: css` + ${popoverTokens.arrowMaskWidth}: 1rem; + ${popoverTokens.arrowMaskHeight}: 1rem; + ${popoverTokens.arrowMaskImage}: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMCw5Ljg1bDE2LDBjLTQuNDEsMCAtOCwyLjY5IC04LDZjMCwtMy4zMSAtMy41OSwtNiAtOCwtNnoiIGZpbGw9IiMxNzE3MTciIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9IlRhaWwiLz4KPC9zdmc+"); + ${popoverTokens.arrowHeight}: 0.375rem; + ${popoverTokens.arrowEdgeMargin}: 0.5625rem; + ${popoverTokens.arrowBackground}: var(--surface-solid-tertiary); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Popover/Popover.stories.tsx b/packages/plasma-giga/src/components/Popover/Popover.stories.tsx new file mode 100644 index 0000000000..44dc9f0e55 --- /dev/null +++ b/packages/plasma-giga/src/components/Popover/Popover.stories.tsx @@ -0,0 +1,123 @@ +import React, { useState } from 'react'; +import type { ComponentProps } from 'react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import styled from 'styled-components'; +import type { StoryObj, Meta } from '@storybook/react'; + +import { Button } from '../Button/Button'; + +import { Popover } from './Popover'; + +const meta: Meta<typeof Popover> = { + title: 'Overlay/Popover', + decorators: [InSpacingDecorator], + component: Popover, + argTypes: { + placement: { + options: ['top', 'bottom', 'right', 'left', 'auto'], + control: { + type: 'select', + }, + table: { defaultValue: { summary: 'bottom' } }, + mapping: { + top: 'top', + bottom: 'bottom', + right: 'right', + left: 'left', + auto: 'auto', + }, + }, + trigger: { + options: ['click', 'hover'], + control: { + type: 'select', + }, + table: { defaultValue: { summary: 'click' } }, + }, + closeOnOverlayClick: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: true } }, + }, + closeOnEsc: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: true } }, + }, + isFocusTrapped: { + control: { + type: 'boolean', + }, + table: { defaultValue: { summary: true } }, + }, + skidding: { + control: { + type: 'number', + }, + table: { defaultValue: { summary: 0 } }, + }, + distance: { + control: { + type: 'number', + }, + table: { defaultValue: { summary: 6 } }, + }, + }, + args: { + placement: 'bottom', + trigger: 'click', + closeOnOverlayClick: true, + closeOnEsc: true, + isFocusTrapped: true, + skidding: 0, + distance: 6, + }, +}; + +export default meta; + +type StoryPopoverProps = ComponentProps<typeof Popover> & { + skidding?: number; + distance?: number; +}; + +const StyledContent = styled.div` + background: var(--surface-solid-tertiary); + padding: 1rem; + border-radius: 0.5rem; + + display: flex; + flex-direction: column; + align-items: center; +`; + +const StoryDefault = (args: StoryPopoverProps) => { + const { skidding = 0, distance = 6 } = args; + + const [isOpen, setIsOpen] = useState(false); + + return ( + <Popover + opened={isOpen} + onToggle={(is) => setIsOpen(is)} + usePortal={false} + role="presentation" + id="popover" + target={<Button>Target</Button>} + hasArrow + offset={[skidding, distance]} + {...args} + > + <StyledContent> + <>Content</> + <Button onClick={() => setIsOpen(false)}>Close</Button> + </StyledContent> + </Popover> + ); +}; + +export const Default: StoryObj<StoryPopoverProps> = { + render: (args) => <StoryDefault {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Popover/Popover.tsx b/packages/plasma-giga/src/components/Popover/Popover.tsx new file mode 100644 index 0000000000..0b1defebed --- /dev/null +++ b/packages/plasma-giga/src/components/Popover/Popover.tsx @@ -0,0 +1,7 @@ +import { popoverConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Popover.config'; + +const mergedConfig = mergeConfig(popoverConfig, config); + +export const Popover = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/Popover/index.ts b/packages/plasma-giga/src/components/Popover/index.ts new file mode 100644 index 0000000000..73210a1b70 --- /dev/null +++ b/packages/plasma-giga/src/components/Popover/index.ts @@ -0,0 +1,2 @@ +export { Popover } from './Popover'; +export type { PopoverProps, PopoverPlacement, PopoverTrigger } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Popup/Popup.stories.tsx b/packages/plasma-giga/src/components/Popup/Popup.stories.tsx new file mode 100644 index 0000000000..68fc921cb1 --- /dev/null +++ b/packages/plasma-giga/src/components/Popup/Popup.stories.tsx @@ -0,0 +1,171 @@ +import React from 'react'; +import styled from 'styled-components'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { SSRProvider } from '../SSRProvider'; +import { Button } from '../Button'; + +import { Popup, popupClasses, PopupProvider } from '.'; +import type { PopupProps } from '.'; + +const meta: Meta<PopupProps> = { + title: 'Overlay/Popup', + component: Popup, + decorators: [InSpacingDecorator], + parameters: { + docs: { story: { inline: false, iframeHeight: '30rem' } }, + }, + argTypes: { + placement: { + options: [ + 'center', + 'top', + 'bottom', + 'right', + 'left', + 'top-right', + 'top-left', + 'bottom-right', + 'bottom-left', + ], + control: { + type: 'select', + }, + }, + }, +}; + +export default meta; + +type StoryPopupProps = { placement: string; offsetX: number; offsetY: number }; + +const StyledButton = styled(Button)` + margin-top: 1rem; + width: 15rem; +`; + +const StyledWrapper = styled.div` + height: 1200px; +`; + +const OtherContent = styled.div` + margin-top: 1rem; + width: 400px; + height: 500px; + background: var(--surface-solid-tertiary); + position: absolute; + + display: flex; + align-items: flex-start; + justify-content: center; + padding: 1rem; + + top: 0; + right: 0; +`; + +const Content = styled.div` + background: var(--surface-solid-secondary); + padding: 1rem; +`; + +const StyledPopupAnimation = styled(Popup)` + && .${popupClasses.root} { + animation: fadeIn 1s forwards; + } + + &&.${popupClasses.endAnimation} .${popupClasses.root} { + animation: fadeOut 1s forwards; + } + + @keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } + } + + @keyframes fadeOut { + from { + opacity: 1; + } + + to { + opacity: 0; + } + } +`; + +const StyledPopupTransition = styled(Popup)` + && .${popupClasses.root} { + opacity: 1; + transition: opacity 0.5s 0.1s; + } + + &&.${popupClasses.endTransition} .${popupClasses.root} { + opacity: 0; + transition: opacity 0.5s 0.1s; + } +`; + +const StoryPopup = ({ placement, offsetX, offsetY }: StoryPopupProps) => { + const [isOpenA, setIsOpenA] = React.useState(false); + const [isOpenB, setIsOpenB] = React.useState(false); + + const ref = React.useRef<HTMLDivElement>(null); + + return ( + <SSRProvider> + <StyledWrapper> + <PopupProvider> + <div style={{ display: 'flex', flexDirection: 'column' }}> + <StyledButton text="Открыть в document" onClick={() => setIsOpenB(true)} /> + <StyledButton text="Открыть во Frame" onClick={() => setIsOpenA(true)} /> + </div> + <StyledPopupAnimation + id="popupA" + withAnimation + frame={ref} + opened={isOpenA} + placement={placement} + offset={[offsetX, offsetY]} + > + <Content> + <Button onClick={() => setIsOpenA(false)}>Close</Button> + <>Content</> + </Content> + </StyledPopupAnimation> + <OtherContent ref={ref}> + <>Frame</> + </OtherContent> + <StyledPopupTransition + id="popupB" + withAnimation + frame="document" + opened={isOpenB} + placement={placement} + offset={[offsetX, offsetY]} + > + <Content> + <Button onClick={() => setIsOpenB(false)}>Close</Button> + <>Content</> + </Content> + </StyledPopupTransition> + </PopupProvider> + </StyledWrapper> + </SSRProvider> + ); +}; + +export const PopupDemo: StoryObj<StoryPopupProps> = { + args: { + placement: 'center', + offsetX: 0, + offsetY: 0, + }, + render: (args) => <StoryPopup {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Popup/Popup.tsx b/packages/plasma-giga/src/components/Popup/Popup.tsx new file mode 100644 index 0000000000..30057b6732 --- /dev/null +++ b/packages/plasma-giga/src/components/Popup/Popup.tsx @@ -0,0 +1,11 @@ +import { popupConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; +import type { ForwardRefExoticComponent, RefAttributes } from 'react'; + +import { PopupProps } from '.'; + +const mergedConfig = mergeConfig(popupConfig); + +/** + * Базовый компонент Popup. + */ +export const Popup = component(mergedConfig) as ForwardRefExoticComponent<PopupProps & RefAttributes<HTMLDivElement>>; diff --git a/packages/plasma-giga/src/components/Popup/index.ts b/packages/plasma-giga/src/components/Popup/index.ts new file mode 100644 index 0000000000..885f05962e --- /dev/null +++ b/packages/plasma-giga/src/components/Popup/index.ts @@ -0,0 +1,5 @@ +export { usePopupContext, PopupProvider, popupClasses } from '@salutejs/plasma-new-hope/styled-components'; + +export { Popup } from './Popup'; + +export type { PopupPlacement, PopupInfo, PopupProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Portal/Portal.stories.tsx b/packages/plasma-giga/src/components/Portal/Portal.stories.tsx new file mode 100644 index 0000000000..b3ece2f627 --- /dev/null +++ b/packages/plasma-giga/src/components/Portal/Portal.stories.tsx @@ -0,0 +1,57 @@ +import React, { useState, useRef } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import type { ComponentProps } from 'react'; +import styled from 'styled-components'; + +import { Button } from '../Button/Button'; +import { BodyM } from '../Typography'; + +import { Portal } from '.'; + +const meta: Meta<typeof Portal> = { + title: 'Data Entry/Portal', + decorators: [InSpacingDecorator], + args: { + disabled: false, + }, +}; + +export default meta; + +type StoryPortalProps = ComponentProps<typeof Portal>; + +const StyledWrapper = styled.div` + padding: 1.25rem; + margin-bottom: 0.625rem; + margin-top: 0.625rem; + + border: 1px solid; +`; + +const StoryDefault = ({ disabled }: StoryPortalProps) => { + const [show, setShow] = useState(false); + const containerRef = useRef<HTMLDivElement>(null); + + return ( + <> + <Button onClick={() => setShow(!show)}>{show ? 'Скрыть' : 'Показать'}</Button> + <StyledWrapper> + <BodyM style={{ marginBottom: '1.25rem' }}>Содержимое портала появится в нижнем блоке.</BodyM> + <BodyM style={{ marginBottom: '1.25rem' }}> + Если портал выключен (disabled), то содержимое появится в данном блоке. + </BodyM> + {show && containerRef.current && ( + <Portal disabled={disabled} container={containerRef.current}> + <BodyM bold>Содержимое портала</BodyM> + </Portal> + )} + </StyledWrapper> + <StyledWrapper ref={containerRef} /> + </> + ); +}; + +export const Default: StoryObj<StoryPortalProps> = { + render: (args) => <StoryDefault {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Portal/index.ts b/packages/plasma-giga/src/components/Portal/index.ts new file mode 100644 index 0000000000..2818aae9fc --- /dev/null +++ b/packages/plasma-giga/src/components/Portal/index.ts @@ -0,0 +1,3 @@ +export { Portal } from '@salutejs/plasma-new-hope/styled-components'; + +export type { PortalProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Price/Price.config.ts b/packages/plasma-giga/src/components/Price/Price.config.ts new file mode 100644 index 0000000000..5351ba7197 --- /dev/null +++ b/packages/plasma-giga/src/components/Price/Price.config.ts @@ -0,0 +1,8 @@ +export const config = { + defaults: { + view: 'default', + }, + variations: { + view: {}, + }, +}; diff --git a/packages/plasma-giga/src/components/Price/Price.stories.tsx b/packages/plasma-giga/src/components/Price/Price.stories.tsx new file mode 100644 index 0000000000..6d2fafb077 --- /dev/null +++ b/packages/plasma-giga/src/components/Price/Price.stories.tsx @@ -0,0 +1,34 @@ +import React, { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { disableProps, InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { Price } from '.'; + +const meta: Meta<typeof Price> = { + title: 'Data Display/Price', + decorators: [InSpacingDecorator], + argTypes: { + currency: { + options: ['rub', 'usd', 'eur', 'inr'], + control: { + type: 'inline-radio', + }, + }, + ...disableProps(['children', 'theme', 'as', 'forwardedAs']), + }, +}; + +export default meta; + +type StoryPriceProps = ComponentProps<typeof Price> & { priceLabel: number }; + +export const Default: StoryObj<StoryPriceProps> = { + args: { + locale: 'ru', + currency: 'rub', + stroked: false, + minimumFractionDigits: 0, + priceLabel: 12345.67, + }, + render: ({ priceLabel, ...rest }) => <Price {...rest}>{priceLabel}</Price>, +}; diff --git a/packages/plasma-giga/src/components/Price/Price.ts b/packages/plasma-giga/src/components/Price/Price.ts new file mode 100644 index 0000000000..ab9be36c78 --- /dev/null +++ b/packages/plasma-giga/src/components/Price/Price.ts @@ -0,0 +1,11 @@ +import { priceConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Price.config'; + +const mergedConfig = mergeConfig(priceConfig, config); +const PriceComponent = component(mergedConfig); + +/** + * Компонент для отображения цены / стоимости / суммы. + */ +export const Price = PriceComponent; diff --git a/packages/plasma-giga/src/components/Price/index.ts b/packages/plasma-giga/src/components/Price/index.ts new file mode 100644 index 0000000000..2288a8714a --- /dev/null +++ b/packages/plasma-giga/src/components/Price/index.ts @@ -0,0 +1,2 @@ +export { Price } from './Price'; +export { priceClasses } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Progress/Progress.config.ts b/packages/plasma-giga/src/components/Progress/Progress.config.ts new file mode 100644 index 0000000000..a103dc3280 --- /dev/null +++ b/packages/plasma-giga/src/components/Progress/Progress.config.ts @@ -0,0 +1,58 @@ +import { css, progressTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + view: { + default: css` + ${progressTokens.trackBackgroundColor}: var(--surface-transparent-secondary); + ${progressTokens.progressFilledBackgroundColor}: var(--surface-solid-default); + ${progressTokens.valueColor}: var(--text-tertiary); + `, + secondary: css` + ${progressTokens.trackBackgroundColor}: var(--surface-transparent-secondary); + ${progressTokens.progressFilledBackgroundColor}: var(--surface-solid-tertiary); + ${progressTokens.valueColor}: var(--text-tertiary); + `, + primary: css` + ${progressTokens.trackBackgroundColor}: var(--surface-transparent-secondary); + ${progressTokens.progressFilledBackgroundColor}: var(--surface-accent); + ${progressTokens.valueColor}: var(--text-tertiary); + `, + accent: css` + ${progressTokens.trackBackgroundColor}: var(--surface-transparent-secondary); + ${progressTokens.progressFilledBackgroundColor}: var(--surface-accent-gradient); + ${progressTokens.valueColor}: var(--text-tertiary); + `, + success: css` + ${progressTokens.trackBackgroundColor}: var(--surface-transparent-secondary); + ${progressTokens.progressFilledBackgroundColor}: var(--surface-positive); + ${progressTokens.valueColor}: var(--text-tertiary); + `, + warning: css` + ${progressTokens.trackBackgroundColor}: var(--surface-transparent-secondary); + ${progressTokens.progressFilledBackgroundColor}: var(--surface-warning); + ${progressTokens.valueColor}: var(--text-tertiary); + `, + error: css` + ${progressTokens.trackBackgroundColor}: var(--surface-transparent-secondary); + ${progressTokens.progressFilledBackgroundColor}: var(--surface-negative); + ${progressTokens.valueColor}: var(--text-tertiary); + `, + }, + size: { + m: css` + ${progressTokens.trackHeight}: 0.25rem; + ${progressTokens.trackBorderRadius}: 0.125rem; + + ${progressTokens.progressFilledHeight}: 0.375rem; + ${progressTokens.progressFilledBorderRadius}: 0.375rem; + + ${progressTokens.valueMarginLeft}: 0.5rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Progress/Progress.stories.tsx b/packages/plasma-giga/src/components/Progress/Progress.stories.tsx new file mode 100644 index 0000000000..aa57e9bb05 --- /dev/null +++ b/packages/plasma-giga/src/components/Progress/Progress.stories.tsx @@ -0,0 +1,32 @@ +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; + +import { Progress } from '.'; +import type { ProgressProps } from '.'; + +const views = ['default', 'secondary', 'primary', 'accent', 'success', 'warning', 'error']; + +const meta: Meta<typeof Progress> = { + title: 'Overlay/Progress', + component: Progress, + decorators: [InSpacingDecorator], + argTypes: { + view: { + options: views, + control: { + type: 'select', + }, + }, + ...disableProps(['status']), + }, +}; + +export default meta; + +export const Default: StoryObj<ProgressProps> = { + args: { + value: 25, + view: 'default', + displayValue: true, + }, +}; diff --git a/packages/plasma-giga/src/components/Progress/Progress.ts b/packages/plasma-giga/src/components/Progress/Progress.ts new file mode 100644 index 0000000000..fcf85ca3a0 --- /dev/null +++ b/packages/plasma-giga/src/components/Progress/Progress.ts @@ -0,0 +1,8 @@ +import { progressConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Progress.config'; + +const mergedConfig = mergeConfig(progressConfig, config); +const ProgressComponent = component(mergedConfig); + +export const Progress = ProgressComponent; diff --git a/packages/plasma-giga/src/components/Progress/index.ts b/packages/plasma-giga/src/components/Progress/index.ts new file mode 100644 index 0000000000..0111c96198 --- /dev/null +++ b/packages/plasma-giga/src/components/Progress/index.ts @@ -0,0 +1,3 @@ +export { Progress } from './Progress'; + +export type { ProgressProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Radiobox/Radiobox.config.ts b/packages/plasma-giga/src/components/Radiobox/Radiobox.config.ts new file mode 100644 index 0000000000..59b4d2fcc0 --- /dev/null +++ b/packages/plasma-giga/src/components/Radiobox/Radiobox.config.ts @@ -0,0 +1,131 @@ +import { css, radioboxTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'accent', + size: 'm', + focused: 'true', + }, + variations: { + /** + * Размер контрола. + */ + size: { + s: css` + ${radioboxTokens.margin}: 0; + ${radioboxTokens.triggerMargin}: 0; + ${radioboxTokens.triggerSize}: 1rem; + ${radioboxTokens.triggerBorderRadius}: 1.125rem; + ${radioboxTokens.ellipseSize}: 0.5rem; + ${radioboxTokens.contentTopOffset}: 0; + ${radioboxTokens.contentLeftOffset}: 0.5rem; + ${radioboxTokens.descriptionMarginTop}: 0.125rem; + ${radioboxTokens.labelFontFamily}: var(--plasma-typo-body-s-font-family); + ${radioboxTokens.labelFontSize}: var(--plasma-typo-body-s-font-size); + ${radioboxTokens.labelFontStyle}: var(--plasma-typo-body-s-font-style); + ${radioboxTokens.labelFontWeight}: var(--plasma-typo-body-s-font-weight); + ${radioboxTokens.labelLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${radioboxTokens.labelLineHeight}: var(--plasma-typo-body-s-line-height); + ${radioboxTokens.descriptionFontFamily}: var(--plasma-typo-body-xs-font-family); + ${radioboxTokens.descriptionFontSize}: var(--plasma-typo-body-xs-font-size); + ${radioboxTokens.descriptionFontStyle}: var(--plasma-typo-body-xs-font-style); + ${radioboxTokens.descriptionFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${radioboxTokens.descriptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${radioboxTokens.descriptionLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + m: css` + ${radioboxTokens.margin}: 0; + ${radioboxTokens.triggerMargin}: 0.063rem 0; + ${radioboxTokens.triggerSize}: 1.375rem; + ${radioboxTokens.triggerBorderRadius}: 1.125rem; + ${radioboxTokens.ellipseSize}: 0.625rem; + ${radioboxTokens.contentTopOffset}: 0.125rem; + ${radioboxTokens.contentLeftOffset}: 0.625rem; + ${radioboxTokens.descriptionMarginTop}: 0.125rem; + ${radioboxTokens.labelFontFamily}: var(--plasma-typo-body-m-font-family); + ${radioboxTokens.labelFontSize}: var(--plasma-typo-body-m-font-size); + ${radioboxTokens.labelFontStyle}: var(--plasma-typo-body-m-font-style); + ${radioboxTokens.labelFontWeight}: var(--plasma-typo-body-m-font-weight); + ${radioboxTokens.labelLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${radioboxTokens.labelLineHeight}: var(--plasma-typo-body-m-line-height); + ${radioboxTokens.descriptionFontFamily}: var(--plasma-typo-body-s-font-family); + ${radioboxTokens.descriptionFontSize}: var(--plasma-typo-body-s-font-size); + ${radioboxTokens.descriptionFontStyle}: var(--plasma-typo-body-s-font-style); + ${radioboxTokens.descriptionFontWeight}: var(--plasma-typo-body-s-font-weight); + ${radioboxTokens.descriptionLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${radioboxTokens.descriptionLineHeight}: var(--plasma-typo-body-s-line-height); + `, + }, + /** + * Вид контрола. + */ + view: { + default: css` + ${radioboxTokens.fillColor}: var(--text-primary); + ${radioboxTokens.ellipseColor}: var(--inverse-text-primary); + ${radioboxTokens.descriptionColor}: var(--text-secondary); + ${radioboxTokens.triggerBackgroundColor}: transparent; + ${radioboxTokens.triggerBorderColor}: var(--text-secondary); + `, + secondary: css` + ${radioboxTokens.fillColor}: var(--text-secondary); + ${radioboxTokens.ellipseColor}: var(--inverse-text-primary); + ${radioboxTokens.descriptionColor}: var(--text-secondary); + ${radioboxTokens.triggerBackgroundColor}: transparent; + ${radioboxTokens.triggerBorderColor}: var(--text-secondary); + `, + tertiary: css` + ${radioboxTokens.fillColor}: var(--text-tertiary); + ${radioboxTokens.ellipseColor}: var(--inverse-text-primary); + ${radioboxTokens.descriptionColor}: var(--text-secondary); + ${radioboxTokens.triggerBackgroundColor}: transparent; + ${radioboxTokens.triggerBorderColor}: var(--text-secondary); + `, + paragraph: css` + ${radioboxTokens.fillColor}: var(--text-paragraph); + ${radioboxTokens.ellipseColor}: var(--inverse-text-primary); + ${radioboxTokens.descriptionColor}: var(--text-secondary); + ${radioboxTokens.triggerBackgroundColor}: transparent; + ${radioboxTokens.triggerBorderColor}: var(--text-secondary); + `, + accent: css` + ${radioboxTokens.fillColor}: var(--text-accent); + ${radioboxTokens.ellipseColor}: var(--on-dark-text-primary); + ${radioboxTokens.descriptionColor}: var(--text-secondary); + ${radioboxTokens.triggerBackgroundColor}: transparent; + ${radioboxTokens.triggerBorderColor}: var(--text-secondary); + `, + positive: css` + ${radioboxTokens.fillColor}: var(--text-positive); + ${radioboxTokens.ellipseColor}: var(--on-dark-text-primary); + ${radioboxTokens.descriptionColor}: var(--text-secondary); + ${radioboxTokens.triggerBackgroundColor}: transparent; + ${radioboxTokens.triggerBorderColor}: var(--text-secondary); + `, + warning: css` + ${radioboxTokens.fillColor}: var(--text-warning); + ${radioboxTokens.ellipseColor}: var(--on-dark-text-primary); + ${radioboxTokens.descriptionColor}: var(--text-secondary); + ${radioboxTokens.triggerBackgroundColor}: transparent; + ${radioboxTokens.triggerBorderColor}: var(--text-secondary); + `, + negative: css` + ${radioboxTokens.fillColor}: var(--text-negative); + ${radioboxTokens.ellipseColor}: var(--on-dark-text-primary); + ${radioboxTokens.descriptionColor}: var(--text-secondary); + ${radioboxTokens.triggerBackgroundColor}: transparent; + ${radioboxTokens.triggerBorderColor}: var(--text-secondary); + `, + }, + disabled: { + true: css` + ${radioboxTokens.disabledOpacity}: 0.4; + `, + }, + focused: { + true: css` + ${radioboxTokens.focusColor}: var(--text-accent); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Radiobox/Radiobox.stories.tsx b/packages/plasma-giga/src/components/Radiobox/Radiobox.stories.tsx new file mode 100644 index 0000000000..9ee41ec3a0 --- /dev/null +++ b/packages/plasma-giga/src/components/Radiobox/Radiobox.stories.tsx @@ -0,0 +1,138 @@ +import React, { useState } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { Radiobox, RadioboxProps } from '.'; + +const onChange = action('onChange'); +const onFocus = action('onFocus'); +const onBlur = action('onBlur'); + +const sizes = ['m', 's']; +const views = ['default', 'secondary', 'tertiary', 'paragraph', 'accent', 'positive', 'warning', 'negative']; + +const meta: Meta<RadioboxProps> = { + title: 'Data Entry/Radiobox', + component: Radiobox, + decorators: [InSpacingDecorator], + argTypes: { + size: { + options: sizes, + control: { + type: 'inline-radio', + }, + }, + view: { + options: views, + control: { + type: 'select', + }, + }, + }, +}; + +export default meta; + +type Story = StoryObj<RadioboxProps>; + +const cDescription = ( + <div> + A general-purpose, procedural computer programming{' '} + <a href="https://en.wikipedia.org/wiki/C_(programming_language)">language</a>{' '} + </div> +); + +const langName = 'language'; + +const items = [ + { + langName, + value: 'c', + label: 'C', + disabled: false, + description: cDescription, + }, + { langName, value: 'cpp', label: 'C++', disabled: false }, + { langName, value: 'assembly', label: 'Assembly', disabled: false }, + { langName, value: 'elixir', label: 'Elixir', disabled: true }, +]; + +const StoryDefault = ({ name, label, description, disabled, singleLine, size, view }: RadioboxProps) => { + const value = 0; + const [checked, setChecked] = React.useState(true); + + return ( + <Radiobox + name={name} + value={value} + label={label} + description={description} + disabled={disabled} + checked={checked} + singleLine={singleLine} + size={size} + view={view} + onChange={(event) => { + event.persist(); + + setChecked(event.target.checked); + onChange(event); + }} + onFocus={onFocus} + onBlur={onBlur} + /> + ); +}; + +export const Default: Story = { + args: { + name: 'Radiobox', + label: 'Label', + description: 'Description', + disabled: false, + singleLine: false, + size: 'm', + view: 'accent', + }, + render: (args) => <StoryDefault {...args} />, +}; + +const StoryLive = (props: RadioboxProps) => { + const [value, setValue] = useState('c'); + + return ( + <> + {items.map((item) => ( + <Radiobox + key={item.value} + name={item.langName} + value={item.value} + label={item.label} + disabled={item.disabled} + checked={value[item.value]} + description={item.description} + onChange={(event) => { + event.persist(); + + setValue(item.value); + onChange(event); + }} + onFocus={onFocus} + onBlur={onBlur} + {...props} + /> + ))} + </> + ); +}; + +export const Live: Story = { + args: { + size: 'm', + view: 'accent', + singleLine: false, + focused: true, + }, + render: (args) => <StoryLive {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Radiobox/Radiobox.ts b/packages/plasma-giga/src/components/Radiobox/Radiobox.ts new file mode 100644 index 0000000000..ff3de195e0 --- /dev/null +++ b/packages/plasma-giga/src/components/Radiobox/Radiobox.ts @@ -0,0 +1,15 @@ +import { radioboxConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; +import { ComponentProps } from 'react'; + +import { config } from './Radiobox.config'; + +const mergedConfig = mergeConfig(radioboxConfig, config); +const RadioboxComponent = component(mergedConfig); + +export type RadioboxProps = ComponentProps<typeof RadioboxComponent>; +/** + * Переключатель, или *радиокнопка*. + */ +export const Radiobox = RadioboxComponent; + +export { RadioGroup } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Radiobox/index.ts b/packages/plasma-giga/src/components/Radiobox/index.ts new file mode 100644 index 0000000000..43ce06a8f4 --- /dev/null +++ b/packages/plasma-giga/src/components/Radiobox/index.ts @@ -0,0 +1,2 @@ +export { Radiobox, RadioGroup } from './Radiobox'; +export type { RadioboxProps } from './Radiobox'; diff --git a/packages/plasma-giga/src/components/Range/Range.config.ts b/packages/plasma-giga/src/components/Range/Range.config.ts new file mode 100644 index 0000000000..f11cb3779a --- /dev/null +++ b/packages/plasma-giga/src/components/Range/Range.config.ts @@ -0,0 +1,270 @@ +import { css, rangeTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'l', + }, + variations: { + view: { + default: css` + ${tokens.background}: var(--surface-transparent-primary); + ${tokens.backgroundError}: var(--surface-transparent-negative); + ${tokens.backgroundSuccess}: var(--surface-transparent-positive); + + ${tokens.dividerColor}: var(--text-primary); + ${tokens.labelColor}: var(--text-primary); + ${tokens.leftHelperColor}: var(--text-secondary); + + ${tokens.textFieldColor}: var(--text-primary); + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + ${tokens.textFieldCaretColor}: var(--text-accent); + + ${tokens.indicatorColor}: var(--surface-negative); + + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-secondary); + ${tokens.textFieldBackgroundErrorColor}: var(--surface-transparent-negative); + ${tokens.textFieldBackgroundErrorColorFocus}: var(--surface-transparent-negative-active); + ${tokens.textFieldBackgroundSuccessColor}: var(--surface-transparent-positive); + ${tokens.textFieldBackgroundSuccessColorFocus}: var(--surface-transparent-positive-active); + + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + + ${tokens.focusColor}: var(--text-accent); + `, + }, + size: { + l: css` + ${tokens.borderRadius}: 0.875rem; + + ${tokens.dividerPadding}: 0 0.375rem; + ${tokens.dividerFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.dividerFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.dividerFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.dividerFontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${tokens.dividerLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.dividerLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.leftContentMargin}: 0 0 0 1rem; + ${tokens.rightContentMargin}: 0; + + ${tokens.labelOffset}: 0.75rem; + + ${tokens.labelFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.labelFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.labelFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.labelFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.indicatorSize}: 0.5rem; + ${tokens.indicatorSizeOuter}: 0.375rem; + ${tokens.indicatorPlacement}: 0 0 0 0; + ${tokens.indicatorOuterPlacement}: 0.5rem auto auto -0.75rem; + ${tokens.indicatorPlacementRight}: 0 0 auto auto; + ${tokens.indicatorOuterPlacementRight}: 0.25rem -0.625rem auto auto; + + ${tokens.textFieldHeight}: 3.5rem; + ${tokens.textFieldBorderRadius}: 0.875rem; + ${tokens.textFieldPadding}: 1.0625rem 1.125rem 1.0625rem 1.125rem; + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.leftHelperOffset}: 0.25rem 0 0 0; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLeftContentMargin}: -0.0625rem 0.5rem -0.0625rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + `, + m: css` + ${tokens.borderRadius}: 0.75rem; + + ${tokens.dividerPadding}: 0 0.375rem; + ${tokens.dividerFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.dividerFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.dividerFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.dividerFontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${tokens.dividerLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.dividerLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.leftContentMargin}: 0 0 0 0.875rem; + ${tokens.rightContentMargin}: 0; + + ${tokens.labelOffset}: 0.625rem; + + ${tokens.labelFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.labelFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.labelFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.labelFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.indicatorSize}: 0.5rem; + ${tokens.indicatorSizeOuter}: 0.375rem; + ${tokens.indicatorPlacement}: 0 0 0 0; + ${tokens.indicatorOuterPlacement}: 0.375rem auto auto -0.75rem; + ${tokens.indicatorPlacementRight}: 0 0 auto auto; + ${tokens.indicatorOuterPlacementRight}: 0.25rem -0.6875rem auto auto; + + ${tokens.textFieldHeight}: 3rem; + ${tokens.textFieldBorderRadius}: 0.75rem; + ${tokens.textFieldPadding}: 0.875rem 1rem 0.875rem 1rem; + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.leftHelperOffset}: 0.25rem 0 0 0; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLeftContentMargin}: -0.125rem 0.375rem -0.125rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.125rem -0.125rem -0.125rem 0.75rem; + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + `, + s: css` + ${tokens.borderRadius}: 0.625rem; + + ${tokens.dividerPadding}: 0 0.375rem; + ${tokens.dividerFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.dividerFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.dividerFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.dividerFontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${tokens.dividerLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.dividerLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.leftContentMargin}: 0 0 0 0.75rem; + ${tokens.rightContentMargin}: 0; + + ${tokens.labelOffset}: 0.5rem; + + ${tokens.labelFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.labelFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.labelFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.labelFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.indicatorSize}: 0.375rem; + ${tokens.indicatorSizeOuter}: 0.375rem; + ${tokens.indicatorPlacement}: 0 0 0 0; + ${tokens.indicatorOuterPlacement}: 0.3125rem auto auto -0.6875rem; + ${tokens.indicatorPlacementRight}: 0 0 auto auto; + ${tokens.indicatorOuterPlacementRight}: 0.25rem -0.625rem auto auto; + + ${tokens.textFieldHeight}: 2.5rem; + ${tokens.textFieldBorderRadius}: 0.625rem; + ${tokens.textFieldPadding}: 0.6875rem 0.875rem 0.6875rem 0.875rem; + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.leftHelperOffset}: 0.25rem 0 0 0; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLeftContentMargin}: -0.1875rem 0.25rem -0.1875rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.1875rem -0.125rem -0.1875rem 0.75rem; + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + `, + xs: css` + ${tokens.borderRadius}: 0.5rem; + + ${tokens.dividerPadding}: 0 0.375rem; + ${tokens.dividerFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.dividerFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.dividerFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.dividerFontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${tokens.dividerLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.dividerLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.leftContentMargin}: 0 0 0 0.5rem; + ${tokens.rightContentMargin}: 0; + + ${tokens.labelOffset}: 0.375rem; + + ${tokens.labelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.labelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.labelFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.labelFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.indicatorSize}: 0.375rem; + ${tokens.indicatorSizeOuter}: 0.375rem; + ${tokens.indicatorPlacement}: 0 0 0 0; + ${tokens.indicatorOuterPlacement}: 0.25rem auto auto -0.625rem; + ${tokens.indicatorPlacementRight}: 0 0 auto auto; + ${tokens.indicatorOuterPlacementRight}: 0.125rem -0.6875rem auto auto; + + ${tokens.textFieldHeight}: 2rem; + ${tokens.textFieldBorderRadius}: 0.5rem; + ${tokens.textFieldPadding}: 0.5625rem 0.625rem 0.5625rem 0.625rem; + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.leftHelperOffset}: 0.25rem 0 0 0; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLeftContentMargin}: -0.0625rem 0.25rem -0.0625rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + `, + }, + disabled: { + true: css` + ${tokens.disabledOpacity}: 0.4; + `, + }, + readOnly: { + true: css` + ${tokens.backgroundReadOnly}: var(--surface-transparent-primary); + ${tokens.labelColorReadOnly}: var(--text-secondary); + ${tokens.leftHelperColorReadOnly}: var(--text-secondary); + ${tokens.dividerColorReadOnly}: var(--text-secondary); + + ${tokens.textFieldColorReadOnly}: var(--text-secondary); + ${tokens.textFieldBackgroundColorReadOnly}: transparent; + ${tokens.textFieldPlaceholderColorReadOnly}: var(--text-secondary); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Range/Range.stories.tsx b/packages/plasma-giga/src/components/Range/Range.stories.tsx new file mode 100644 index 0000000000..11dfd44085 --- /dev/null +++ b/packages/plasma-giga/src/components/Range/Range.stories.tsx @@ -0,0 +1,327 @@ +import React, { ChangeEvent, ComponentProps, Dispatch, SetStateAction, useState } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import { IconSearch, IconSber, IconArrowRight } from '@salutejs/plasma-icons'; + +import { IconButton } from '../IconButton'; + +import { Range } from './Range'; + +const onChangeFirstValue = action('onChangeFirstValue'); +const onChangeSecondValue = action('onChangeSecondValue'); +const onSearchFirstValue = action('onSearchFirstValue'); +const onSearchSecondValue = action('onSearchSecondValue'); +const onFocusFirstTextfield = action('onFocusFirstTextfield'); +const onFocusSecondTextfield = action('onFocusSecondTextfield'); +const onBlurFirstTextfield = action('onBlurFirstTextfield'); +const onBlurSecondTextfield = action('onBlurSecondTextfield'); + +const sizes = ['l', 'm', 's', 'xs']; +const views = ['default']; +const dividers = ['none', 'dash', 'icon']; +const requiredPlacements = ['left', 'right']; + +const meta: Meta<typeof Range> = { + title: 'Data Entry/Range', + component: Range, + decorators: [InSpacingDecorator], + argTypes: { + view: { + options: views, + control: { + type: 'inline-radio', + }, + }, + size: { + options: sizes, + control: { + type: 'inline-radio', + }, + }, + requiredPlacement: { + options: requiredPlacements, + control: { + type: 'select', + }, + if: { arg: 'required', truthy: true }, + }, + }, +}; + +export default meta; + +type StoryPropsDefault = ComponentProps<typeof Range> & { + enableContentLeft: boolean; + enableContentRight: boolean; + enableFirstTextfieldContentLeft: boolean; + enableSecondTextfieldContentLeft: boolean; + enableFirstTextfieldContentRight: boolean; + enableSecondTextfieldContentRight: boolean; +}; + +const getSizeForIcon = (size) => { + const map = { + m: 's', + l: 's', + s: 's', + xs: 'xs', + }; + if (map[size]) { + return map[size]; + } + + return size; +}; + +const ActionButton = ({ size }) => { + return ( + <IconButton style={{ color: 'inherit' }} view="clear" size={size}> + <IconSearch color="inherit" size={getSizeForIcon(size)} /> + </IconButton> + ); +}; + +const StoryDefault = ({ + dividerVariant, + enableContentLeft, + enableContentRight, + firstTextfieldTextBefore, + secondTextfieldTextBefore, + enableFirstTextfieldContentLeft, + enableSecondTextfieldContentLeft, + enableFirstTextfieldContentRight, + enableSecondTextfieldContentRight, + size, + ...rest +}: StoryPropsDefault) => { + const [firstValue, setFirstValue] = useState(''); + const [secondValue, setSecondValue] = useState(''); + + const iconSize = size === 'xs' ? 'xs' : 's'; + const showDividerIcon = dividerVariant === 'icon'; + const showDefaultTextBefore = dividerVariant === 'none'; + + const dividerIconProps = { + dividerIcon: showDividerIcon ? <IconArrowRight size={iconSize} /> : null, + dividerVariant, + }; + + return ( + <Range + size={size} + firstValue={firstValue} + secondValue={secondValue} + contentLeft={enableContentLeft ? <IconSber color="inherit" size={iconSize} /> : undefined} + contentRight={enableContentRight ? <ActionButton size={size} /> : undefined} + firstTextfieldContentLeft={ + enableFirstTextfieldContentLeft ? <IconSber color="inherit" size={iconSize} /> : undefined + } + firstTextfieldContentRight={ + enableFirstTextfieldContentRight ? <IconSber color="inherit" size={iconSize} /> : undefined + } + secondTextfieldContentLeft={ + enableSecondTextfieldContentLeft ? <IconSber color="inherit" size={iconSize} /> : undefined + } + secondTextfieldContentRight={ + enableSecondTextfieldContentRight ? <IconSber color="inherit" size={iconSize} /> : undefined + } + firstTextfieldTextBefore={ + showDefaultTextBefore ? firstTextfieldTextBefore || 'С' : firstTextfieldTextBefore + } + secondTextfieldTextBefore={ + showDefaultTextBefore ? secondTextfieldTextBefore || 'ПО' : secondTextfieldTextBefore + } + onChangeFirstValue={(e) => { + setFirstValue(e.target.value); + onChangeFirstValue(e, e.target.value); + }} + onChangeSecondValue={(e) => { + setSecondValue(e.target.value); + onChangeSecondValue(e, e.target.value); + }} + onSearchFirstValue={onSearchFirstValue} + onSearchSecondValue={onSearchSecondValue} + onFocusFirstTextfield={onFocusFirstTextfield} + onFocusSecondTextfield={onFocusSecondTextfield} + onBlurFirstTextfield={onBlurFirstTextfield} + onBlurSecondTextfield={onBlurSecondTextfield} + {...dividerIconProps} + {...rest} + /> + ); +}; + +export const Default: StoryObj<StoryPropsDefault> = { + argTypes: { + dividerVariant: { + options: dividers, + control: { + type: 'inline-radio', + }, + }, + }, + args: { + label: 'Лейбл', + leftHelper: 'Подсказка к полю', + firstPlaceholder: 'Заполните поле 1', + secondPlaceholder: 'Заполните поле 2', + size: 'l', + view: 'default', + required: false, + requiredPlacement: 'right', + disabled: false, + readOnly: false, + firstTextfieldTextBefore: 'С', + secondTextfieldTextBefore: 'ПО', + enableContentLeft: true, + enableContentRight: true, + dividerVariant: 'dash', + enableFirstTextfieldContentLeft: false, + enableFirstTextfieldContentRight: false, + enableSecondTextfieldContentLeft: false, + enableSecondTextfieldContentRight: false, + firstValueError: false, + secondValueError: false, + firstValueSuccess: false, + secondValueSuccess: false, + }, + render: (args) => <StoryDefault {...args} />, +}; + +const StoryDemo = ({ enableContentLeft, enableContentRight, size, ...rest }: StoryPropsDefault) => { + const [firstValue, setFirstValue] = useState(''); + const [secondValue, setSecondValue] = useState(''); + + const [firstValueError, setFirstValueError] = useState(false); + const [secondValueError, setSecondValueError] = useState(false); + + const [firstValueSuccess, setFirstValueSuccess] = useState(false); + const [secondValueSuccess, setSecondValueSuccess] = useState(false); + + const checkValue = (value: string) => /^([1-9][0-9]*|)$/.test(value); + + const handleChangeValue = ( + e: ChangeEvent<HTMLInputElement>, + setter: Dispatch<SetStateAction<string>>, + error: boolean, + errorSetter: Dispatch<SetStateAction<boolean>>, + success: boolean, + successSetter: Dispatch<SetStateAction<boolean>>, + ) => { + const { value } = e.target; + if (!checkValue(value)) { + return; + } + + if (error) { + errorSetter(false); + } + + if (success) { + successSetter(false); + } + + setter(value); + }; + + const firstValueConstraint = (currentValue: number) => + currentValue <= 0 || + currentValue >= 9 || + Boolean(secondValue && currentValue >= Number(secondValue) && !secondValueError); + const secondValueConstraint = (currentValue: number) => + currentValue <= 0 || + currentValue > 10 || + Boolean(firstValue && currentValue <= Number(firstValue) && !firstValueError); + + const handleCommitValue = ( + value: string, + constraint: (currentValue: number) => boolean, + errorSetter: Dispatch<SetStateAction<boolean>>, + successSetter: Dispatch<SetStateAction<boolean>>, + ) => { + if (!value) { + return; + } + + if (!checkValue(value)) { + return errorSetter(true); + } + + if (constraint(Number(value))) { + return errorSetter(true); + } + + successSetter(true); + }; + + const iconSize = size === 'xs' ? 'xs' : 's'; + + return ( + <Range + dividerVariant="dash" + size={size} + firstValue={firstValue} + secondValue={secondValue} + firstValueError={firstValueError} + secondValueError={secondValueError} + firstValueSuccess={firstValueSuccess} + secondValueSuccess={secondValueSuccess} + contentLeft={enableContentLeft ? <IconSber color="inherit" size={iconSize} /> : undefined} + contentRight={enableContentRight ? <ActionButton size={size} /> : undefined} + onChangeFirstValue={(e) => { + handleChangeValue( + e, + setFirstValue, + firstValueError, + setFirstValueError, + firstValueSuccess, + setFirstValueSuccess, + ); + }} + onChangeSecondValue={(e) => { + handleChangeValue( + e, + setSecondValue, + secondValueError, + setSecondValueError, + secondValueSuccess, + setSecondValueSuccess, + ); + }} + onSearchFirstValue={(e) => { + const { value } = e.target as HTMLInputElement; + handleCommitValue(value, firstValueConstraint, setFirstValueError, setFirstValueSuccess); + }} + onSearchSecondValue={(e) => { + const { value } = e.target as HTMLInputElement; + handleCommitValue(value, secondValueConstraint, setSecondValueError, setSecondValueSuccess); + }} + onFocusFirstTextfield={onFocusFirstTextfield} + onFocusSecondTextfield={onFocusSecondTextfield} + onBlurFirstTextfield={onBlurFirstTextfield} + onBlurSecondTextfield={onBlurSecondTextfield} + {...rest} + /> + ); +}; + +export const Demo: StoryObj<StoryPropsDefault> = { + args: { + label: 'Введите кол-во товара', + leftHelper: 'Кол-во товара не может быть меньше 1 и превышать 10', + firstPlaceholder: '1', + secondPlaceholder: '5', + size: 'l', + view: 'default', + required: false, + requiredPlacement: 'right', + disabled: false, + readOnly: false, + firstTextfieldTextBefore: '', + secondTextfieldTextBefore: '', + enableContentLeft: true, + enableContentRight: true, + }, + render: (args) => <StoryDemo {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Range/Range.ts b/packages/plasma-giga/src/components/Range/Range.ts new file mode 100644 index 0000000000..359ef94798 --- /dev/null +++ b/packages/plasma-giga/src/components/Range/Range.ts @@ -0,0 +1,10 @@ +import { rangeConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Range.config'; + +const mergedConfig = mergeConfig(rangeConfig, config); + +/** + * Компонент Range. + */ +export const Range = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/Range/index.ts b/packages/plasma-giga/src/components/Range/index.ts new file mode 100644 index 0000000000..9cc6e531fd --- /dev/null +++ b/packages/plasma-giga/src/components/Range/index.ts @@ -0,0 +1,4 @@ +export { Range } from './Range'; +export { rangeTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export type { RangeProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Rating/Rating.config.ts b/packages/plasma-giga/src/components/Rating/Rating.config.ts new file mode 100644 index 0000000000..ad64c67e4b --- /dev/null +++ b/packages/plasma-giga/src/components/Rating/Rating.config.ts @@ -0,0 +1,396 @@ +import { css, ratingTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'l', + }, + variations: { + view: { + default: css` + ${tokens.color}: var(--text-primary); + ${tokens.helperTextColor}: var(--text-secondary); + ${tokens.iconColor}: var(--text-primary); + ${tokens.outlineIconColor}: var(--text-primary); + `, + accent: css` + ${tokens.color}: var(--text-primary); + ${tokens.helperTextColor}: var(--text-secondary); + // TODO: change with token data-yellow, when it will be added to theme + ${tokens.iconColor}: #F3A912; + ${tokens.outlineIconColor}: var(--text-tertiary); + `, + }, + size: { + l: css` + ${tokens.gap}: 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.helperTextFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.helperTextFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.helperTextFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.helperTextFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.helperTextLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.helperTextLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.contentGap}: 0.625rem; + ${tokens.singleIconContentGap}: 0.25rem; + ${tokens.starsWrapperGap}: 0.125rem; + + ${tokens.iconSize}: 1.25rem; + `, + m: css` + ${tokens.gap}: 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.helperTextFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.helperTextFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.helperTextFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.helperTextFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.helperTextLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.helperTextLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.contentGap}: 0.5rem; + ${tokens.singleIconContentGap}: 0.25rem; + ${tokens.starsWrapperGap}: 0.125rem; + + ${tokens.iconSize}: 1.25rem; + `, + s: css` + ${tokens.gap}: 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.helperTextFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.helperTextFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.helperTextFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.helperTextFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.helperTextLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.helperTextLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.contentGap}: 0.5rem; + ${tokens.singleIconContentGap}: 0.25rem; + ${tokens.starsWrapperGap}: 0.125rem; + + ${tokens.iconSize}: 1rem; + `, + xs: css` + ${tokens.gap}: 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.helperTextFontFamily}: var(--plasma-typo-body-xxs-font-family); + ${tokens.helperTextFontSize}: var(--plasma-typo-body-xxs-font-size); + ${tokens.helperTextFontStyle}: var(--plasma-typo-body-xxs-font-style); + ${tokens.helperTextFontWeight}: var(--plasma-typo-body-xxs-font-weight); + ${tokens.helperTextLetterSpacing}: var(--plasma-typo-body-xxs-letter-spacing); + ${tokens.helperTextLineHeight}: var(--plasma-typo-body-xxs-line-height); + + ${tokens.iconMarginBottom}: 0.125rem; + ${tokens.contentGap}: 0.375rem; + ${tokens.singleIconContentGap}: 0.25rem; + ${tokens.starsWrapperGap}: 0.125rem; + + ${tokens.singleIconMarginBottom}: 0.125rem; + ${tokens.iconSize}: 0.75rem; + ${tokens.actualIconSize}: 1rem; + ${tokens.scaleFactor}: 0.75; + `, + xxs: css` + ${tokens.gap}: 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-xxs-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-xxs-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-xxs-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-xxs-bold-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-xxs-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-xxs-line-height); + + ${tokens.helperTextFontFamily}: var(--plasma-typo-body-xxs-font-family); + ${tokens.helperTextFontSize}: var(--plasma-typo-body-xxs-font-size); + ${tokens.helperTextFontStyle}: var(--plasma-typo-body-xxs-font-style); + ${tokens.helperTextFontWeight}: var(--plasma-typo-body-xxs-font-weight); + ${tokens.helperTextLetterSpacing}: var(--plasma-typo-body-xxs-letter-spacing); + ${tokens.helperTextLineHeight}: var(--plasma-typo-body-xxs-line-height); + + ${tokens.contentGap}: 0.375rem; + ${tokens.singleIconContentGap}: 0.25rem; + ${tokens.starsWrapperGap}: 0.125rem; + + ${tokens.iconSize}: 0.75rem; + ${tokens.actualIconSize}: 1rem; + ${tokens.scaleFactor}: 0.75; + `, + h1: css` + ${tokens.gap}: 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-h1-font-family); + ${tokens.fontSize}: var(--plasma-typo-h1-font-size); + ${tokens.fontStyle}: var(--plasma-typo-h1-font-style); + ${tokens.fontWeight}: var(--plasma-typo-h1-bold-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-h1-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-h1-line-height); + + ${tokens.helperTextFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.helperTextFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.helperTextFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.helperTextFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.helperTextLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.helperTextLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.contentGap}: 1rem; + ${tokens.singleIconContentGap}: 0.5rem; + ${tokens.starsWrapperGap}: 0.125rem; + + ${tokens.iconMarginBottom}: 0.25rem; + ${tokens.iconSizeLarge}: 3rem; + ${tokens.iconSizeMedium}: 3rem; + ${tokens.iconSizeSmall}: 2.25rem; + + ${tokens.singleIconMarginBottom}: 0.25rem; + ${tokens.singleIconSizeLarge}: 3rem; + ${tokens.singleIconSizeMedium}: 3rem; + ${tokens.singleIconSizeSmall}: 2.25rem; + `, + h2: css` + ${tokens.gap}: 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-h2-font-family); + ${tokens.fontSize}: var(--plasma-typo-h2-font-size); + ${tokens.fontStyle}: var(--plasma-typo-h2-font-style); + ${tokens.fontWeight}: var(--plasma-typo-h2-bold-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-h2-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-h2-line-height); + + ${tokens.helperTextFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.helperTextFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.helperTextFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.helperTextFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.helperTextLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.helperTextLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.contentGap}: 0.875rem; + ${tokens.singleIconContentGap}: 0.5rem; + ${tokens.starsWrapperGap}: 0.125rem; + + ${tokens.iconMarginBottom}: 0.25rem; + ${tokens.iconSizeLarge}: 2rem; + ${tokens.iconSizeMedium}: 1.75rem; + ${tokens.iconSizeSmall}: 1.5rem; + + ${tokens.singleIconMarginBottom}: 0.25rem; + ${tokens.singleIconSizeLarge}: 2rem; + ${tokens.singleIconSizeMedium}: 1.75rem; + ${tokens.singleIconSizeSmall}: 1.5rem; + `, + h3: css` + ${tokens.gap}: 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-h3-font-family); + ${tokens.fontSize}: var(--plasma-typo-h3-font-size); + ${tokens.fontStyle}: var(--plasma-typo-h3-font-style); + ${tokens.fontWeight}: var(--plasma-typo-h3-bold-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-h3-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-h3-line-height); + + ${tokens.helperTextFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.helperTextFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.helperTextFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.helperTextFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.helperTextLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.helperTextLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.contentGap}: 0.75rem; + ${tokens.singleIconContentGap}: 0.375rem; + ${tokens.starsWrapperGap}: 0.125rem; + + ${tokens.iconMarginBottom}: 0.125rem; + ${tokens.iconSizeLarge}: 1.75rem; + ${tokens.iconSizeMedium}: 1.5rem; + ${tokens.iconSizeSmall}: 1.25rem; + + ${tokens.singleIconMarginBottom}: 0.125rem; + ${tokens.singleIconSizeLarge}: 1.75rem; + ${tokens.singleIconSizeMedium}: 1.5rem; + ${tokens.singleIconSizeSmall}: 1.25rem; + `, + h4: css` + ${tokens.gap}: 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-h4-font-family); + ${tokens.fontSize}: var(--plasma-typo-h4-font-size); + ${tokens.fontStyle}: var(--plasma-typo-h4-font-style); + ${tokens.fontWeight}: var(--plasma-typo-h4-bold-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-h4-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-h4-line-height); + + ${tokens.helperTextFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.helperTextFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.helperTextFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.helperTextFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.helperTextLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.helperTextLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.contentGap}: 0.625rem; + ${tokens.singleIconContentGap}: 0.25rem; + ${tokens.starsWrapperGap}: 0.125rem; + + ${tokens.iconMarginBottom}: 0.125rem; + ${tokens.iconSizeLarge}: 1.5rem; + ${tokens.iconSizeMedium}: 1.25rem; + ${tokens.iconSizeSmall}: 1.25rem; + + ${tokens.singleIconMarginBottom}: 0.125rem; + ${tokens.singleIconSizeLarge}: 1.5rem; + ${tokens.singleIconSizeMedium}: 1.25rem; + ${tokens.singleIconSizeSmall}: 1.25rem; + `, + h5: css` + ${tokens.gap}: 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-h5-font-family); + ${tokens.fontSize}: var(--plasma-typo-h5-font-size); + ${tokens.fontStyle}: var(--plasma-typo-h5-font-style); + ${tokens.fontWeight}: var(--plasma-typo-h5-bold-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-h5-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-h5-line-height); + + ${tokens.helperTextFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.helperTextFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.helperTextFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.helperTextFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.helperTextLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.helperTextLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.contentGap}: 0.625rem; + ${tokens.singleIconContentGap}: 0.25rem; + ${tokens.starsWrapperGap}: 0.125rem; + + ${tokens.iconMarginBottom}: 0.125rem; + ${tokens.iconSizeLarge}: 1.25rem; + ${tokens.iconSizeMedium}: 1.25rem; + ${tokens.iconSizeSmall}: 1rem; + + ${tokens.singleIconMarginBottom}: 0.125rem; + ${tokens.singleIconSizeLarge}: 1.25rem; + ${tokens.singleIconSizeMedium}: 1.25rem; + ${tokens.singleIconSizeSmall}: 1rem; + `, + displayL: css` + ${tokens.gap}: 0.375rem; + + ${tokens.fontFamily}: var(--plasma-typo-dspl-l-font-family); + ${tokens.fontSize}: var(--plasma-typo-dspl-l-font-size); + ${tokens.fontStyle}: var(--plasma-typo-dspl-l-font-style); + ${tokens.fontWeight}: var(--plasma-typo-dspl-l-bold-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-dspl-l-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-dspl-l-line-height); + + ${tokens.helperTextFontFamily}: var(--plasma-typo-h3-font-family); + ${tokens.helperTextFontSize}: var(--plasma-typo-h3-font-size); + ${tokens.helperTextFontStyle}: var(--plasma-typo-h3-font-style); + ${tokens.helperTextFontWeight}: var(--plasma-typo-h3-font-weight); + ${tokens.helperTextLetterSpacing}: var(--plasma-typo-h3-letter-spacing); + ${tokens.helperTextLineHeight}: var(--plasma-typo-h3-line-height); + + ${tokens.contentGap}: 1.5rem; + ${tokens.singleIconContentGap}: 0.75rem; + ${tokens.wrapperGap}: 0.625rem; + ${tokens.starsWrapperGap}: 0.125rem; + + ${tokens.iconSizeLarge}: 4rem; + ${tokens.iconSizeMedium}: 3rem; + ${tokens.iconSizeSmall}: 2.25rem; + + ${tokens.singleIconMarginBottom}: 0.5rem; + ${tokens.singleIconSizeLarge}: 7.5rem; + ${tokens.singleIconSizeMedium}: 7rem; + ${tokens.singleIconSizeSmall}: 5.5rem; + `, + displayM: css` + ${tokens.gap}: 0.375rem; + + ${tokens.fontFamily}: var(--plasma-typo-dspl-m-font-family); + ${tokens.fontSize}: var(--plasma-typo-dspl-m-font-size); + ${tokens.fontStyle}: var(--plasma-typo-dspl-m-font-style); + ${tokens.fontWeight}: var(--plasma-typo-dspl-m-bold-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-dspl-m-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-dspl-m-line-height); + + ${tokens.helperTextFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.helperTextFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.helperTextFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.helperTextFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.helperTextLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.helperTextLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.contentGap}: 1.5rem; + ${tokens.singleIconContentGap}: 0.75rem; + ${tokens.wrapperGap}: 0.5rem; + ${tokens.starsWrapperGap}: 0.125rem; + + ${tokens.iconSizeLarge}: 3rem; + ${tokens.iconSizeMedium}: 2.25rem; + ${tokens.iconSizeSmall}: 1.75rem; + + ${tokens.singleIconMarginBottom}: 0.5rem; + ${tokens.singleIconSizeLarge}: 5.25rem; + ${tokens.singleIconSizeMedium}: 4.5rem; + ${tokens.singleIconSizeSmall}: 4rem; + `, + displayS: css` + ${tokens.gap}: 0.375rem; + + ${tokens.fontFamily}: var(--plasma-typo-dspl-s-font-family); + ${tokens.fontSize}: var(--plasma-typo-dspl-s-font-size); + ${tokens.fontStyle}: var(--plasma-typo-dspl-s-font-style); + ${tokens.fontWeight}: var(--plasma-typo-dspl-s-bold-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-dspl-s-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-dspl-s-line-height); + + ${tokens.helperTextFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.helperTextFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.helperTextFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.helperTextFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.helperTextLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.helperTextLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.contentGap}: 1.5rem; + ${tokens.singleIconContentGap}: 0.75rem; + ${tokens.wrapperGap}: 0.375rem; + ${tokens.starsWrapperGap}: 0.125rem; + + ${tokens.iconSizeLarge}: 2rem; + ${tokens.iconSizeMedium}: 1.5rem; + ${tokens.iconSizeSmall}: 1.25rem; + + ${tokens.singleIconMarginBottom}: 0.313rem; + ${tokens.singleIconSizeLarge}: 4rem; + ${tokens.singleIconSizeMedium}: 3.5rem; + ${tokens.singleIconSizeSmall}: 2.75rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Rating/Rating.stories.tsx b/packages/plasma-giga/src/components/Rating/Rating.stories.tsx new file mode 100644 index 0000000000..093d867544 --- /dev/null +++ b/packages/plasma-giga/src/components/Rating/Rating.stories.tsx @@ -0,0 +1,125 @@ +import React, { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; +import { IconKeyFill, IconKeyOutline, IconLockFill } from '@salutejs/plasma-icons'; +import { ratingClasses } from '@salutejs/plasma-new-hope/styled-components'; + +import { Rating } from './Rating'; + +const views = ['default', 'accent']; +const sizes = ['l', 'm', 's', 'xs', 'xxs', 'h1', 'h2', 'h3', 'h4', 'h5', 'displayL', 'displayM', 'displayS']; +const scorePrecision = [1, 2]; +const valuePlacements = ['before', 'after']; +const iconsCount = [1, 5, 10]; +const helperTextStretching = ['fixed', 'filled']; + +const meta: Meta<typeof Rating> = { + title: 'Data Display/Rating', + component: Rating, + decorators: [InSpacingDecorator], + argTypes: { + view: { + options: views, + control: { + type: 'select', + }, + }, + size: { + options: sizes, + control: { + type: 'select', + }, + }, + value: { + control: { + type: 'number', + }, + }, + precision: { + options: scorePrecision, + control: { + type: 'inline-radio', + }, + if: { arg: 'hasValue', truthy: true }, + }, + valuePlacement: { + options: valuePlacements, + control: { + type: 'inline-radio', + }, + if: { arg: 'hasValue', truthy: true }, + }, + hasIcons: { + control: { + type: 'boolean', + }, + if: { arg: 'hasValue', truthy: true }, + }, + iconQuantity: { + options: iconsCount, + control: { + type: 'inline-radio', + }, + }, + helperTextStretching: { + options: helperTextStretching, + control: { + type: 'inline-radio', + }, + if: { arg: 'helperText', neq: '' }, + }, + ...disableProps(['iconSlot', 'iconSlotOutline', 'iconSlotHalf']), + }, +}; + +export default meta; + +type StoryPropsDefault = ComponentProps<typeof Rating> & { + hasValue?: boolean; +}; + +export const Default: StoryObj<StoryPropsDefault> = { + args: { + view: 'default', + size: 'l', + hasValue: true, + value: 3.8, + precision: 1, + valuePlacement: 'before', + hasIcons: true, + iconQuantity: 5, + helperText: 'Helper text', + helperTextStretching: 'filled', + }, + render: ({ hasIcons, hasValue, ...args }) => ( + <Rating hasIcons={hasValue ? hasIcons : true} hasValue={hasValue} {...args} /> + ), +}; + +export const CustomIcons: StoryObj<StoryPropsDefault> = { + argTypes: { + ...disableProps(['size', 'view']), + }, + args: { + view: 'default', + size: 'l', + hasValue: true, + value: 3.8, + precision: 1, + valuePlacement: 'before', + hasIcons: true, + iconQuantity: 5, + helperText: 'Helper text', + helperTextStretching: 'filled', + }, + render: ({ hasIcons, hasValue, ...args }) => ( + <Rating + hasIcons={hasValue ? hasIcons : true} + hasValue={hasValue} + iconSlot={<IconKeyFill size="s" className={ratingClasses.customIconSizing} />} + iconSlotOutline={<IconLockFill size="s" className={ratingClasses.customIconSizing} />} + iconSlotHalf={<IconKeyOutline size="s" className={ratingClasses.customIconSizing} />} + {...args} + /> + ), +}; diff --git a/packages/plasma-giga/src/components/Rating/Rating.ts b/packages/plasma-giga/src/components/Rating/Rating.ts new file mode 100644 index 0000000000..619c248638 --- /dev/null +++ b/packages/plasma-giga/src/components/Rating/Rating.ts @@ -0,0 +1,7 @@ +import { ratingConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Rating.config'; + +const mergedConfig = mergeConfig(ratingConfig, config); + +export const Rating = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/Rating/index.ts b/packages/plasma-giga/src/components/Rating/index.ts new file mode 100644 index 0000000000..9f9f231dbf --- /dev/null +++ b/packages/plasma-giga/src/components/Rating/index.ts @@ -0,0 +1,2 @@ +export { Rating } from './Rating'; +export { ratingTokens, ratingClasses } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/SSRProvider/index.ts b/packages/plasma-giga/src/components/SSRProvider/index.ts new file mode 100644 index 0000000000..c590cf4ab1 --- /dev/null +++ b/packages/plasma-giga/src/components/SSRProvider/index.ts @@ -0,0 +1 @@ +export { SSRProvider } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Segment/Segment.stories.tsx b/packages/plasma-giga/src/components/Segment/Segment.stories.tsx new file mode 100644 index 0000000000..2c92d27ff3 --- /dev/null +++ b/packages/plasma-giga/src/components/Segment/Segment.stories.tsx @@ -0,0 +1,168 @@ +import React from 'react'; +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; +import { IconMic } from '@salutejs/plasma-icons'; + +import { Counter } from '../Counter/Counter'; + +import { SegmentItem, SegmentGroup } from './Segment'; + +import { SegmentProvider } from '.'; + +const contentLeftOptions = ['none', 'icon']; +const contentRightOptions = ['none', 'text', 'counter', 'icon']; + +const segmentItemViews = ['default', 'secondary']; +type Size = typeof sizes[number]; + +type CustomStoryProps = { + itemQuantity: number; + contentLeft: string; + contentRight: string; + segmentItemView?: 'default' | 'secondary'; +}; + +type StorySegmentProps = ComponentProps<typeof SegmentGroup> & CustomStoryProps; + +const sizes = ['xs', 's', 'm', 'l'] as const; + +const getContentLeft = (contentLeftOption: string, size: Size) => { + const iconSize = size === 'xs' ? 'xs' : 's'; + return contentLeftOption === 'icon' ? <IconMic size={iconSize} color="inherit" /> : undefined; +}; + +const getContentRight = (contentRightOption: string, size: Size) => { + const iconSize = size === 'xs' ? 'xs' : 's'; + const counterSize = size === 'xs' ? 'xxs' : 'xs'; + + switch (contentRightOption) { + case 'icon': + return <IconMic size={iconSize} color="inherit" />; + case 'counter': + return <Counter size={counterSize} count={1} view="positive" />; + case 'text': + return 'Text'; + default: + return undefined; + } +}; + +const meta: Meta<StorySegmentProps> = { + title: 'Data Entry/Segment', + decorators: [InSpacingDecorator], + component: SegmentGroup, + argTypes: { + ...disableProps(['filledBackground', 'view', 'selectionMode', 'clip']), + stretch: { + control: { + type: 'boolean', + }, + if: { arg: 'orientation', eq: 'horizontal' }, + }, + orientation: { + options: ['horizontal', 'vertical'], + control: { + type: 'select', + }, + }, + selectionMode: { + options: ['single', 'multiple'], + control: { + type: 'select', + }, + }, + segmentItemView: { + options: segmentItemViews, + control: { + type: 'select', + }, + }, + contentLeft: { + options: contentLeftOptions, + control: { + type: 'select', + }, + }, + contentRight: { + options: contentRightOptions, + control: { + type: 'select', + }, + }, + size: { + options: sizes, + control: { + type: 'select', + }, + }, + }, +}; + +export default meta; + +const StoryDefault = (props: StorySegmentProps) => { + const { + disabled, + itemQuantity, + size, + stretch, + orientation, + + segmentItemView, + contentLeft: contentLeftOption, + contentRight: contentRightOption, + ...args + } = props; + const items = Array(itemQuantity).fill(0); + const isVertical = orientation === 'vertical'; + + return ( + <SegmentProvider> + <SegmentGroup + stretch={stretch} + disabled={disabled} + clip={false} + size={size} + orientation={orientation} + {...args} + > + {items.map((_, i) => ( + <SegmentItem + view={segmentItemView} + label={`Label ${i}`} + value={`label_${i}`} + size={size} + key={`label_${i}`} + contentLeft={getContentLeft(contentLeftOption, size)} + contentRight={getContentRight(contentRightOption, size)} + {...args} + > + {`Label${i + 1}`} + </SegmentItem> + ))} + </SegmentGroup> + </SegmentProvider> + ); +}; + +export const Default: StoryObj<StorySegmentProps> = { + args: { + itemQuantity: 8, + size: 'xs', + segmentItemView: 'default', + selectionMode: 'single', + pilled: false, + filledBackground: false, + hasBackground: false, + disabled: false, + stretch: false, + orientation: 'horizontal', + contentRight: 'none', + contentLeft: 'none', + }, + argTypes: { + ...disableProps(['filledBackground', 'view', 'selectionMode', 'clip']), + }, + render: (args: StorySegmentProps) => <StoryDefault {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Segment/Segment.ts b/packages/plasma-giga/src/components/Segment/Segment.ts new file mode 100644 index 0000000000..021f827683 --- /dev/null +++ b/packages/plasma-giga/src/components/Segment/Segment.ts @@ -0,0 +1,26 @@ +import { + segmentItemConfig, + segmentGroupConfig, + component, + mergeConfig, +} from '@salutejs/plasma-new-hope/styled-components'; + +import { config as configSegmentItem } from './SegmentItem.config'; +import { config as configSegmentGroup } from './SegmentGroup.config'; + +/** + * Провайдер контекста для группы сегментов и хук для доступа к контексту. + */ +export { SegmentProvider, useSegment } from '@salutejs/plasma-new-hope/styled-components'; + +const mergedSegmentItemConfig = mergeConfig(segmentItemConfig, configSegmentItem); +const mergedSegmentGroupConfig = mergeConfig(segmentGroupConfig, configSegmentGroup); + +/** + * Компонент группы сегментов. + */ +export const SegmentGroup = component(mergedSegmentGroupConfig); +/** + * Компонент сегмента. + */ +export const SegmentItem = component(mergedSegmentItemConfig); diff --git a/packages/plasma-giga/src/components/Segment/SegmentGroup.config.ts b/packages/plasma-giga/src/components/Segment/SegmentGroup.config.ts new file mode 100644 index 0000000000..96ae4e7294 --- /dev/null +++ b/packages/plasma-giga/src/components/Segment/SegmentGroup.config.ts @@ -0,0 +1,75 @@ +import { css, segmentTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'clear', + size: 'xs', + }, + variations: { + view: { + clear: css` + ${segmentTokens.arrowColor}: var(--text-secondary); + ${segmentTokens.groupBackgroundColor}: transparent; + ${segmentTokens.groupFilledBackgroundColor}: var(--text-accent); + `, + filled: css` + ${segmentTokens.arrowColor}: var(--text-secondary); + ${segmentTokens.groupBackgroundColor}: transparent; + ${segmentTokens.groupFilledBackgroundColor}: var(--text-accent); + `, + }, + size: { + xs: css` + ${segmentTokens.groupBorderRadius}: 0.625rem; + ${segmentTokens.groupPilledBorderRadius}: 1.125rem; + ${segmentTokens.groupWidth}: auto; + ${segmentTokens.groupHeight}: auto; + ${segmentTokens.groupArrowPadding}: 0.25rem 0.75rem; + ${segmentTokens.groupVerticalArrowPadding}: 0.75rem 0; + `, + s: css` + ${segmentTokens.groupBorderRadius}: 0.75rem; + ${segmentTokens.groupPilledBorderRadius}: 1.375rem; + ${segmentTokens.groupWidth}: auto; + ${segmentTokens.groupHeight}: auto; + ${segmentTokens.groupArrowPadding}: 0.5rem 0.875rem; + ${segmentTokens.groupVerticalArrowPadding}: 0.875rem 0; + `, + m: css` + ${segmentTokens.groupBorderRadius}: 0.875rem; + ${segmentTokens.groupPilledBorderRadius}: 1.625rem; + ${segmentTokens.groupWidth}: auto; + ${segmentTokens.groupHeight}: auto; + ${segmentTokens.groupArrowPadding}: 0.75rem 1.25rem; + ${segmentTokens.groupVerticalArrowPadding}: 1.25rem 0; + `, + l: css` + ${segmentTokens.groupBorderRadius}: 1rem; + ${segmentTokens.groupPilledBorderRadius}: 1.875rem; + ${segmentTokens.groupWidth}: auto; + ${segmentTokens.groupHeight}: auto; + ${segmentTokens.groupArrowPadding}: 1rem 1.375rem; + ${segmentTokens.groupVerticalArrowPadding}: 1.375rem 0; + `, + }, + disabled: { + true: css` + ${segmentTokens.disabledOpacity}: 0.4; + `, + }, + pilled: { + true: css``, + }, + stretch: { + true: css``, + }, + filledBackground: { + true: css` + ${segmentTokens.groupFilledBackgroundColor}: var(--surface-transparent-secondary); + `, + }, + orientation: { + vertical: css``, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Segment/SegmentItem.config.ts b/packages/plasma-giga/src/components/Segment/SegmentItem.config.ts new file mode 100644 index 0000000000..2e80b9c7cf --- /dev/null +++ b/packages/plasma-giga/src/components/Segment/SegmentItem.config.ts @@ -0,0 +1,140 @@ +import { css, segmentTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'clear', + size: 'xs', + }, + variations: { + view: { + clear: css` + ${segmentTokens.itemColor}: var(--text-secondary); + ${segmentTokens.itemBackgroundColor}: transparent; + ${segmentTokens.itemColorHover}: var(--text-primary-hover); + ${segmentTokens.itemBackgroundColorHover}: transparent; + ${segmentTokens.itemAdditionalColor}: var(--text-tertiary); + ${segmentTokens.itemAdditionalColorHover}: var(--text-secondary); + ${segmentTokens.itemSelectedColor}: var(--text-primary-hover); + ${segmentTokens.itemSelectedBackgroundColor}: transparent; + ${segmentTokens.itemSelectedColorHover}: var(--text-primary); + ${segmentTokens.itemSelectedBackgroundColorHover}: transparent; + ${segmentTokens.itemSelectedAdditionalColor}: var(--text-secondary); + ${segmentTokens.itemSelectedAdditionalColorHover}: var(--text-secondary); + + ${segmentTokens.groupFilledBackgroundColor}: var(--text-accent); + `, + secondary: css` + ${segmentTokens.itemColor}: var(--text-primary); + ${segmentTokens.itemBackgroundColor}: transparent; + ${segmentTokens.itemColorHover}: var(--text-primary-hover); + ${segmentTokens.itemBackgroundColorHover}: transparent; + ${segmentTokens.itemAdditionalColor}: var(--text-secondary); + ${segmentTokens.itemAdditionalColorHover}: var(--text-secondary); + ${segmentTokens.itemSelectedColor}: var(--text-primary); + ${segmentTokens.itemSelectedBackgroundColor}: var(--surface-transparent-card); + ${segmentTokens.itemSelectedColorHover}: var(--text-primary-hover); + ${segmentTokens.itemSelectedBackgroundColorHover}: var(--surface-transparent-card); + ${segmentTokens.itemSelectedAdditionalColor}: var(--text-secondary); + ${segmentTokens.itemSelectedAdditionalColorHover}: var(--text-secondary); + + ${segmentTokens.groupFilledBackgroundColor}: var(--text-accent); + `, + default: css` + ${segmentTokens.itemColor}: var(--text-primary); + ${segmentTokens.itemBackgroundColor}: transparent; + ${segmentTokens.itemColorHover}: var(--text-primary-hover); + ${segmentTokens.itemBackgroundColorHover}: transparent; + ${segmentTokens.itemAdditionalColor}: var(--text-secondary); + ${segmentTokens.itemAdditionalColorHover}: var(--text-secondary); + ${segmentTokens.itemSelectedColor}: var(--inverse-text-primary); + ${segmentTokens.itemSelectedBackgroundColor}: var(--surface-solid-default); + ${segmentTokens.itemSelectedColorHover}: var(--inverse-text-primary-hover); + ${segmentTokens.itemSelectedBackgroundColorHover}: var(--surface-solid-default); + ${segmentTokens.itemSelectedAdditionalColor}: var(--inverse-text-secondary); + ${segmentTokens.itemSelectedAdditionalColorHover}: var(--inverse-text-secondary); + + ${segmentTokens.groupFilledBackgroundColor}: var(--text-accent); + `, + }, + size: { + xs: css` + ${segmentTokens.itemBorderRadius}: 0.5rem; + ${segmentTokens.itemWidth}: auto; + ${segmentTokens.itemHeight}: 2rem; + ${segmentTokens.itemPadding}: 0.5rem 0.75rem; + ${segmentTokens.itemPilledPadding}: 0.5rem 0.5rem; + ${segmentTokens.itemContentPadding}: 0.0625rem 0.125rem; + ${segmentTokens.itemIconMargin}: 0.125rem; + ${segmentTokens.itemMarginLeft}: 0; + + ${segmentTokens.fontFamily}: var(--plasma-typo-body-xs-font-family); + ${segmentTokens.fontSize}: var(--plasma-typo-body-xs-font-size); + ${segmentTokens.fontStyle}: var(--plasma-typo-body-xs-font-style); + ${segmentTokens.fontWeight}: var(--plasma-typo-body-xs-bold-font-weight); + ${segmentTokens.letterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${segmentTokens.lineHeight}: var(--plasma-typo-body-xs-line-height); + `, + s: css` + ${segmentTokens.itemBorderRadius}: 0.625rem; + ${segmentTokens.itemWidth}: auto; + ${segmentTokens.itemHeight}: 2.5rem; + ${segmentTokens.itemPadding}: 0.5rem 1rem; + ${segmentTokens.itemPilledPadding}: 0.5rem 0.5rem; + ${segmentTokens.itemContentPadding}: 0.1875rem 0.125rem; + ${segmentTokens.itemIconMargin}: 0.125rem; + ${segmentTokens.itemMarginLeft}: 0rem; + + ${segmentTokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${segmentTokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${segmentTokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${segmentTokens.fontWeight}: var(--plasma-typo-body-s-bold-font-weight); + ${segmentTokens.letterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${segmentTokens.lineHeight}: var(--plasma-typo-body-s-line-height); + `, + m: css` + ${segmentTokens.itemBorderRadius}: 0.75rem; + ${segmentTokens.itemWidth}: auto; + ${segmentTokens.itemHeight}: 3rem; + ${segmentTokens.itemPadding}: 0.75rem 1.25rem; + ${segmentTokens.itemPilledPadding}: 0.75rem 0.75rem; + ${segmentTokens.itemContentPadding}: 0.125rem; + ${segmentTokens.itemIconMargin}: 0.25rem; + ${segmentTokens.itemMarginLeft}: 0rem; + + ${segmentTokens.fontFamily}: var(--plasma-typo-body-m-font-family); + ${segmentTokens.fontSize}: var(--plasma-typo-body-m-font-size); + ${segmentTokens.fontStyle}: var(--plasma-typo-body-m-font-style); + ${segmentTokens.fontWeight}: var(--plasma-typo-body-m-bold-font-weight); + ${segmentTokens.letterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${segmentTokens.lineHeight}: var(--plasma-typo-body-m-line-height); + `, + l: css` + ${segmentTokens.itemBorderRadius}: 0.875rem; + ${segmentTokens.itemWidth}: auto; + ${segmentTokens.itemHeight}: 3.5rem; + ${segmentTokens.itemPadding}: 1rem 1.5rem; /* 1.625 */ + ${segmentTokens.itemPilledPadding}: 1rem 1rem; + ${segmentTokens.itemContentPadding}: 0.0625rem 0.125rem; + ${segmentTokens.itemIconMargin}: 0.375rem; + ${segmentTokens.itemMarginLeft}: 0; + + ${segmentTokens.fontFamily}: var(--plasma-typo-body-l-font-family); + ${segmentTokens.fontSize}: var(--plasma-typo-body-l-font-size); + ${segmentTokens.fontStyle}: var(--plasma-typo-body-l-font-style); + ${segmentTokens.fontWeight}: var(--plasma-typo-body-l-bold-font-weight); + ${segmentTokens.letterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${segmentTokens.lineHeight}: var(--plasma-typo-body-l-line-height); + `, + }, + disabled: { + true: css` + ${segmentTokens.disabledOpacity}: 0.4; + `, + }, + pilled: { + true: css` + ${segmentTokens.itemPilledBorderRadius}: 1.75rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Segment/index.ts b/packages/plasma-giga/src/components/Segment/index.ts new file mode 100644 index 0000000000..54ace2d0e1 --- /dev/null +++ b/packages/plasma-giga/src/components/Segment/index.ts @@ -0,0 +1,6 @@ +export { useSegment, SegmentProvider, SegmentItem, SegmentGroup } from './Segment'; +export type { + SegmentItemProps, + SegmentGroupProps, + SegmentProviderProps, +} from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Select/Select.config.ts b/packages/plasma-giga/src/components/Select/Select.config.ts new file mode 100644 index 0000000000..287919be63 --- /dev/null +++ b/packages/plasma-giga/src/components/Select/Select.config.ts @@ -0,0 +1,715 @@ +import { css, selectTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + labelPlacement: 'outer', + chipView: 'default', + }, + variations: { + view: { + default: css` + ${tokens.textFieldColor}: var(--text-primary); + + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + + ${tokens.textFieldBackgroundColor}: var(--surface-transparent-primary); + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-secondary); + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + ${tokens.textFieldLabelColor}: var(--text-primary); + ${tokens.textFieldLeftHelperColor}: var(--text-secondary); + ${tokens.textFieldFocusColor}: var(--text-accent); + + ${tokens.textFieldContentSlotColor}: var(--text-secondary); + ${tokens.textFieldContentSlotColorHover}: var(--text-secondary-hover); + ${tokens.textFieldContentSlotColorActive}: var(--text-secondary-active); + + ${tokens.textFieldIndicatorColor}: var(--surface-negative); + ${tokens.textFieldOptionalColor}: var(--text-tertiary); + + ${tokens.buttonColor}: var(--inverse-text-primary); + ${tokens.buttonColorHover}: var(--inverse-text-primary-hover); + ${tokens.buttonColorActive}: var(--inverse-text-primary-active); + ${tokens.buttonArrowColor}: var(--inverse-text-secondary); + ${tokens.buttonArrowColorHover}: var(--inverse-text-secondary-hover); + ${tokens.buttonArrowColorActive}: var(--inverse-text-secondary-hover); + ${tokens.buttonBackgroundColor}: var(--surface-solid-default); + ${tokens.buttonBackgroundColorHover}: var(--surface-solid-default-hover); + ${tokens.buttonBackgroundColorActive}: var(--surface-solid-default-hover); + + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + `, + positive: css` + ${tokens.textFieldColor}: var(--text-primary); + + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + + ${tokens.textFieldBackgroundColor}: var(--surface-transparent-positive); + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-positive-active); + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + ${tokens.textFieldLabelColor}: var(--text-primary); + ${tokens.textFieldLeftHelperColor}: var(--text-positive); + ${tokens.textFieldFocusColor}: var(--text-accent); + + ${tokens.textFieldContentSlotColor}: var(--text-secondary); + ${tokens.textFieldContentSlotColorHover}: var(--text-secondary-hover); + ${tokens.textFieldContentSlotColorActive}: var(--text-secondary-active); + + ${tokens.textFieldIndicatorColor}: var(--surface-negative); + ${tokens.textFieldOptionalColor}: var(--text-tertiary); + + ${tokens.buttonColor}: var(--on-dark-text-primary); + ${tokens.buttonColorHover}: var(--on-dark-text-primary-hover); + ${tokens.buttonColorActive}: var(--on-dark-text-primary-active); + ${tokens.buttonArrowColor}: var(--on-dark-text-secondary); + ${tokens.buttonArrowColorHover}: var(--on-dark-text-secondary-hover); + ${tokens.buttonArrowColorActive}: var(--on-dark-text-secondary-hover); + ${tokens.buttonBackgroundColor}:var(--surface-positive); + ${tokens.buttonBackgroundColorHover}:var(--surface-positive-hover); + ${tokens.buttonBackgroundColorActive}:var(--surface-positive-active); + + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + `, + warning: css` + ${tokens.textFieldColor}: var(--text-primary); + + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + + ${tokens.textFieldBackgroundColor}: var(--surface-transparent-warning); + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-warning-active); + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + ${tokens.textFieldLabelColor}: var(--text-primary); + ${tokens.textFieldLeftHelperColor}: var(--text-warning); + ${tokens.textFieldFocusColor}: var(--text-accent); + + ${tokens.textFieldContentSlotColor}: var(--text-secondary); + ${tokens.textFieldContentSlotColorHover}: var(--text-secondary-hover); + ${tokens.textFieldContentSlotColorActive}: var(--text-secondary-active); + + ${tokens.textFieldIndicatorColor}: var(--surface-negative); + ${tokens.textFieldOptionalColor}: var(--text-tertiary); + + ${tokens.buttonColor}: var(--on-dark-text-primary); + ${tokens.buttonColorHover}: var(--on-dark-text-primary-hover); + ${tokens.buttonColorActive}: var(--on-dark-text-primary-active); + ${tokens.buttonArrowColor}: var(--on-dark-text-secondary); + ${tokens.buttonArrowColorHover}: var(--on-dark-text-secondary-hover); + ${tokens.buttonArrowColorActive}: var(--on-dark-text-secondary-hover); + ${tokens.buttonBackgroundColor}:var(--surface-warning); + ${tokens.buttonBackgroundColorHover}:var(--surface-warning-hover); + ${tokens.buttonBackgroundColorActive}:var(--surface-warning-active); + + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + `, + negative: css` + ${tokens.textFieldColor}: var(--text-primary); + + ${tokens.textFieldPlaceholderColor}: var(--text-secondary); + ${tokens.textFieldPlaceholderColorFocus}: var(--text-tertiary); + + ${tokens.textFieldBackgroundColor}: var(--surface-transparent-negative); + ${tokens.textFieldBackgroundColorFocus}: var(--surface-transparent-negative-active); + ${tokens.textFieldTextBeforeColor}: var(--text-tertiary); + ${tokens.textFieldTextAfterColor}: var(--text-tertiary); + ${tokens.textFieldLabelColor}: var(--text-primary); + ${tokens.textFieldLeftHelperColor}: var(--text-negative); + ${tokens.textFieldFocusColor}: var(--text-accent); + + ${tokens.textFieldContentSlotColor}: var(--text-secondary); + ${tokens.textFieldContentSlotColorHover}: var(--text-secondary-hover); + ${tokens.textFieldContentSlotColorActive}: var(--text-secondary-active); + + ${tokens.textFieldIndicatorColor}: var(--surface-negative); + ${tokens.textFieldOptionalColor}: var(--text-tertiary); + + ${tokens.buttonColor}: var(--on-dark-text-primary); + ${tokens.buttonColorHover}: var(--on-dark-text-primary-hover); + ${tokens.buttonColorActive}: var(--on-dark-text-primary-active); + ${tokens.buttonArrowColor}: var(--on-dark-text-secondary); + ${tokens.buttonArrowColorHover}: var(--on-dark-text-secondary-hover); + ${tokens.buttonArrowColorActive}: var(--on-dark-text-secondary-hover); + ${tokens.buttonBackgroundColor}:var(--surface-negative); + ${tokens.buttonBackgroundColorHover}: var(--surface-negative-hover); + ${tokens.buttonBackgroundColorActive}:var(--surface-negative-active); + + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + `, + accent: css` + ${tokens.buttonColor}: var(--on-dark-text-primary); + ${tokens.buttonColorHover}: var(--on-dark-text-primary-hover); + ${tokens.buttonColorActive}: var(--on-dark-text-primary-active); + ${tokens.buttonArrowColor}: var(--on-dark-text-secondary); + ${tokens.buttonArrowColorHover}: var(--on-dark-text-secondary-hover); + ${tokens.buttonArrowColorActive}: var(--on-dark-text-secondary-hover); + ${tokens.buttonBackgroundColor}: var(--surface-accent); + ${tokens.buttonBackgroundColorHover}: var(--surface-accent-hover); + ${tokens.buttonBackgroundColorActive}: var(--surface-accent-active); + + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + `, + secondary: css` + ${tokens.buttonColor}: var(--text-primary); + ${tokens.buttonColorHover}: var(--text-primary-hover); + ${tokens.buttonColorActive}: var(--text-primary-active); + ${tokens.buttonArrowColor}: var(--text-secondary); + ${tokens.buttonArrowColorHover}: var(--text-secondary-hover); + ${tokens.buttonArrowColorActive}: var(--text-secondary-hover); + ${tokens.buttonBackgroundColor}: var(--surface-transparent-secondary); + ${tokens.buttonBackgroundColorHover}: var(--surface-transparent-secondary-hover); + ${tokens.buttonBackgroundColorActive}: var(--surface-transparent-secondary-active); + + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + `, + clear: css` + ${tokens.buttonColor}: var(--text-primary); + ${tokens.buttonColorHover}: var(--text-primary-hover); + ${tokens.buttonColorActive}: var(--text-primary-active); + ${tokens.buttonArrowColor}: var(--text-secondary); + ${tokens.buttonArrowColorHover}: var(--text-secondary-hover); + ${tokens.buttonArrowColorActive}: var(--text-secondary-active); + ${tokens.buttonBackgroundColor}: var(--surface-clear); + ${tokens.buttonBackgroundColorHover}: var(--surface-clear); + ${tokens.buttonBackgroundColorActive}: var(--surface-clear); + + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + `, + dark: css` + ${tokens.buttonColor}: var(--on-dark-text-primary); + ${tokens.buttonColorHover}: var(--on-dark-text-primary-hover); + ${tokens.buttonColorActive}: var(--on-dark-text-primary-active); + ${tokens.buttonArrowColor}: var(--on-dark-text-secondary); + ${tokens.buttonArrowColorHover}: var(--on-dark-text-secondary-hover); + ${tokens.buttonArrowColorActive}: var(--on-dark-text-secondary-active); + ${tokens.buttonBackgroundColor}:var(--on-light-surface-transparent-deep); + ${tokens.buttonBackgroundColorHover}:var(--on-light-surface-transparent-deep-hover); + ${tokens.buttonBackgroundColorActive}:var(--on-light-surface-transparent-deep-active); + + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + `, + black: css` + ${tokens.buttonColor}: var(--on-dark-text-primary); + ${tokens.buttonColorHover}: var(--on-dark-text-primary-hover); + ${tokens.buttonColorActive}: var(--on-dark-text-primary-active); + ${tokens.buttonArrowColor}: var(--on-dark-text-secondary); + ${tokens.buttonArrowColorHover}: var(--on-dark-text-secondary-hover); + ${tokens.buttonArrowColorActive}: var(--on-dark-text-secondary-active); + ${tokens.buttonBackgroundColor}:var(--on-light-surface-solid-default); + ${tokens.buttonBackgroundColorHover}:var(--on-light-surface-solid-default-hover); + ${tokens.buttonBackgroundColorActive}: var(--on-light-surface-solid-default-active); + + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + `, + white: css` + ${tokens.buttonColor}: var(--on-light-text-primary); + ${tokens.buttonColorHover}: var(--on-light-text-primary-hover); + ${tokens.buttonColorActive}: var(--on-light-text-primary-active); + ${tokens.buttonArrowColor}: var(--on-light-text-secondary); + ${tokens.buttonArrowColorHover}: var(--on-light-text-secondary-hover); + ${tokens.buttonArrowColorActive}: var(--on-light-text-secondary-active); + ${tokens.buttonBackgroundColor}:var(--on-dark-surface-solid-default); + ${tokens.buttonBackgroundColorHover}:var(--on-dark-surface-solid-default-hover); + ${tokens.buttonBackgroundColorActive}:var(--on-dark-surface-solid-default-active); + + ${tokens.itemBackgroundHover}: var(--surface-transparent-secondary); + ${tokens.disclosureIconColor}: var(--text-secondary); + ${tokens.disclosureIconColorHover}: var(--text-secondary-hover); + `, + }, + size: { + l: css` + ${tokens.textFieldHeight}: 3.5rem; + ${tokens.textFieldPadding}: 1.0625rem 1.125rem 1.0625rem 1.125rem; + ${tokens.textFieldPaddingWithChips}: 0.375rem; + ${tokens.textFieldBorderRadius}: 0.875rem; + + ${tokens.textFieldLeftContentMargin}: -0.0625rem 0.5rem -0.0625rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.textFieldLabelOffset}: 0.75rem; + ${tokens.textFieldLabelFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.textFieldLabelFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.textFieldLabelFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.textFieldLeftHelperOffset}: 0.25rem; + ${tokens.textFieldLeftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLeftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLeftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLeftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLeftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLeftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelInnerPadding}: 0.5625rem 0 0.125rem 0; + ${tokens.textFieldContentLabelInnerPadding}: 1.5625rem 0 0.5625rem 0; + + ${tokens.textFieldIndicatorSizeInner}: 0.5rem; + ${tokens.textFieldIndicatorSizeOuter}: 0.375rem; + ${tokens.textFieldIndicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.textFieldIndicatorLabelPlacementOuter}: 0.5rem auto auto -0.75rem; + ${tokens.textFieldIndicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.textFieldIndicatorLabelPlacementOuterRight}: 0.25rem -0.625rem auto auto; + ${tokens.textFieldClearIndicatorLabelPlacementInner}: 1.5rem auto auto -0.875rem; + ${tokens.textFieldClearIndicatorLabelPlacementInnerRight}: 1.5rem -0.875rem auto auto; + ${tokens.textFieldClearIndicatorHintInnerRight}: 1.5rem -2.25rem auto auto; + + ${tokens.textFieldChipGap}: 0.25rem; + ${tokens.textFieldChipBorderRadius}: 0.5rem; + ${tokens.textFieldChipWidth}: auto; + ${tokens.textFieldChipHeight}: 2.75rem; + ${tokens.textFieldChipPadding}: 0 0.75rem 0 1rem; + ${tokens.textFieldChipClearContentMarginLeft}: 0.625rem; + ${tokens.textFieldChipClearContentMarginRight}: 0rem; + ${tokens.textFieldChipCloseIconSize}: 1.5rem; + ${tokens.textFieldChipFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.textFieldChipFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.textFieldChipFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.textFieldChipFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.textFieldChipLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.textFieldChipLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.buttonArrowMargin}: 0 -0.125rem 0 0.5rem; + ${tokens.targetHeight}: 3.5rem; + ${tokens.buttonPadding}: 1.5rem 0 1.5rem; + + ${tokens.padding}: 0.125rem; + ${tokens.borderRadius}: 0.875rem; + + ${tokens.itemHeight}: 1.5rem; + ${tokens.itemPadding}: 1rem 1.125rem; + ${tokens.itemPaddingTight}: 0.75rem 1.125rem; + ${tokens.itemBorderRadius}: 0.75rem; + ${tokens.itemIconMargin}: 0 0.5rem 0 0; + ${tokens.itemIconSize}: 1.5rem; + ${tokens.itemIconSizeTight}: 1.5rem; + + ${tokens.cellPadding}: 0rem; + ${tokens.cellPaddingLeftContent}: 0rem; + ${tokens.cellPaddingContent}: 0rem; + ${tokens.cellPaddingRightContent}: 0rem; + ${tokens.cellTextboxGap}: 0.125rem; + ${tokens.cellGap}: 0.375rem; + ${tokens.cellTitleFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.cellTitleFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.cellTitleFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.cellTitleFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.cellTitleLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.cellTitleLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.fontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.fontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.fontLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.checkboxTriggerSize}: 1.25rem; + ${tokens.checkboxTriggerSizeTight}: 1.25rem; + ${tokens.checkboxTriggerBorderRadius}: 0.375rem; + ${tokens.checkboxTriggerBorderRadiusTight}: 0.375rem; + ${tokens.checkboxFillColor}: var(--text-accent); + ${tokens.checkboxIconColor}: var(--on-dark-text-primary); + ${tokens.checkboxTriggerBorderColor}: var(--text-secondary); + + ${tokens.indicatorSize}: 0.375rem; + `, + m: css` + ${tokens.textFieldHeight}: 3rem; + ${tokens.textFieldPadding}: 0.875rem 1rem 0.875rem 1rem; + ${tokens.textFieldPaddingWithChips}: 0.375rem; + ${tokens.textFieldBorderRadius}: 0.75rem; + + ${tokens.textFieldLeftContentMargin}: -0.125rem 0.375rem -0.125rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.125rem -0.125rem -0.125rem 0.75rem; + + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.textFieldLabelOffset}: 0.625rem; + ${tokens.textFieldLabelFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.textFieldLabelFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.textFieldLabelFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.textFieldLeftHelperOffset}: 0.25rem; + ${tokens.textFieldLeftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLeftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLeftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLeftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLeftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLeftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelInnerPadding}: 0.375rem 0 0.125rem 0; + ${tokens.textFieldContentLabelInnerPadding}: 1.375rem 0 0.375rem 0; + + ${tokens.textFieldIndicatorSizeInner}: 0.5rem; + ${tokens.textFieldIndicatorSizeOuter}: 0.375rem; + ${tokens.textFieldIndicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.textFieldIndicatorLabelPlacementOuter}: 0.375rem auto auto -0.75rem; + ${tokens.textFieldIndicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.textFieldIndicatorLabelPlacementOuterRight}: 0.25rem -0.6875rem auto auto; + ${tokens.textFieldClearIndicatorLabelPlacementInner}: 1.25rem auto auto -0.875rem; + ${tokens.textFieldClearIndicatorLabelPlacementInnerRight}: 1.25rem -0.875rem auto auto; + ${tokens.textFieldClearIndicatorHintInnerRight}: 1.25rem -2.25rem auto auto; + + ${tokens.textFieldChipGap}: 0.25rem; + ${tokens.textFieldChipBorderRadius}: 0.375rem; + ${tokens.textFieldChipWidth}: auto; + ${tokens.textFieldChipHeight}: 2.25rem; + ${tokens.textFieldChipPadding}: 0 0.625rem 0 0.875rem; + ${tokens.textFieldChipClearContentMarginLeft}: 0.5rem; + ${tokens.textFieldChipClearContentMarginRight}: 0rem; + ${tokens.textFieldChipCloseIconSize}: 1.25rem; + ${tokens.textFieldChipFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.textFieldChipFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.textFieldChipFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.textFieldChipFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.textFieldChipLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.textFieldChipLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.buttonArrowMargin}: 0 -0.125rem 0 0.375rem; + ${tokens.targetHeight}: 3rem; + ${tokens.buttonPadding}: 1.25rem 0 1.25rem; + + ${tokens.padding}: 0.125rem; + ${tokens.borderRadius}: 0.75rem; + + ${tokens.itemHeight}: 1.5rem; + ${tokens.itemPadding}: 0.75rem 0.875rem; + ${tokens.itemPaddingTight}: 0.5rem 0.875rem; + ${tokens.itemBorderRadius}: 0.625rem; + ${tokens.itemIconMargin}: 0 0.375rem 0 0; + ${tokens.itemIconSize}: 1.5rem; + ${tokens.itemIconSizeTight}: 1.5rem; + + ${tokens.cellPadding}: 0rem; + ${tokens.cellPaddingLeftContent}: 0rem; + ${tokens.cellPaddingContent}: 0rem; + ${tokens.cellPaddingRightContent}: 0rem; + ${tokens.cellTextboxGap}: 0.125rem; + ${tokens.cellGap}: 0.375rem; + ${tokens.cellTitleFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.cellTitleFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.cellTitleFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.cellTitleFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.cellTitleLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.cellTitleLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.fontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.fontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.fontLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.checkboxTriggerSize}: 1.25rem; + ${tokens.checkboxTriggerSizeTight}: 1.25rem; + ${tokens.checkboxTriggerBorderRadius}: 0.375rem; + ${tokens.checkboxTriggerBorderRadiusTight}: 0.375rem; + ${tokens.checkboxFillColor}: var(--text-accent); + ${tokens.checkboxIconColor}: var(--on-dark-text-primary); + ${tokens.checkboxTriggerBorderColor}: var(--text-secondary); + + ${tokens.indicatorSize}: 0.375rem; + `, + s: css` + ${tokens.textFieldHeight}: 2.5rem; + ${tokens.textFieldPadding}: 0.6875rem 0.875rem 0.6875rem 0.875rem; + ${tokens.textFieldPaddingWithChips}: 0.375rem; + ${tokens.textFieldBorderRadius}: 0.625rem; + + ${tokens.textFieldLeftContentMargin}: -0.1875rem 0.25rem -0.1875rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.1875rem -0.125rem -0.1875rem 0.75rem; + + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.textFieldLabelOffset}: 0.5rem; + ${tokens.textFieldLabelFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.textFieldLabelFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.textFieldLabelFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.textFieldLeftHelperOffset}: 0.25rem; + ${tokens.textFieldLeftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLeftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLeftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLeftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLeftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLeftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelInnerPadding}: 0.3125rem 0 0 0; + ${tokens.textFieldContentLabelInnerPadding}: 1.0625rem 0 0.3125rem 0; + + ${tokens.textFieldIndicatorSizeInner}: 0.375rem; + ${tokens.textFieldIndicatorSizeOuter}: 0.375rem; + ${tokens.textFieldIndicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.textFieldIndicatorLabelPlacementOuter}: 0.3125rem auto auto -0.6875rem; + ${tokens.textFieldIndicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.textFieldIndicatorLabelPlacementOuterRight}: 0.25rem -0.625rem auto auto; + ${tokens.textFieldClearIndicatorLabelPlacementInner}: 1.063rem auto auto -0.75rem; + ${tokens.textFieldClearIndicatorLabelPlacementInnerRight}: 1.063rem -0.75rem auto auto; + ${tokens.textFieldClearIndicatorHintInnerRight}: 1.063rem -2.125rem auto auto; + + ${tokens.textFieldChipGap}: 0.25rem; + ${tokens.textFieldChipBorderRadius}: 0.25rem; + ${tokens.textFieldChipWidth}: auto; + ${tokens.textFieldChipHeight}: 1.75rem; + ${tokens.textFieldChipPadding}: 0 0.5rem 0 0.75rem; + ${tokens.textFieldChipClearContentMarginLeft}: 0.375rem; + ${tokens.textFieldChipClearContentMarginRight}: 0rem; + ${tokens.textFieldChipCloseIconSize}: 1rem; + ${tokens.textFieldChipFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.textFieldChipFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.textFieldChipFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.textFieldChipFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.textFieldChipLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.textFieldChipLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.buttonArrowMargin}: 0 -0.125rem 0 0.25rem; + ${tokens.targetHeight}: 2.5rem; + ${tokens.buttonPadding}: 1rem 0 1rem; + + ${tokens.padding}: 0.125rem; + ${tokens.borderRadius}: 0.625rem; + + ${tokens.itemHeight}: 1.5rem; + ${tokens.itemPadding}: 0.5rem 0.75rem; + ${tokens.itemPaddingTight}: 0.25rem 0.75rem; + ${tokens.itemBorderRadius}: 0.5rem; + ${tokens.itemIconSize}: 1.5rem; + ${tokens.itemIconSizeTight}: 1rem; + ${tokens.itemIconMargin}: 0 0.375rem 0 0; + + ${tokens.cellPadding}: 0rem; + ${tokens.cellPaddingLeftContent}: 0rem; + ${tokens.cellPaddingContent}: 0rem; + ${tokens.cellPaddingRightContent}: 0rem; + ${tokens.cellTextboxGap}: 0.125rem; + ${tokens.cellGap}: 0.375rem; + ${tokens.cellTitleFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.cellTitleFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.cellTitleFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.cellTitleFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.cellTitleLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.cellTitleLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.fontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.fontLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.checkboxTriggerSize}: 1.25rem; + ${tokens.checkboxTriggerSizeTight}: 0.875rem; + ${tokens.checkboxTriggerBorderRadius}: 0.375rem; + ${tokens.checkboxTriggerBorderRadiusTight}: 0.25rem; + ${tokens.checkboxFillColor}: var(--text-accent); + ${tokens.checkboxIconColor}: var(--on-dark-text-primary); + ${tokens.checkboxTriggerBorderColor}: var(--text-secondary); + + ${tokens.indicatorSize}: 0.375rem; + `, + xs: css` + ${tokens.textFieldHeight}: 2rem; + ${tokens.textFieldPadding}: 0.5625rem 0.625rem 0.5625rem 0.625rem; + ${tokens.textFieldPaddingWithChips}: 0.375rem; + ${tokens.textFieldBorderRadius}: 0.5rem; + + ${tokens.textFieldLeftContentMargin}: -0.0625rem 0.25rem -0.0625rem -0.125rem; + ${tokens.textFieldRightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + + ${tokens.textFieldTextBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textFieldTextAfterMargin}: 0 0 0 0.25rem; + + ${tokens.textFieldFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelOffset}: 0.375rem; + ${tokens.textFieldLabelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLabelFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLabelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLabelFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLabelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLabelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLeftHelperOffset}: 0.25rem; + ${tokens.textFieldLeftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLeftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLeftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLeftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLeftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLeftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.textFieldLabelInnerPadding}: 0.3125rem 0 0 0; + ${tokens.textFieldContentLabelInnerPadding}: 1.0625rem 0 0.3125rem 0; + + ${tokens.textFieldIndicatorSizeInner}: 0.375rem; + ${tokens.textFieldIndicatorSizeOuter}: 0.375rem; + ${tokens.textFieldIndicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.textFieldIndicatorLabelPlacementOuter}: 0.25rem auto auto -0.625rem; + ${tokens.textFieldIndicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.textFieldIndicatorLabelPlacementOuterRight}: 0.125rem -0.6875rem auto auto; + ${tokens.textFieldClearIndicatorLabelPlacementInner}: 0.813rem auto auto -0.625rem; + ${tokens.textFieldClearIndicatorLabelPlacementInnerRight}: 0.813rem -0.625rem auto auto; + ${tokens.textFieldClearIndicatorHintInnerRight}: 0.813rem -1.875rem auto auto; + + ${tokens.textFieldChipGap}: 0.25rem; + ${tokens.textFieldChipBorderRadius}: 0.125rem; + ${tokens.textFieldChipWidth}: auto; + ${tokens.textFieldChipHeight}: 1.25rem; + ${tokens.textFieldChipPadding}: 0 0.375rem 0 0.625rem; + ${tokens.textFieldChipClearContentMarginLeft}: 0.25rem; + ${tokens.textFieldChipClearContentMarginRight}: 0rem; + ${tokens.textFieldChipCloseIconSize}: 0.75rem; + ${tokens.textFieldChipFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldChipFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldChipFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldChipFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldChipLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldChipLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.buttonArrowMargin}: 0 -0.125rem 0 0.25rem; + ${tokens.targetHeight}: 2rem; + ${tokens.buttonPadding}: 0.75rem 0 0.75rem; + + ${tokens.padding}: 0.125rem; + ${tokens.borderRadius}: 0.5rem; + + ${tokens.itemHeight}: 1rem; + ${tokens.itemPadding}: 0.5rem; + ${tokens.itemPaddingTight}: 0.25rem 0.5rem; + ${tokens.itemBorderRadius}: 0.375rem; + ${tokens.itemIconSize}: 1rem; + ${tokens.itemIconSizeTight}: 1rem; + ${tokens.itemIconMargin}: 0 0.25rem 0 0; + + ${tokens.cellPadding}: 0rem; + ${tokens.cellPaddingLeftContent}: 0rem; + ${tokens.cellPaddingContent}: 0rem; + ${tokens.cellPaddingRightContent}: 0rem; + ${tokens.cellTextboxGap}: 0.125rem; + ${tokens.cellGap}: 0.25rem; + ${tokens.cellTitleFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.cellTitleFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.cellTitleFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.cellTitleFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.cellTitleLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.cellTitleLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.fontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.fontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.fontLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.checkboxTriggerSize}: 0.875rem; + ${tokens.checkboxTriggerSizeTight}: 0.875rem; + ${tokens.checkboxTriggerBorderRadius}: 0.25rem; + ${tokens.checkboxTriggerBorderRadiusTight}: 0.25rem; + ${tokens.checkboxFillColor}: var(--text-accent); + ${tokens.checkboxIconColor}: var(--on-dark-text-primary); + ${tokens.checkboxTriggerBorderColor}: var(--text-secondary); + + ${tokens.indicatorSize}: 0.375rem; + `, + }, + labelPlacement: { + inner: css` + ${tokens.textFieldPlaceholderColor}: var(--plasma-input-label-color, var(--plasma-input-placeholder-color, var(--plasma-colors-secondary))); + ${tokens.textFieldLabelInnerFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.textFieldLabelInnerFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.textFieldLabelInnerFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.textFieldLabelInnerFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.textFieldLabelInnerLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.textFieldLabelInnerLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + outer: css``, + }, + chipView: { + default: css` + ${tokens.textFieldChipColor}: var(--inverse-text-primary); + ${tokens.textFieldChipBackground}: var(--surface-solid-default); + ${tokens.textFieldChipBackgroundHover}: var(--surface-solid-default-hover); + ${tokens.textFieldChipCloseIconColor}: var(--inverse-text-primary); + `, + secondary: css` + ${tokens.textFieldChipColor}: var(--text-primary); + ${tokens.textFieldChipBackground}: var(--surface-transparent-secondary); + ${tokens.textFieldChipBackgroundHover}: var(--surface-transparent-secondary-hover); + ${tokens.textFieldChipCloseIconColor}: var(--text-primary); + `, + accent: css` + ${tokens.textFieldChipColor}: var(--on-dark-text-primary); + ${tokens.textFieldChipBackground}: var(--surface-accent); + ${tokens.textFieldChipBackgroundHover}: var(--surface-accent-hover); + ${tokens.textFieldChipCloseIconColor}: var(--on-dark-text-primary); + `, + }, + disabled: { + true: css` + ${tokens.textFieldDisabledOpacity}: 0.4; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Select/Select.stories.tsx b/packages/plasma-giga/src/components/Select/Select.stories.tsx new file mode 100644 index 0000000000..6a9e1e565c --- /dev/null +++ b/packages/plasma-giga/src/components/Select/Select.stories.tsx @@ -0,0 +1,906 @@ +import React, { useState } from 'react'; +import type { ComponentProps } from 'react'; +import type { Meta, StoryObj } from '@storybook/react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import { IconPlasma } from '@salutejs/plasma-icons'; + +import './style.css'; + +import { Select } from './Select'; + +type StorySelectProps = ComponentProps<typeof Select> & { + enableContentLeft?: boolean; +}; + +const view = ['default', 'accent', 'secondary', 'clear', 'positive', 'warning', 'negative', 'dark', 'black', 'white']; +const size = ['xs', 's', 'm', 'l']; +const labelPlacement = ['inner', 'outer']; +const chip = ['default', 'secondary', 'accent']; +const variant = ['normal', 'tight']; + +const meta: Meta<StorySelectProps> = { + title: 'Data Entry/Select', + decorators: [InSpacingDecorator], + component: Select, + argTypes: { + target: { + control: 'select', + options: ['button-like', 'textfield-like'], + }, + size: { + control: 'select', + options: size, + }, + view: { + control: 'select', + options: view, + }, + labelPlacement: { + control: 'select', + options: labelPlacement, + if: { + arg: 'target', + eq: 'textfield-like', + }, + }, + placeholder: { + if: { + arg: 'target', + eq: 'textfield-like', + }, + }, + chipView: { + control: 'select', + options: chip, + if: { + arg: 'target', + eq: 'textfield-like', + }, + }, + variant: { + control: 'select', + options: variant, + }, + listWidth: { + control: 'text', + }, + listOverflow: { + control: 'text', + }, + listHeight: { + control: 'text', + }, + helperText: { + control: 'text', + if: { + arg: 'target', + eq: 'textfield-like', + }, + }, + enableContentLeft: { + control: 'boolean', + if: { + arg: 'target', + eq: 'textfield-like', + }, + }, + requiredPlacement: { + options: ['left', 'right'], + control: { + type: 'select', + }, + }, + required: { + control: { + type: 'boolean', + }, + if: { arg: 'optional', truthy: false }, + }, + optional: { + control: { + type: 'boolean', + }, + if: { arg: 'required', truthy: false }, + }, + chipType: { + control: 'select', + options: ['default', 'text'], + if: { arg: 'target', eq: 'textfield-like' }, + }, + }, + args: { + target: 'textfield-like', + label: 'Label', + labelPlacement: 'outer', + placeholder: 'Placeholder', + helperText: 'Helper text', + size: 'm', + view: 'default', + chipView: 'secondary', + enableContentLeft: false, + isTargetAmount: false, + variant: 'normal', + disabled: false, + optional: false, + required: false, + requiredPlacement: 'right', + chipType: 'default', + }, + parameters: { + controls: { + include: [ + 'target', + 'size', + 'view', + 'chipView', + 'enableContentLeft', + 'label', + 'labelPlacement', + 'placeholder', + 'helperText', + 'isTargetAmount', + 'closeAfterSelect', + 'variant', + 'disabled', + 'listWidth', + 'listOverflow', + 'listHeight', + 'optional', + 'required', + 'requiredPlacement', + 'chipType', + ], + }, + }, +}; + +export default meta; + +const items = [ + { + value: 'north_america', + label: 'Северная Америка', + }, + { + value: 'south_america', + label: 'Южная Америка', + items: [ + { + value: 'brazil', + label: 'Бразилия', + items: [ + { + value: 'rio_de_janeiro', + label: 'Рио-де-Жанейро', + }, + { + value: 'sao_paulo', + label: 'Сан-Паулу', + }, + ], + }, + { + value: 'argentina', + label: 'Аргентина', + items: [ + { + value: 'buenos_aires', + label: 'Буэнос-Айрес', + }, + { + value: 'cordoba', + label: 'Кордова', + }, + ], + }, + { + value: 'colombia', + label: 'Колумбия', + items: [ + { + value: 'bogota', + label: 'Богота', + }, + { + value: 'medellin', + label: 'Медельин', + }, + ], + }, + ], + }, + { + value: 'europe', + label: 'Европа', + items: [ + { + value: 'france', + label: 'Франция', + items: [ + { + value: 'paris', + label: 'Париж', + }, + { + value: 'lyon', + label: 'Лион', + }, + ], + }, + { + value: 'germany', + label: 'Германия', + items: [ + { + value: 'berlin', + label: 'Берлин', + }, + { + value: 'munich', + label: 'Мюнхен', + }, + ], + }, + { + value: 'italy', + label: 'Италия', + items: [ + { + value: 'rome', + label: 'Рим', + }, + { + value: 'milan', + label: 'Милан', + }, + ], + }, + { + value: 'spain', + label: 'Испания', + items: [ + { + value: 'madrid', + label: 'Мадрид', + }, + { + value: 'barcelona', + label: 'Барселона', + }, + ], + }, + { + value: 'united_kingdom', + label: 'Великобритания', + items: [ + { + value: 'london', + label: 'Лондон', + }, + { + value: 'manchester', + label: 'Манчестер', + }, + ], + }, + ], + }, + { + value: 'asia', + label: 'Азия', + items: [ + { + value: 'china', + label: 'Китай', + items: [ + { + value: 'beijing', + label: 'Пекин', + }, + { + value: 'shanghai', + label: 'Шанхай', + }, + ], + }, + { + value: 'japan', + label: 'Япония', + items: [ + { + value: 'tokyo', + label: 'Токио', + }, + { + value: 'osaka', + label: 'Осака', + }, + ], + }, + { + value: 'india', + label: 'Индия', + items: [ + { + value: 'delhi', + label: 'Дели', + }, + { + value: 'mumbai', + label: 'Мумбаи', + }, + ], + }, + { + value: 'south_korea', + label: 'Южная Корея', + items: [ + { + value: 'seoul', + label: 'Сеул', + }, + { + value: 'busan', + label: 'Пусан', + }, + ], + }, + { + value: 'thailand', + label: 'Таиланд', + items: [ + { + value: 'bangkok', + label: 'Бангкок', + }, + { + value: 'phuket', + label: 'Пхукет', + }, + ], + }, + ], + }, + { + value: 'africa', + label: 'Африка', + isDisabled: true, + }, +]; + +const SingleStory = (args: StorySelectProps) => { + const [value, setValue] = useState(''); + + return ( + <div style={{ width: '300px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + contentLeft={args.enableContentLeft ? <IconPlasma size="s" color="inherit" /> : undefined} + /> + </div> + ); +}; + +export const Single: StoryObj<StorySelectProps> = { + parameters: { + controls: { + exclude: ['chipView', 'isTargetAmount', 'chipType'], + }, + }, + render: (args) => <SingleStory {...args} />, + args: { + closeAfterSelect: true, + }, +}; + +const MultiselectStory = (args: StorySelectProps) => { + const [value, setValue] = useState<Array<string>>([]); + + return ( + <div style={{ width: '300px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + contentLeft={args.enableContentLeft ? <IconPlasma size="s" color="inherit" /> : undefined} + /> + </div> + ); +}; + +export const Multiselect: StoryObj<StorySelectProps> = { + args: { + multiselect: true, + closeAfterSelect: false, + }, + render: (args) => <MultiselectStory {...args} />, +}; + +const PredefinedStory = (args: StorySelectProps) => { + const [valueSingle, setValueSingle] = useState('paris'); + const [valueMultiple, setValueMultiple] = useState(['paris', 'north_america']); + + return ( + <div style={{ width: '300px' }}> + <Select + {...args} + items={items} + value={valueSingle} + onChange={setValueSingle} + contentLeft={args.enableContentLeft ? <IconPlasma size="s" color="inherit" /> : undefined} + /> + + <br /> + + <Select + {...args} + items={items} + multiselect + value={valueMultiple} + onChange={setValueMultiple} + contentLeft={args.enableContentLeft ? <IconPlasma size="s" color="inherit" /> : undefined} + /> + </div> + ); +}; + +export const Predefined: StoryObj<StorySelectProps> = { + render: (args) => <PredefinedStory {...args} />, +}; + +const CommonStory = (args: StorySelectProps) => { + const [value, setValue] = useState(''); + const [valueMultiple, setValueMultiple] = useState<Array<string>>([]); + + const { enableContentLeft } = args; + + return ( + <div className="container"> + <table> + <thead> + <tr> + <th>View ↓</th> + <th>Single Button</th> + <th>Multiple Button</th> + <th>Single Textfield</th> + <th>Multiple Textfield</th> + </tr> + </thead> + + <tbody> + <tr> + <td>Default</td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="default" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="default" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="default" + contentLeft={ + enableContentLeft ? <IconPlasma size="s" color="inherit" /> : undefined + } + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="default" + contentLeft={ + enableContentLeft ? <IconPlasma size="s" color="inherit" /> : undefined + } + /> + </div> + </td> + </tr> + <tr> + <td>Accent</td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="accent" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="accent" + target="button-like" + /> + </div> + </td> + <td /> + <td /> + </tr> + <tr> + <td>Secondary</td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="secondary" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="secondary" + target="button-like" + /> + </div> + </td> + <td /> + <td /> + </tr> + <tr> + <td>Clear</td> + + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="clear" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="clear" + target="button-like" + /> + </div> + </td> + <td /> + <td /> + </tr> + <tr> + <td>Positive</td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="positive" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="positive" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="positive" + contentLeft={ + enableContentLeft ? <IconPlasma size="s" color="inherit" /> : undefined + } + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="positive" + contentLeft={ + enableContentLeft ? <IconPlasma size="s" color="inherit" /> : undefined + } + /> + </div> + </td> + </tr> + <tr> + <td>Warning</td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="warning" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="warning" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="warning" + contentLeft={ + enableContentLeft ? <IconPlasma size="s" color="inherit" /> : undefined + } + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="warning" + contentLeft={ + enableContentLeft ? <IconPlasma size="s" color="inherit" /> : undefined + } + /> + </div> + </td> + </tr> + <tr> + <td>Negative</td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="negative" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="negative" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="negative" + contentLeft={ + enableContentLeft ? <IconPlasma size="s" color="inherit" /> : undefined + } + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="negative" + contentLeft={ + enableContentLeft ? <IconPlasma size="s" color="inherit" /> : undefined + } + /> + </div> + </td> + </tr> + <tr> + <td>Dark</td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="dark" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="dark" + target="button-like" + /> + </div> + </td> + <td /> + <td /> + </tr> + <tr> + <td>Black</td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="black" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="black" + target="button-like" + /> + </div> + </td> + <td /> + <td /> + </tr> + <tr> + <td>White</td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + items={items} + value={value} + onChange={setValue} + view="white" + target="button-like" + /> + </div> + </td> + <td> + <div style={{ width: '200px' }}> + <Select + {...args} + multiselect + items={items} + value={valueMultiple} + onChange={setValueMultiple} + view="white" + target="button-like" + /> + </div> + </td> + <td /> + <td /> + </tr> + </tbody> + </table> + </div> + ); +}; + +export const Common: StoryObj<StorySelectProps> = { + parameters: { + controls: { + exclude: ['target', 'view'], + }, + }, + argTypes: { + size: { + options: size, + control: 'select', + }, + }, + args: { + size: 'm', + }, + render: (args) => <CommonStory {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Select/Select.tsx b/packages/plasma-giga/src/components/Select/Select.tsx new file mode 100644 index 0000000000..57d92243d5 --- /dev/null +++ b/packages/plasma-giga/src/components/Select/Select.tsx @@ -0,0 +1,27 @@ +import { selectConfig, component, mergeConfig, fixedForwardRef } from '@salutejs/plasma-new-hope/styled-components'; +import type { + SelectProps as SelectPropsNewHope, + ItemOptionSelect, + DistributivePick, + DistributiveOmit, +} from '@salutejs/plasma-new-hope'; +import React, { ComponentProps, ForwardedRef } from 'react'; + +import { config } from './Select.config'; + +const mergedConfig = mergeConfig(selectConfig, config); +const SelectNewHope = component(mergedConfig); + +type SelectProps<K extends ItemOptionSelect> = DistributiveOmit< + SelectPropsNewHope<K>, + 'size' | 'view' | 'chipView' | 'disabled' +> & + DistributivePick<ComponentProps<typeof SelectNewHope>, 'size' | 'view' | 'chipView' | 'disabled'>; + +const SelectComponent = <K extends ItemOptionSelect>(props: SelectProps<K>, ref: ForwardedRef<HTMLButtonElement>) => { + return <SelectNewHope ref={ref} {...(props as any)} />; +}; + +const Select = fixedForwardRef(SelectComponent); + +export { Select }; diff --git a/packages/plasma-giga/src/components/Select/index.ts b/packages/plasma-giga/src/components/Select/index.ts new file mode 100644 index 0000000000..205709b204 --- /dev/null +++ b/packages/plasma-giga/src/components/Select/index.ts @@ -0,0 +1 @@ +export { Select } from './Select'; diff --git a/packages/plasma-giga/src/components/Select/style.css b/packages/plasma-giga/src/components/Select/style.css new file mode 100644 index 0000000000..f5fbfc2908 --- /dev/null +++ b/packages/plasma-giga/src/components/Select/style.css @@ -0,0 +1,37 @@ +.container { + width: 100%; +} + +table { + border-collapse: collapse; + box-shadow: 0 0 20px rgba(0,0,0,0.1); +} + +th, +td { + padding: 15px; +} + +th { + text-align: left; +} + +table, th, td { + border: 1px solid lightgray; + border-collapse: collapse; +} + +thead { + th { + background-color: #55608f; + color: #fff; + } +} + +tbody { + + td { + position: relative; + + } +} diff --git a/packages/plasma-giga/src/components/Sheet/Sheet.config.tsx b/packages/plasma-giga/src/components/Sheet/Sheet.config.tsx new file mode 100644 index 0000000000..ef3e87c015 --- /dev/null +++ b/packages/plasma-giga/src/components/Sheet/Sheet.config.tsx @@ -0,0 +1,17 @@ +import { css, sheetTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + }, + variations: { + view: { + default: css` + ${sheetTokens.sheetOverlayColor}: var(--overlay-soft); + ${sheetTokens.sheetOverlayWithBlurColor}: var(--overlay-blur); + ${sheetTokens.contentBackgroundColor}: var(--surface-solid-card); + ${sheetTokens.handleBackgroundColor}: var(--surface-solid-tertiary); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Sheet/Sheet.stories.tsx b/packages/plasma-giga/src/components/Sheet/Sheet.stories.tsx new file mode 100644 index 0000000000..ef4f4777ae --- /dev/null +++ b/packages/plasma-giga/src/components/Sheet/Sheet.stories.tsx @@ -0,0 +1,341 @@ +import React, { ComponentProps, useState } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import styled from 'styled-components'; + +import { Button } from '../Button'; +import { BodyM } from '../Typography'; + +import { Sheet } from '.'; +import type { SheetProps } from '.'; + +const meta: Meta<SheetProps> = { + title: 'Overlay/Sheet', + decorators: [InSpacingDecorator], + args: { + withBlur: false, + withOverlay: true, + withTransition: true, + hasHandle: true, + isHeaderFixed: false, + isFooterFixed: false, + }, +}; + +export default meta; + +type StorySheetProps = ComponentProps<typeof Sheet> & { + storyHasHeader: boolean; + storyHasFooter: boolean; +}; + +const StyledBody = styled(BodyM)` + padding-bottom: 300px; +`; + +const StoryDefault = ({ + withOverlay, + withTransition, + storyHasFooter, + isFooterFixed, + storyHasHeader, + isHeaderFixed, + hasHandle, + withBlur, +}: StorySheetProps) => { + const [opened, setOpened] = useState(false); + + return ( + <> + <Button onClick={() => setOpened(true)}>Открыть</Button> + <Sheet + opened={opened} + withOverlay={withOverlay} + withTransition={withTransition} + onClose={() => setOpened(false)} + hasHandle={hasHandle} + withBlur={withBlur} + contentHeader={ + storyHasHeader ? ( + <div> + <h4>header</h4> + </div> + ) : undefined + } + isHeaderFixed={isHeaderFixed} + contentFooter={ + storyHasFooter ? ( + <div> + <p>footer</p> + </div> + ) : undefined + } + isFooterFixed={isFooterFixed} + > + <StyledBody>body</StyledBody> + </Sheet> + </> + ); +}; + +export const Default: StoryObj<StorySheetProps> = { + args: { + storyHasHeader: true, + storyHasFooter: true, + }, + render: (args) => <StoryDefault {...args} />, +}; + +const StoryWithoutOverlay = () => { + const [opened, setOpened] = useState(false); + + return ( + <> + <Button onClick={() => setOpened(true)}>Открыть</Button> + <Sheet opened={opened} withOverlay={false} onClose={() => setOpened(false)}> + <StyledBody> + Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae tempore vitae porro laboriosam + consectetur fugiat assumenda, earum nesciunt. Distinctio minima nesciunt dicta rem quae vel illum ea + fugit molestiae dolorem? Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quos nostrum + placeat, neque repudiandae consectetur voluptates soluta et sint eum obcaecati nesciunt ullam, + dolorem labore quaerat vero maxime ab ipsa nihil. + </StyledBody> + </Sheet> + </> + ); +}; + +export const WithoutOverlay: StoryObj = { + render: () => <StoryWithoutOverlay />, +}; + +const StoryWithScroll = ({ + withOverlay, + withTransition, + storyHasFooter, + isFooterFixed, + storyHasHeader, + isHeaderFixed, + hasHandle, + withBlur, +}: StorySheetProps) => { + const [opened, setOpened] = useState(false); + + return ( + <> + <Button onClick={() => setOpened(true)}>Открыть</Button> + <Sheet + opened={opened} + withOverlay={withOverlay} + withTransition={withTransition} + onClose={() => setOpened(false)} + hasHandle={hasHandle} + withBlur={withBlur} + contentHeader={ + storyHasHeader ? ( + <div> + <h4>header</h4> + </div> + ) : undefined + } + isHeaderFixed={isHeaderFixed} + contentFooter={ + storyHasFooter ? ( + <div> + <p>footer</p> + </div> + ) : undefined + } + isFooterFixed={isFooterFixed} + > + <BodyM> + <Button onClick={() => setOpened(false)}>Закрыть</Button> + <p> + Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae tempore vitae porro laboriosam + consectetur fugiat assumenda, earum nesciunt. Distinctio minima nesciunt dicta rem quae vel + illum ea fugit molestiae dolorem? Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quos + nostrum placeat, neque repudiandae consectetur voluptates soluta et sint eum obcaecati nesciunt + ullam, dolorem labore quaerat vero maxime ab ipsa nihil. + </p> + <Button onClick={() => setOpened(false)}>Закрыть</Button> + <p> + Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae tempore vitae porro laboriosam + consectetur fugiat assumenda, earum nesciunt. Distinctio minima nesciunt dicta rem quae vel + illum ea fugit molestiae dolorem? Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quos + nostrum placeat, neque repudiandae consectetur voluptates soluta et sint eum obcaecati nesciunt + ullam, dolorem labore quaerat vero maxime ab ipsa nihil. + </p> + </BodyM> + </Sheet> + </> + ); +}; + +export const WithScroll: StoryObj<StorySheetProps> = { + args: { + storyHasHeader: true, + storyHasFooter: true, + }, + render: (args) => <StoryWithScroll {...args} />, +}; + +const StoryWithInsideScroll = ({ + withOverlay, + withTransition, + storyHasFooter, + isFooterFixed, + storyHasHeader, + isHeaderFixed, + hasHandle, + withBlur, +}: StorySheetProps) => { + const [opened, setOpened] = useState(false); + + return ( + <> + <Button onClick={() => setOpened(true)}>Открыть</Button> + <Sheet + opened={opened} + withOverlay={withOverlay} + withTransition={withTransition} + onClose={() => setOpened(false)} + hasHandle={hasHandle} + withBlur={withBlur} + contentHeader={ + storyHasHeader ? ( + <div> + <h4>header</h4> + </div> + ) : undefined + } + isHeaderFixed={isHeaderFixed} + contentFooter={ + storyHasFooter ? ( + <div> + <p>footer</p> + </div> + ) : undefined + } + isFooterFixed={isFooterFixed} + > + <p>Вложенные кнопки</p> + <div + style={{ + height: '150px', + overflowY: 'scroll', + display: 'flex', + flexDirection: 'column', + gap: '1rem', + }} + > + <Button>Кнопка 1</Button> + <Button>Кнопка 2</Button> + <Button>Кнопка 3</Button> + <Button>Кнопка 4</Button> + <Button>Кнопка 5</Button> + <Button>Кнопка 6</Button> + <Button>Кнопка 7</Button> + <Button>Кнопка 8</Button> + </div> + <BodyM>Lorem ipsum dolor sit amet consectetur adipisicing elit.</BodyM> + </Sheet> + </> + ); +}; + +export const WithInsideScroll: StoryObj<StorySheetProps> = { + args: { + storyHasHeader: true, + storyHasFooter: true, + }, + render: (args) => <StoryWithInsideScroll {...args} />, +}; + +const StoryWithDoubleScroll = ({ + withOverlay, + withTransition, + storyHasFooter, + isFooterFixed, + storyHasHeader, + isHeaderFixed, + hasHandle, + withBlur, +}: StorySheetProps) => { + const [opened, setOpened] = useState(false); + + return ( + <> + <Button onClick={() => setOpened(true)}>Открыть</Button> + <Sheet + opened={opened} + withOverlay={withOverlay} + withTransition={withTransition} + onClose={() => setOpened(false)} + hasHandle={hasHandle} + withBlur={withBlur} + contentHeader={ + storyHasHeader ? ( + <div> + <h4>header</h4> + </div> + ) : undefined + } + isHeaderFixed={isHeaderFixed} + contentFooter={ + storyHasFooter ? ( + <div> + <p>footer</p> + </div> + ) : undefined + } + isFooterFixed={isFooterFixed} + > + <BodyM> + <Button onClick={() => setOpened(false)}>Закрыть</Button> + <p>Вложенные кнопки</p> + <div + style={{ + height: '150px', + overflowY: 'scroll', + display: 'flex', + flexDirection: 'column', + gap: '1rem', + }} + > + <Button>Кнопка 1</Button> + <Button>Кнопка 2</Button> + <Button>Кнопка 3</Button> + <Button>Кнопка 4</Button> + <Button>Кнопка 5</Button> + <Button>Кнопка 6</Button> + <Button>Кнопка 7</Button> + <Button>Кнопка 8</Button> + </div> + <p> + Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae tempore vitae porro laboriosam + consectetur fugiat assumenda, earum nesciunt. Distinctio minima nesciunt dicta rem quae vel + illum ea fugit molestiae dolorem? Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quos + nostrum placeat, neque repudiandae consectetur voluptates soluta et sint eum obcaecati nesciunt + ullam, dolorem labore quaerat vero maxime ab ipsa nihil. + </p> + <Button onClick={() => setOpened(false)}>Закрыть</Button> + <p> + Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae tempore vitae porro laboriosam + consectetur fugiat assumenda, earum nesciunt. Distinctio minima nesciunt dicta rem quae vel + illum ea fugit molestiae dolorem? Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quos + nostrum placeat, neque repudiandae consectetur voluptates soluta et sint eum obcaecati nesciunt + ullam, dolorem labore quaerat vero maxime ab ipsa nihil. + </p> + </BodyM> + </Sheet> + </> + ); +}; + +export const WithDoubleScroll: StoryObj<StorySheetProps> = { + args: { + storyHasHeader: true, + storyHasFooter: true, + }, + render: (args) => <StoryWithDoubleScroll {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Sheet/Sheet.tsx b/packages/plasma-giga/src/components/Sheet/Sheet.tsx new file mode 100644 index 0000000000..17ce6d80b7 --- /dev/null +++ b/packages/plasma-giga/src/components/Sheet/Sheet.tsx @@ -0,0 +1,11 @@ +import { sheetConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Sheet.config'; + +const mergedConfig = mergeConfig(sheetConfig, config); +const SheetComponent = component(mergedConfig); + +/** + * Открывает окно-шторку поверх основного экрана. + */ +export const Sheet = SheetComponent; diff --git a/packages/plasma-giga/src/components/Sheet/index.ts b/packages/plasma-giga/src/components/Sheet/index.ts new file mode 100644 index 0000000000..f2609ddd16 --- /dev/null +++ b/packages/plasma-giga/src/components/Sheet/index.ts @@ -0,0 +1,4 @@ +export { Sheet } from './Sheet'; +export { sheetClasses } from '@salutejs/plasma-new-hope/styled-components'; + +export type { SheetProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Skeleton/LineSkeleton.config.ts b/packages/plasma-giga/src/components/Skeleton/LineSkeleton.config.ts new file mode 100644 index 0000000000..d0bc95157c --- /dev/null +++ b/packages/plasma-giga/src/components/Skeleton/LineSkeleton.config.ts @@ -0,0 +1,79 @@ +import { css, skeletonTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + size: 'bodyM', + }, + variations: { + size: { + bodyL: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-body-l-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-body-l-font-size); + `, + bodyM: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-body-m-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-body-m-font-size); + `, + bodyS: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-body-s-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-body-s-font-size); + `, + bodyXS: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-body-xs-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-body-xs-font-size); + `, + bodyXXS: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-body-xxs-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-body-xxs-font-size); + `, + dsplL: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-dspl-l-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-dspl-l-font-size); + `, + dsplM: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-dspl-m-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-dspl-m-font-size); + `, + dsplS: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-dspl-s-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-dspl-s-font-size); + `, + h1: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-h1-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-h1-font-size); + `, + h2: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-h2-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-h2-font-size); + `, + h3: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-h3-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-h3-font-size); + `, + h4: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-h4-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-h4-font-size); + `, + h5: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-h5-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-h5-font-size); + `, + textL: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-text-l-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-text-l-font-size); + `, + textM: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-text-m-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-text-m-font-size); + `, + textS: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-text-s-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-text-s-font-size); + `, + textXS: css` + ${skeletonTokens.lineHeight}: var(--plasma-typo-text-xs-line-height); + ${skeletonTokens.visibleLineHeight}: var(--plasma-typo-text-xs-font-size); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Skeleton/Skeleton.stories.tsx b/packages/plasma-giga/src/components/Skeleton/Skeleton.stories.tsx new file mode 100644 index 0000000000..ee0f7eae36 --- /dev/null +++ b/packages/plasma-giga/src/components/Skeleton/Skeleton.stories.tsx @@ -0,0 +1,116 @@ +import React from 'react'; +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import { radiuses } from '@salutejs/plasma-new-hope/styled-components'; + +import { Button as BasicButton } from '../Button/Button'; + +import { LineSkeleton, TextSkeleton, RectSkeleton, withSkeleton } from './Skeleton'; + +type StoryLineSkeletonProps = ComponentProps<typeof LineSkeleton>; +type StoryTextSkeletonProps = ComponentProps<typeof TextSkeleton>; +type StoryRectSkeletonProps = ComponentProps<typeof RectSkeleton>; +type BasicButtonProps = ComponentProps<typeof BasicButton>; + +const meta: Meta = { + title: 'Data Display/Skeleton', + decorators: [InSpacingDecorator], +}; + +export default meta; + +const roundnessKeys = Object.keys(radiuses).map((r) => String(r)); + +const textSizes = [ + 'bodyL', + 'bodyM', + 'bodyS', + 'bodyXS', + 'bodyXXS', + 'dsplL', + 'dsplM', + 'dsplS', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'textL', + 'textM', + 'textS', + 'textXS', +]; + +const Default: StoryObj = { + argTypes: { + roundness: { + options: roundnessKeys, + control: { + type: 'select', + }, + }, + }, + args: { + roundness: '16', + customGradientColor: '', + lighter: false, + }, +}; + +export const Line: StoryObj<StoryLineSkeletonProps> = { + argTypes: { + size: { + options: textSizes, + control: { + type: 'select', + }, + }, + ...Default.argTypes, + }, + args: { + size: 'bodyM', + ...Default.args, + }, + render: (args) => <LineSkeleton {...args} />, +}; + +export const Text: StoryObj<StoryTextSkeletonProps> = { + argTypes: { + size: { + options: textSizes, + control: { + type: 'select', + }, + }, + ...Default.argTypes, + }, + args: { + size: 'textM', + lines: 5, + width: '', + ...Default.args, + }, + render: (args) => <TextSkeleton {...args} />, +}; + +export const Rect: StoryObj<StoryRectSkeletonProps> = { + argTypes: { + ...Default.argTypes, + }, + args: { + width: '4rem', + height: '4rem', + ...Default.args, + }, + render: (args) => <RectSkeleton {...args} />, +}; + +const ButtonSkeleton = withSkeleton<BasicButtonProps>(BasicButton); + +export const Button: StoryObj = { + args: { + skeleton: true, + }, + render: (args) => <ButtonSkeleton view="default" text="test" {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Skeleton/Skeleton.ts b/packages/plasma-giga/src/components/Skeleton/Skeleton.ts new file mode 100644 index 0000000000..bde11d6267 --- /dev/null +++ b/packages/plasma-giga/src/components/Skeleton/Skeleton.ts @@ -0,0 +1,18 @@ +import { + component, + mergeConfig, + lineSkeletonConfig, + textSkeleton, + RectSkeleton, + withSkeleton, +} from '@salutejs/plasma-new-hope/styled-components'; + +import { config as lineSkeletonCustomConfig } from './LineSkeleton.config'; + +const mergedLineSkeletonConfig = mergeConfig(lineSkeletonConfig, lineSkeletonCustomConfig); + +export const LineSkeleton = component(mergedLineSkeletonConfig); + +export const TextSkeleton = textSkeleton(LineSkeleton); + +export { RectSkeleton, withSkeleton }; diff --git a/packages/plasma-giga/src/components/Skeleton/index.ts b/packages/plasma-giga/src/components/Skeleton/index.ts new file mode 100644 index 0000000000..87372f9d35 --- /dev/null +++ b/packages/plasma-giga/src/components/Skeleton/index.ts @@ -0,0 +1 @@ +export { LineSkeleton, TextSkeleton, RectSkeleton, withSkeleton } from './Skeleton'; diff --git a/packages/plasma-giga/src/components/Slider/Slider.component-test.tsx b/packages/plasma-giga/src/components/Slider/Slider.component-test.tsx new file mode 100644 index 0000000000..241c52c633 --- /dev/null +++ b/packages/plasma-giga/src/components/Slider/Slider.component-test.tsx @@ -0,0 +1,162 @@ +import React from 'react'; +import { mount, CypressTestDecorator, getComponent, PadMe } from '@salutejs/plasma-cy-utils'; +import { createGlobalStyle } from 'styled-components'; +import { standard as standardTypo } from '@salutejs/plasma-typo'; +import { IconMic } from '@salutejs/plasma-icons'; + +const StandardTypoStyle = createGlobalStyle(standardTypo); + +describe('plasma-web: Slider', () => { + const Slider = getComponent('Slider'); + + const CypressTestDecoratorWithTypo: FC = ({ children }) => ( + <CypressTestDecorator> + <StandardTypoStyle /> + {children} + </CypressTestDecorator> + ); + + it('simple', () => { + mount( + <CypressTestDecoratorWithTypo> + <Slider min={0} max={100} value={50} /> + <PadMe /> + <Slider min={0} max={100} value={[25, 75]} /> + </CypressTestDecoratorWithTypo>, + ); + cy.matchImageSnapshot(); + }); + + it('_view', () => { + mount( + <CypressTestDecoratorWithTypo> + <Slider value={50} min={0} max={100} view="default" /> + <PadMe /> + <Slider value={50} min={0} max={100} view="accent" /> + <PadMe /> + <Slider value={50} min={0} max={100} view="gradient" /> + </CypressTestDecoratorWithTypo>, + ); + + cy.matchImageSnapshot(); + }); + + it('_size', () => { + mount( + <CypressTestDecoratorWithTypo> + <Slider value={50} min={0} max={100} size="s" /> + <PadMe /> + <Slider value={50} min={0} max={100} size="m" /> + <PadMe /> + <Slider value={50} min={0} max={100} size="l" /> + </CypressTestDecoratorWithTypo>, + ); + cy.matchImageSnapshot(); + }); + + it('_disabled', () => { + mount( + <CypressTestDecoratorWithTypo> + <Slider value={50} min={0} max={100} /> + <PadMe /> + <Slider value={50} min={0} max={100} disabled /> + </CypressTestDecoratorWithTypo>, + ); + cy.matchImageSnapshot(); + }); + + it('_placement', () => { + mount( + <CypressTestDecoratorWithTypo> + <Slider label="Text" value={50} min={0} max={100} labelPlacement="inner" /> + <PadMe /> + <PadMe /> + <Slider label="Text" value={50} min={0} max={100} labelPlacement="outer" /> + <PadMe /> + <PadMe /> + <Slider label="Text" value={50} min={0} max={100} rangeValuesPlacement="inner" /> + <PadMe /> + <PadMe /> + <Slider label="Text" value={50} min={0} max={100} rangeValuesPlacement="outer" /> + <PadMe /> + <PadMe /> + <Slider label="Text" value={50} min={0} max={100} showRangeValues /> + <PadMe /> + <PadMe /> + <Slider label="Text" value={50} min={0} max={100} showRangeValues={false} /> + <PadMe /> + <PadMe /> + <Slider label="Text" value={50} min={0} max={100} showCurrentValue /> + <PadMe /> + <PadMe /> + <Slider label="Text" value={50} min={0} max={100} showCurrentValue={false} /> + </CypressTestDecoratorWithTypo>, + ); + cy.matchImageSnapshot(); + }); + + it('_vertical: simple', () => { + mount( + <CypressTestDecoratorWithTypo> + <div style={{ display: 'flex', height: '20rem' }}> + <Slider value={0} min={0} max={100} size="s" orientation="vertical" /> + <PadMe /> + <Slider value={50} min={0} max={100} size="m" orientation="vertical" /> + <PadMe /> + <Slider value={100} min={0} max={100} size="l" orientation="vertical" /> + </div> + </CypressTestDecoratorWithTypo>, + ); + cy.matchImageSnapshot(); + }); + + ['s', 'm', 'l'].map((size) => + it(`_vertical: sliderAlign, ${size}`, () => { + const showIcon = true; + + const props = { + value: 40, + min: 0, + max: 100, + size, + orientation: 'vertical', + label: 'Громкость', + labelContent: showIcon ? <IconMic size={size === 's' ? 'xs' : 's'} /> : null, + showCurrentValue: true, + showScale: true, + }; + + mount( + <CypressTestDecoratorWithTypo> + <div + style={{ + display: 'flex', + justifyContent: 'center', + height: '14rem', + }} + > + <Slider sliderAlign="right" {...props} /> + <div style={{ padding: '0 0.75rem' }} /> + <Slider sliderAlign="center" {...props} /> + <div style={{ padding: '0 0.75rem' }} /> + <Slider sliderAlign="left" {...props} /> + </div> + <div + style={{ + display: 'flex', + justifyContent: 'center', + marginTop: '2rem', + height: '14rem', + }} + > + <Slider sliderAlign="center" reversed {...props} /> + <div style={{ padding: '0 0.75rem' }} /> + <Slider sliderAlign="center" reversed labelReversed {...props} /> + <div style={{ padding: '0 0.75rem' }} /> + </div> + </CypressTestDecoratorWithTypo>, + ); + cy.matchImageSnapshot(); + }), + ); +}); diff --git a/packages/plasma-giga/src/components/Slider/Slider.config.ts b/packages/plasma-giga/src/components/Slider/Slider.config.ts new file mode 100644 index 0000000000..aa83d68010 --- /dev/null +++ b/packages/plasma-giga/src/components/Slider/Slider.config.ts @@ -0,0 +1,229 @@ +import { css, sliderTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + view: { + default: css` + ${sliderTokens.labelColor}: var(--text-primary); + + ${sliderTokens.rangeValueColor}: var(--text-secondary); + + ${sliderTokens.thumbBorderColor}: var(--surface-solid-tertiary); + ${sliderTokens.thumbBackgroundColor}: var(--on-light-surface-solid-card); + ${sliderTokens.thumbFocusBorderColor}: var(--surface-solid-default); + + ${sliderTokens.railBackgroundColor}: var(--surface-solid-tertiary); + + ${sliderTokens.fillColor}: var(--surface-solid-default); + + ${sliderTokens.textFieldColor}: var(--text-secondary); + ${sliderTokens.textFieldBackgroundColor}: var(--surface-transparent-primary); + ${sliderTokens.textFieldCaretColor}: var(--text-primary); + ${sliderTokens.textFieldPlaceholderColor}: var(--text-secondary); + ${sliderTokens.textFiledFocusColor}: var(--text-primary); + ${sliderTokens.textFieldActiveColor}: var(--text-primary); + `, + accent: css` + ${sliderTokens.labelColor}: var(--text-primary); + + ${sliderTokens.rangeValueColor}: var(--text-secondary); + + ${sliderTokens.thumbBorderColor}: var(--surface-solid-tertiary); + ${sliderTokens.thumbBackgroundColor}: var(--on-light-surface-solid-card); + ${sliderTokens.thumbFocusBorderColor}: var(--surface-accent); + + ${sliderTokens.railBackgroundColor}: var(--surface-solid-tertiary); + + ${sliderTokens.fillColor}: var(--surface-accent); + + ${sliderTokens.textFieldColor}: var(--text-secondary); + ${sliderTokens.textFieldBackgroundColor}: var(--surface-transparent-primary); + ${sliderTokens.textFieldCaretColor}: var(--text-primary); + ${sliderTokens.textFieldPlaceholderColor}: var(--text-secondary); + ${sliderTokens.textFiledFocusColor}: var(--text-primary); + ${sliderTokens.textFieldActiveColor}: var(--text-primary); + `, + gradient: css` + ${sliderTokens.labelColor}: var(--text-primary); + + ${sliderTokens.rangeValueColor}: var(--text-secondary); + + ${sliderTokens.thumbBorderColor}: var(--surface-solid-tertiary); + ${sliderTokens.thumbBackgroundColor}: var(--on-light-surface-solid-card); + ${sliderTokens.thumbFocusBorderColor}: var(--surface-accent-gradient); + + ${sliderTokens.railBackgroundColor}: var(--surface-solid-tertiary); + + ${sliderTokens.fillColor}: var(--surface-accent-gradient); + + ${sliderTokens.textFieldColor}: var(--text-secondary); + ${sliderTokens.textFieldBackgroundColor}: var(--surface-transparent-primary); + ${sliderTokens.textFieldCaretColor}: var(--text-primary); + ${sliderTokens.textFieldPlaceholderColor}: var(--text-secondary); + ${sliderTokens.textFiledFocusColor}: var(--text-primary); + ${sliderTokens.textFieldActiveColor}: var(--text-primary); + `, + }, + size: { + l: css` + ${sliderTokens.size}: 1.5rem; + ${sliderTokens.doubleWrapperGap}: 0.375rem; + + ${sliderTokens.labelWrapperGap}: 0.25rem; + ${sliderTokens.labelWrapperMarginBottom}: 0.25rem; + ${sliderTokens.labelWrapperMarginRight}: 0.875rem; + ${sliderTokens.labelWrapperVerticalMargin}: 1rem; + + ${sliderTokens.labelFontFamily}: var(--plasma-typo-body-l-font-family); + ${sliderTokens.labelFontSize}: var(--plasma-typo-body-l-font-size); + ${sliderTokens.labelFontStyle}: var(--plasma-typo-body-l-font-style); + ${sliderTokens.labelFontWeight}: var(--plasma-typo-body-l-font-weight); + ${sliderTokens.labelLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${sliderTokens.labelLineHeight}: var(--plasma-typo-body-l-line-height); + + ${sliderTokens.rangeValueHorizontalMargin}: 0.75rem; + ${sliderTokens.rangeValueBottomOffset}: 0.875rem; + ${sliderTokens.rangeValueHorizontalOffset}: 0.875rem; + ${sliderTokens.rangeValueVerticalMargin}: 0.75rem; + + ${sliderTokens.valueFontFamily}: var(--plasma-typo-body-m-font-family); + ${sliderTokens.valueFontSize}: var(--plasma-typo-body-m-font-size); + ${sliderTokens.valueFontStyle}: var(--plasma-typo-body-m-font-style); + ${sliderTokens.valueFontWeight}: var(--plasma-typo-body-m-font-weight); + ${sliderTokens.valueLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${sliderTokens.valueLineHeight}: var(--plasma-typo-body-m-line-height); + + ${sliderTokens.thumbSize}: 1rem; + ${sliderTokens.thumbSizeLarge}: 1.25rem; + ${sliderTokens.thumbBorder}: 0.0625rem solid; + + ${sliderTokens.currentValueTopOffset}: 1.625rem; + + ${sliderTokens.railThickness}: 0.25rem; + ${sliderTokens.railBorderRadius}: 0.125rem; + ${sliderTokens.railIndent}: 0.75rem; + + ${sliderTokens.textFieldWrapperGap}: 0.125rem; + + ${sliderTokens.textFieldHeight}: 3.5rem; + ${sliderTokens.textFieldPadding}: 1.25rem 1rem 1.25rem 1rem; + ${sliderTokens.textFieldBorderRadius}: 0.75rem; + ${sliderTokens.textFieldFontFamily}: var(--plasma-typo-body-l-font-family); + ${sliderTokens.textFieldFontSize}: var(--plasma-typo-body-l-font-size); + ${sliderTokens.textFieldFontStyle}: var(--plasma-typo-body-l-font-style); + ${sliderTokens.textFieldFontWeight}: var(--plasma-typo-body-l-font-weight); + ${sliderTokens.textFieldLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${sliderTokens.textFieldLineHeight}: var(--plasma-typo-body-l-line-height); + `, + m: css` + ${sliderTokens.size}: 1.5rem; + ${sliderTokens.doubleWrapperGap}: 0.375rem; + + ${sliderTokens.labelWrapperGap}: 0.25rem; + ${sliderTokens.labelWrapperMarginBottom}: 0.25rem; + ${sliderTokens.labelWrapperMarginRight}: 0.875rem; + ${sliderTokens.labelWrapperVerticalMargin}: 0.75rem; + + ${sliderTokens.labelFontFamily}: var(--plasma-typo-body-m-font-family); + ${sliderTokens.labelFontSize}: var(--plasma-typo-body-m-font-size); + ${sliderTokens.labelFontStyle}: var(--plasma-typo-body-m-font-style); + ${sliderTokens.labelFontWeight}: var(--plasma-typo-body-m-font-weight); + ${sliderTokens.labelLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${sliderTokens.labelLineHeight}: var(--plasma-typo-body-m-line-height); + + ${sliderTokens.rangeValueHorizontalMargin}: 0.75rem; + ${sliderTokens.rangeValueBottomOffset}: 0.75rem; + ${sliderTokens.rangeValueHorizontalOffset}: 0.875rem; + ${sliderTokens.rangeValueVerticalMargin}: 0.625rem; + + ${sliderTokens.valueFontFamily}: var(--plasma-typo-body-s-font-family); + ${sliderTokens.valueFontSize}: var(--plasma-typo-body-s-font-size); + ${sliderTokens.valueFontStyle}: var(--plasma-typo-body-s-font-style); + ${sliderTokens.valueFontWeight}: var(--plasma-typo-body-s-font-weight); + ${sliderTokens.valueLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${sliderTokens.valueLineHeight}: var(--plasma-typo-body-s-line-height); + + ${sliderTokens.thumbSize}: 1rem; + ${sliderTokens.thumbSizeLarge}: 1.25rem; + ${sliderTokens.thumbBorder}: 0.0625rem solid; + + ${sliderTokens.currentValueTopOffset}: 1.75rem; + + ${sliderTokens.railThickness}: 0.25rem; + ${sliderTokens.railBorderRadius}: 0.125rem; + ${sliderTokens.railIndent}: 0.75rem; + + ${sliderTokens.textFieldWrapperGap}: 0.125rem; + + ${sliderTokens.textFieldHeight}: 3rem; + ${sliderTokens.textFieldPadding}: 0.875rem 1rem 0.875rem 1rem; + ${sliderTokens.textFieldBorderRadius}: 0.75rem; + ${sliderTokens.textFieldFontFamily}: var(--plasma-typo-body-m-font-family); + ${sliderTokens.textFieldFontSize}: var(--plasma-typo-body-m-font-size); + ${sliderTokens.textFieldFontStyle}: var(--plasma-typo-body-m-font-style); + ${sliderTokens.textFieldFontWeight}: var(--plasma-typo-body-m-font-weight); + ${sliderTokens.textFieldLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${sliderTokens.textFieldLineHeight}: var(--plasma-typo-body-m-line-height); + `, + s: css` + ${sliderTokens.size}: 1rem; + ${sliderTokens.doubleWrapperGap}: 0.375rem; + + ${sliderTokens.labelWrapperGap}: 0.25rem; + ${sliderTokens.labelWrapperMarginBottom}: 0.25rem; + ${sliderTokens.labelWrapperMarginRight}: 0.875rem; + ${sliderTokens.labelWrapperVerticalMargin}: 0.625rem; + + ${sliderTokens.labelFontFamily}: var(--plasma-typo-body-s-font-family); + ${sliderTokens.labelFontSize}: var(--plasma-typo-body-s-font-size); + ${sliderTokens.labelFontStyle}: var(--plasma-typo-body-s-font-style); + ${sliderTokens.labelFontWeight}: var(--plasma-typo-body-s-font-weight); + ${sliderTokens.labelLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${sliderTokens.labelLineHeight}: var(--plasma-typo-body-s-line-height); + + ${sliderTokens.rangeValueHorizontalMargin}: 0.5rem; + ${sliderTokens.rangeValueBottomOffset}: 0.625rem; + ${sliderTokens.rangeValueHorizontalOffset}: 0.625rem; + ${sliderTokens.rangeValueVerticalMargin}: 0.5rem; + + ${sliderTokens.valueFontFamily}: var(--plasma-typo-body-xs-font-family); + ${sliderTokens.valueFontSize}: var(--plasma-typo-body-xs-font-size); + ${sliderTokens.valueFontStyle}: var(--plasma-typo-body-xs-font-style); + ${sliderTokens.valueFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${sliderTokens.valueLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${sliderTokens.valueLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${sliderTokens.thumbSize}: 1rem; + ${sliderTokens.thumbSizeLarge}: 1.25rem; + ${sliderTokens.thumbBorder}: 0.0625rem solid; + + ${sliderTokens.currentValueTopOffset}: 1.25rem; + + ${sliderTokens.railThickness}: 0.25rem; + ${sliderTokens.railBorderRadius}: 0.125rem; + ${sliderTokens.railIndent}: 0.75rem; + + ${sliderTokens.textFieldWrapperGap}: 0.125rem; + + ${sliderTokens.textFieldHeight}: 2.5rem; + ${sliderTokens.textFieldPadding}: 0.5rem 1rem 0.5rem 1rem; + ${sliderTokens.textFieldBorderRadius}: 0.625rem; + ${sliderTokens.textFieldFontFamily}: var(--plasma-typo-body-s-font-family); + ${sliderTokens.textFieldFontSize}: var(--plasma-typo-body-s-font-size); + ${sliderTokens.textFieldFontStyle}: var(--plasma-typo-body-s-font-style); + ${sliderTokens.textFieldFontWeight}: var(--plasma-typo-body-s-font-weight); + ${sliderTokens.textFieldLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${sliderTokens.textFieldLineHeight}: var(--plasma-typo-body-s-line-height); + `, + }, + disabled: { + true: css` + ${sliderTokens.disabledOpacity}: 0.4; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Slider/Slider.stories.tsx b/packages/plasma-giga/src/components/Slider/Slider.stories.tsx new file mode 100644 index 0000000000..09df72268b --- /dev/null +++ b/packages/plasma-giga/src/components/Slider/Slider.stories.tsx @@ -0,0 +1,265 @@ +import React, { useState } from 'react'; +import type { ComponentProps } from 'react'; +import styled from 'styled-components'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; +import type { StoryObj, Meta } from '@storybook/react'; +import { IconMic } from '@salutejs/plasma-icons'; + +import { Slider } from './Slider'; + +const sizes = ['l', 'm', 's']; +const pointerSizes = ['small', 'large', 'none']; +const views = ['default', 'accent', 'gradient']; +const sliderAligns = ['center', 'left', 'right', 'none']; +const labelPlacements = ['top', 'left']; +const scaleAligns = ['side', 'bottom']; +const orientations: Array<string> = ['vertical', 'horizontal']; +const visibility = ['always', 'hover']; + +const meta: Meta<typeof Slider> = { + title: 'Data Entry/Slider', + component: Slider, + decorators: [InSpacingDecorator], + argTypes: { + view: { + options: views, + control: { + type: 'select', + }, + }, + size: { + options: sizes, + control: { + type: 'inline-radio', + }, + }, + pointerSize: { + options: pointerSizes, + control: { + type: 'inline-radio', + }, + }, + orientation: { + options: orientations, + control: { + type: 'select', + }, + }, + ...disableProps([ + 'value', + 'onChangeCommitted', + 'onChangeTextField', + 'onBlurTextField', + 'onKeyDownTextField', + 'ariaLabel', + 'onChange', + 'fontSizeMultiplier', + 'gap', + 'settings', + 'hasHoverAnimation', + 'type', + 'labelContentLeft', + 'rangeValuesPlacement', + 'name', + 'defaultValue', + 'labelContent', + 'showRangeValues', + 'hideMinValueDiff', + 'hideMaxValueDiff', + ]), + }, +}; + +export default meta; + +type StoryProps = Omit<ComponentProps<typeof Slider>, 'value' | 'onChangeCommitted'>; +type StorySingleProps = StoryProps; + +type StorySingle = StoryObj<StorySingleProps>; +type StoryDouble = StoryObj<StoryProps>; + +const SliderWrapper = styled.div<{ isVertical?: boolean }>` + width: ${({ isVertical }) => (isVertical ? 'auto' : '25rem')}; + height: ${({ isVertical }) => (isVertical ? '25rem' : 'auto')}; +`; + +const StoryDefault = (args: StorySingleProps) => { + const [value, setValue] = useState(30); + + const onChangeCommittedHandle = (values) => { + setValue(values); + }; + + const onChangeHandle = (values) => { + setValue(values); + }; + + const { hasIcon, showIcon, orientation, labelPlacement, labelVerticalPlacement, ...rest } = args; + const isVertical = orientation === 'vertical'; + + return ( + <SliderWrapper isVertical={isVertical}> + <Slider + value={value} + orientation={orientation} + labelPlacement={labelPlacement} + labelContent={showIcon ? <IconMic size={rest.size === 's' ? 'xs' : 's'} /> : null} + onChangeCommitted={onChangeCommittedHandle} + onChange={onChangeHandle} + {...rest} + /> + </SliderWrapper> + ); +}; + +export const Default: StorySingle = { + argTypes: { + sliderAlign: { + options: sliderAligns, + control: { + type: 'inline-radio', + }, + if: { arg: 'orientation', eq: 'vertical' }, + }, + labelPlacement: { + options: labelPlacements, + control: { + type: 'inline-radio', + }, + if: { arg: 'orientation', eq: 'horizontal' }, + }, + labelReversed: { + control: { + type: 'boolean', + expanded: true, + }, + if: { arg: 'orientation', eq: 'vertical' }, + }, + scaleAlign: { + options: scaleAligns, + control: { + type: 'inline-radio', + }, + if: { arg: 'orientation', eq: 'horizontal' }, + }, + orientation: { + options: orientations, + control: { + type: 'inline-radio', + }, + }, + reversed: { + control: { + type: 'boolean', + }, + if: { arg: 'orientation', eq: 'vertical' }, + }, + pointerVisibility: { + options: visibility, + control: { + type: 'inline-radio', + }, + }, + currentValueVisibility: { + options: visibility, + control: { + type: 'inline-radio', + }, + }, + }, + args: { + view: 'default', + size: 'm', + pointerSize: 'small', + pointerVisibility: 'always', + min: 0, + max: 100, + orientation: 'horizontal', + ariaLabel: 'Цена микрофона', + multipleStepSize: 10, + label: 'Цена микрофона', + labelPlacement: 'top', + sliderAlign: 'center', + scaleAlign: 'bottom', + showScale: true, + showCurrentValue: false, + currentValueVisibility: 'always', + showIcon: true, + reversed: false, + labelReversed: false, + disabled: false, + }, + render: (args) => <StoryDefault {...args} />, +}; + +const StoryMultipleValues = (args: StoryProps) => { + const [value, setValue] = useState([10, 80]); + const sortValues = (values) => { + return values + .map((val) => { + if (val < args.min) { + return args.min; + } + if (val > args.max) { + return args.max; + } + return val; + }) + .sort((a, b) => a - b); + }; + + const onChangeHandle = (values) => { + setValue(sortValues(values)); + }; + + const onChangeCommitedHandle = (values) => { + setValue(sortValues(values)); + }; + + const onBlurTextField = (values) => { + setValue(sortValues(values)); + }; + + const onKeyDownTextField = (values, event) => { + if (event.key === 'Enter') { + setValue(sortValues(values)); + } + }; + + return ( + <SliderWrapper isVertical={args.orientation === 'vertical'}> + <Slider + value={value} + onKeyDownTextField={onKeyDownTextField} + onBlurTextField={onBlurTextField} + onChangeCommitted={onChangeCommitedHandle} + onChange={onChangeHandle} + {...args} + /> + </SliderWrapper> + ); +}; + +export const MultipleValues: StoryDouble = { + args: { + view: 'default', + size: 'm', + pointerSize: 'small', + min: 0, + max: 100, + disabled: false, + label: 'Цена товара', + ariaLabel: ['Минимальная цена товара', 'Максимальная цена товара'], + multipleStepSize: 10, + }, + argTypes: { + pointerSize: { + options: ['small', 'large'], + control: { + type: 'inline-radio', + }, + }, + ...disableProps(['orientation']), + }, + render: (args) => <StoryMultipleValues {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Slider/Slider.tsx b/packages/plasma-giga/src/components/Slider/Slider.tsx new file mode 100644 index 0000000000..9fbafc706c --- /dev/null +++ b/packages/plasma-giga/src/components/Slider/Slider.tsx @@ -0,0 +1,12 @@ +import { sliderConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Slider.config'; + +const mergedConfig = mergeConfig(sliderConfig, config); +const SliderComponent = component(mergedConfig); + +/** + * Слайдер позволяет определить числовое значение в пределах указанного промежутка. + * Можно указать два значения. + */ +export const Slider = SliderComponent; diff --git a/packages/plasma-giga/src/components/Slider/index.ts b/packages/plasma-giga/src/components/Slider/index.ts new file mode 100644 index 0000000000..737e414a4b --- /dev/null +++ b/packages/plasma-giga/src/components/Slider/index.ts @@ -0,0 +1,2 @@ +export { Slider } from './Slider'; +export type { SliderProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Spinner/Spinner.config.tsx b/packages/plasma-giga/src/components/Spinner/Spinner.config.tsx new file mode 100644 index 0000000000..4d9f2104de --- /dev/null +++ b/packages/plasma-giga/src/components/Spinner/Spinner.config.tsx @@ -0,0 +1,36 @@ +import { css } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'accent', + size: 'm', + }, + variations: { + view: { + default: css` + --plasma-spinner-color: var(--text-primary); + `, + secondary: css` + --plasma-spinner-color: var(--text-secondary); + `, + tertiary: css` + --plasma-spinner-color: var(--text-tertiary); + `, + paragraph: css` + --plasma-spinner-color: var(--text-paragraph); + `, + accent: css` + --plasma-spinner-color: var(--text-accent); + `, + positive: css` + --plasma-spinner-color: var(--text-positive); + `, + warning: css` + --plasma-spinner-color: var(--text-warning); + `, + negative: css` + --plasma-spinner-color: var(--text-negative); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Spinner/Spinner.stories.tsx b/packages/plasma-giga/src/components/Spinner/Spinner.stories.tsx new file mode 100644 index 0000000000..42d10524a5 --- /dev/null +++ b/packages/plasma-giga/src/components/Spinner/Spinner.stories.tsx @@ -0,0 +1,109 @@ +import React, { useState, useRef, useEffect, ComponentProps } from 'react'; +import styled, { css } from 'styled-components'; +import type { StoryObj, Meta } from '@storybook/react'; + +import { InSpacingDecorator, disableProps } from '../../helpers'; +import { Button } from '../Button'; +import { BodyL } from '../Typography'; + +import { Spinner } from '.'; + +const meta: Meta<typeof Spinner> = { + title: 'Data Display/Spinner', + decorators: [InSpacingDecorator], + component: Spinner, + argTypes: { + size: { + options: [8, 16, 32, 64, 96, 128], + control: { + type: 'select', + }, + }, + view: { + options: ['default', 'secondary', 'tertiary', 'paragraph', 'accent', 'positive', 'warning', 'negative'], + control: { + type: 'select', + }, + }, + ...disableProps(['color', 'theme', 'as', 'forwardedAs']), + }, +}; + +export default meta; + +type StorySpinnerProps = ComponentProps<typeof Spinner>; + +export const Default: StoryObj<StorySpinnerProps> = { + args: { + size: 32, + view: 'default', + }, +}; + +const StyledWrapper = styled.div<{ $loading?: boolean }>` + &::after { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + + content: ''; + display: none; + background: var(--surface-transparent-primary); + } + + ${({ $loading }) => + $loading && + css` + &::after { + display: block; + } + `} +`; + +const StyledSpinner = styled(Spinner)` + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; +`; + +const StoryLive = (props: StorySpinnerProps) => { + const [loading, setLoading] = useState(false); + const timeoutRef = useRef(null); + + useEffect(() => { + if (loading) { + if (timeoutRef.current) { + clearTimeout(timeoutRef.current); + } + + timeoutRef.current = setTimeout(() => setLoading(false), 10000); + } + }, [loading]); + + return ( + <StyledWrapper $loading={loading}> + <BodyL id="example-live-text" mb="8x"> + При нажатии кнопки приложение будет на 10 секунд переведено в состояние загрузки, отображая при этом + индикатор Spinner, который не может быть сфокусирован и не доступен для взаимодействия. Через 10 секунд + кнопку снова станет возможно нажать. + </BodyL> + <Button + text={loading ? 'Загрузка' : 'Нажмите'} + onClick={() => setLoading(true)} + aria-busy={loading} + aria-describedby="example-live-text" + disabled={loading} + /> + {loading && <StyledSpinner {...props} />} + </StyledWrapper> + ); +}; + +export const Live: StoryObj<StorySpinnerProps> = { + render: (args) => <StoryLive {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Spinner/Spinner.tsx b/packages/plasma-giga/src/components/Spinner/Spinner.tsx new file mode 100644 index 0000000000..22fcc86038 --- /dev/null +++ b/packages/plasma-giga/src/components/Spinner/Spinner.tsx @@ -0,0 +1,33 @@ +import type { HTMLAttributes } from 'react'; +import styled from 'styled-components'; +import { spinnerConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Spinner.config'; + +const mergedConfig = mergeConfig(spinnerConfig, config); +const SpinnerComponent = component(mergedConfig); + +export type SpinnerProps = HTMLAttributes<HTMLDivElement> & { + /** + * Размер спиннера + */ + size?: string | number; + /** + * Цвет спиннера + */ + view?: string; + /** + * Цвет спиннера + * @deprecated + */ + color?: string; + /** + * @deprecated + */ + deviceScale?: number; +}; + +/** + * Компонент для отображения индикатора загрузки. + */ +export const Spinner = styled(SpinnerComponent)``; diff --git a/packages/plasma-giga/src/components/Spinner/index.ts b/packages/plasma-giga/src/components/Spinner/index.ts new file mode 100644 index 0000000000..381fc7ae58 --- /dev/null +++ b/packages/plasma-giga/src/components/Spinner/index.ts @@ -0,0 +1,2 @@ +export { Spinner } from './Spinner'; +export type { SpinnerProps } from './Spinner'; diff --git a/packages/plasma-giga/src/components/Steps/Steps.config.ts b/packages/plasma-giga/src/components/Steps/Steps.config.ts new file mode 100644 index 0000000000..f7ffbd0792 --- /dev/null +++ b/packages/plasma-giga/src/components/Steps/Steps.config.ts @@ -0,0 +1,226 @@ +import { css, stepsTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + size: 'm', + view: 'default', + }, + variations: { + view: { + default: css` + ${tokens.activeTitleColor}: var(--text-primary); + ${tokens.activeTitleColorHover}: var(--text-primary-hover); + ${tokens.activeIndicatorBorder}: solid var(--surface-solid-default); + ${tokens.activeIndicatorColor}: var(--text-primary); + ${tokens.activeIndicatorBackground}: var(--surface-clear); + + ${tokens.completedIndicatorColor}: var(--inverse-text-primary); + ${tokens.completedIndicatorColorHover}: var(--inverse-text-primary); + ${tokens.completedIndicatorBackground}: var(--surface-solid-default); + ${tokens.completedIndicatorBackgroundHover}: var(--surface-solid-default-hover); + + ${tokens.inactiveTitleColor}: var(--text-secondary); + ${tokens.inactiveTitleColorHover}: var(--text-secondary-hover); + ${tokens.inactiveIndicatorColor}: var(--text-secondary); + ${tokens.inactiveIndicatorColorHover}: var(--text-secondary); + ${tokens.inactiveIndicatorBackground}: var(--surface-transparent-secondary); + ${tokens.inactiveIndicatorBackgroundHover}: var(--surface-transparent-secondary-hover); + + ${tokens.contentColor}: var(--text-secondary); + ${tokens.focusColor}: var(--surface-accent); + + ${tokens.disabledOpacity}: 0.4; + `, + }, + size: { + l: css` + ${tokens.indicatorSize}: 1.5rem; + ${tokens.activeIndicatorSize}: 2.25rem; + ${tokens.bulletSize}: 0.5rem; + ${tokens.activeBulletSize}: 1rem; + + ${tokens.titlePaddingTop}: 0.75rem; + ${tokens.contentPaddingTop}: 0.375rem; + ${tokens.contentSidePadding}: 2rem; + ${tokens.contentVerticalPadding}: 1.0625rem; + ${tokens.verticalContentPaddingLeft}: 0.75rem; + + ${tokens.smallIndicatorIndentHeight}: 1rem; + ${tokens.largeIndicatorIndentHeight}: 0.625rem; + ${tokens.smallBulletIndentHeight}: 1.5rem; + ${tokens.largeBulletIndentHeight}: 1.25rem; + + ${tokens.indicatorFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.indicatorFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.indicatorFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.indicatorFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.indicatorLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.indicatorLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.activeIndicatorFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.activeIndicatorFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.activeIndicatorFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.activeIndicatorFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.activeIndicatorLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.activeIndicatorLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.titleFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.titleFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.titleFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.titleFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.titleLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.titleLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.contentFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.contentFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.contentFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.contentFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.contentLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.contentLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.dividerThickness}: 0.125rem; + `, + m: css` + ${tokens.indicatorSize}: 1.5rem; + ${tokens.activeIndicatorSize}: 2.25rem; + ${tokens.bulletSize}: 0.5rem; + ${tokens.activeBulletSize}: 1rem; + + ${tokens.titlePaddingTop}: 0.625rem; + ${tokens.contentPaddingTop}: 0.375rem; + ${tokens.contentSidePadding}: 1.75rem; + ${tokens.contentVerticalPadding}: 0.875rem; + ${tokens.verticalContentPaddingLeft}: 0.75rem; + + ${tokens.smallIndicatorIndentHeight}: 0.75rem; + ${tokens.largeIndicatorIndentHeight}: 0.4375rem; + ${tokens.smallBulletIndentHeight}: 1.25rem; + ${tokens.largeBulletIndentHeight}: 1.125rem; + + ${tokens.indicatorFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.indicatorFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.indicatorFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.indicatorFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.indicatorLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.indicatorLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.activeIndicatorFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.activeIndicatorFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.activeIndicatorFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.activeIndicatorFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.activeIndicatorLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.activeIndicatorLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.titleFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.titleFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.titleFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.titleFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.titleLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.titleLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.contentFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.contentFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.contentFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.contentFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.contentLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.contentLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.dividerThickness}: 0.125rem; + `, + s: css` + ${tokens.indicatorSize}: 1.5rem; + ${tokens.activeIndicatorSize}: 1.5rem; + ${tokens.bulletSize}: 0.5rem; + ${tokens.activeBulletSize}: 1rem; + + ${tokens.titlePaddingTop}: 0.5rem; + ${tokens.contentPaddingTop}: 0.375rem; + ${tokens.contentSidePadding}: 1.5rem; + ${tokens.contentVerticalPadding}: 0.6875rem; + ${tokens.verticalContentPaddingLeft}: 0.75rem; + + ${tokens.smallIndicatorIndentHeight}: 0.5rem; + ${tokens.largeIndicatorIndentHeight}: 0.5rem; + ${tokens.smallBulletIndentHeight}: 1rem; + ${tokens.largeBulletIndentHeight}: 0.75rem; + + ${tokens.indicatorFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.indicatorFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.indicatorFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.indicatorFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.indicatorLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.indicatorLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.activeIndicatorFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.activeIndicatorFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.activeIndicatorFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.activeIndicatorFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.activeIndicatorLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.activeIndicatorLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.titleFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.titleFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.titleFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.titleFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.titleLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.titleLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.contentFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.contentFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.contentFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.contentFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.contentLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.contentLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.dividerThickness}: 0.125rem; + `, + xs: css` + ${tokens.indicatorSize}: 1.5rem; + ${tokens.activeIndicatorSize}: 1.5rem; + ${tokens.bulletSize}: 0.5rem; + ${tokens.activeBulletSize}: 1rem; + + ${tokens.titlePaddingTop}: 0.5rem; + ${tokens.contentPaddingTop}: 0.25rem; + ${tokens.contentSidePadding}: 1.5rem; + ${tokens.contentVerticalPadding}: 0.5625rem; + ${tokens.verticalContentPaddingLeft}: 0.75rem; + + ${tokens.smallIndicatorIndentHeight}: 0.25rem; + ${tokens.largeIndicatorIndentHeight}: 0.25rem; + ${tokens.smallBulletIndentHeight}: 0.75rem; + ${tokens.largeBulletIndentHeight}: 0.5rem; + + ${tokens.indicatorFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.indicatorFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.indicatorFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.indicatorFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.indicatorLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.indicatorLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.activeIndicatorFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.activeIndicatorFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.activeIndicatorFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.activeIndicatorFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.activeIndicatorLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.activeIndicatorLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.titleFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.titleFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.titleFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.titleFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.titleLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.titleLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.contentFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.contentFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.contentFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.contentFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.contentLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.contentLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.dividerThickness}: 0.125rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Steps/Steps.stories.tsx b/packages/plasma-giga/src/components/Steps/Steps.stories.tsx new file mode 100644 index 0000000000..5a23ae8fcb --- /dev/null +++ b/packages/plasma-giga/src/components/Steps/Steps.stories.tsx @@ -0,0 +1,191 @@ +import React, { useState, useEffect } from 'react'; +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; +import { IconMic } from '@salutejs/plasma-icons'; + +import { Steps } from './Steps'; + +import type { StepItemProps } from '.'; + +const meta: Meta<typeof Steps> = { + title: 'Navigation/Steps', + decorators: [InSpacingDecorator], + component: Steps, +}; + +export default meta; + +type Story = StoryObj<ComponentProps<typeof Steps>>; + +const renderIndicator = ({ status, size }) => { + let iconSize; + if (size === 'xs' || size === 's') { + iconSize = 'xs'; + } else if (status === 'active') { + iconSize = 's'; + } else { + iconSize = 'xs'; + } + + return <IconMic color="inherit" size={iconSize} />; +}; + +const DefaultStory = (args) => { + const { + maxWidth, + title, + content, + size, + indicatorType, + quantity, + hasContent, + loading, + disabled, + simple, + ...rest + } = args; + + const innerTitle = title || 'Title'; + + const [items, setItems] = useState([]); + + useEffect(() => { + const newItems = new Array(quantity).fill(null).map((_, index) => { + const indicator = index + 1; + const status = index === 0 ? 'active' : 'inactive'; + + if (simple) { + return { + indicator, + status, + }; + } + + return { + title: innerTitle, + content, + indicator, + status, + }; + }); + + setItems(newItems); + }, [loading, quantity, simple]); + + useEffect(() => { + setItems((curItems) => + curItems.map((item, index) => { + if (indicatorType === 'numbered') { + return simple + ? { ...item, indicator: index + 1 } + : { ...item, title: innerTitle, content, indicator: index + 1 }; + } + + if (indicatorType === 'bullet') { + return simple + ? { ...item, indicator: undefined } + : { ...item, title: innerTitle, content, indicator: undefined }; + } + + if (indicatorType === 'icon') { + return simple + ? { ...item, indicator: renderIndicator } + : { ...item, title: innerTitle, content, indicator: renderIndicator }; + } + + return item; + }), + ); + }, [indicatorType, innerTitle, content, simple]); + + useEffect(() => { + setItems((curItems) => curItems.map((item) => ({ ...item, disabled }))); + }, [disabled]); + + const onChange = (item: StepItemProps, index: number, prevIndex: number) => { + if (prevIndex !== undefined) { + items[prevIndex].status = 'completed'; + } + + items[index].status = 'active'; + + setItems([...items]); + }; + + return ( + <div style={{ maxWidth, height: '600px' }}> + <Steps + size={size} + items={items} + onChange={onChange} + hasLoader={loading} + hasContent={hasContent} + {...rest} + /> + </div> + ); +}; + +export const Default: Story = { + args: { + maxWidth: '100%', + quantity: 6, + size: 'm', + title: 'Title', + content: 'Content', + contentAlign: 'left', + indicatorType: 'numbered', + orientation: 'horizontal', + hasLine: true, + hasContent: 'all', + disabled: false, + loading: false, + simple: false, + }, + argTypes: { + maxWidth: { + control: { + type: 'text', + }, + }, + size: { + options: ['xs', 's', 'm', 'l'], + control: { + type: 'inline-radio', + }, + }, + orientation: { + options: ['horizontal', 'vertical'], + control: { + type: 'inline-radio', + }, + }, + contentAlign: { + options: ['left', 'center'], + control: { + type: 'inline-radio', + }, + if: { arg: 'orientation', eq: 'horizontal' }, + }, + indicatorType: { + options: ['numbered', 'bullet', 'icon'], + control: { + type: 'inline-radio', + }, + }, + hasContent: { + options: ['all', 'active', 'none'], + control: { + type: 'inline-radio', + }, + }, + simple: { + control: { + type: 'boolean', + }, + }, + ...disableProps(['view']), + }, + render: (args) => <DefaultStory {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Steps/Steps.ts b/packages/plasma-giga/src/components/Steps/Steps.ts new file mode 100644 index 0000000000..be3298db59 --- /dev/null +++ b/packages/plasma-giga/src/components/Steps/Steps.ts @@ -0,0 +1,8 @@ +import { stepsConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Steps.config'; + +const mergedConfig = mergeConfig(stepsConfig, config); +const StepsComponent = component(mergedConfig); + +export const Steps = StepsComponent; diff --git a/packages/plasma-giga/src/components/Steps/index.ts b/packages/plasma-giga/src/components/Steps/index.ts new file mode 100644 index 0000000000..6da96aab2c --- /dev/null +++ b/packages/plasma-giga/src/components/Steps/index.ts @@ -0,0 +1,2 @@ +export { Steps } from './Steps'; +export type { StepItemProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Switch/Switch.config.ts b/packages/plasma-giga/src/components/Switch/Switch.config.ts new file mode 100644 index 0000000000..14c283da5f --- /dev/null +++ b/packages/plasma-giga/src/components/Switch/Switch.config.ts @@ -0,0 +1,110 @@ +import { css, switchTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + toggleSize: 'l', + labelPosition: 'before', + focused: 'true', + }, + variations: { + size: { + s: css` + ${switchTokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${switchTokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${switchTokens.fontWeight}: var(--plasma-typo-body-s-font-weight); + ${switchTokens.lineHeight}: var(--plasma-typo-body-s-line-height); + ${switchTokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${switchTokens.letterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${switchTokens.descriptionFontFamily}: var(--plasma-typo-body-xs-font-family); + ${switchTokens.descriptionFontStyle}: var(--plasma-typo-body-xs-font-style); + ${switchTokens.descriptionFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${switchTokens.descriptionLineHeight}: var(--plasma-typo-body-xs-line-height); + ${switchTokens.descriptionFontSize}: var(--plasma-typo-body-xs-font-size); + ${switchTokens.descriptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${switchTokens.verticalGap}: 0.25rem; + ${switchTokens.labelOffset}: 0.75rem; + `, + m: css` + ${switchTokens.fontFamily}: var(--plasma-typo-body-m-font-family); + ${switchTokens.fontStyle}: var(--plasma-typo-body-m-font-style); + ${switchTokens.fontWeight}: var(--plasma-typo-body-m-font-weight); + ${switchTokens.lineHeight}: var(--plasma-typo-body-m-line-height); + ${switchTokens.fontSize}: var(--plasma-typo-body-m-font-size); + ${switchTokens.letterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${switchTokens.descriptionFontFamily}: var(--plasma-typo-body-s-font-family); + ${switchTokens.descriptionFontStyle}: var(--plasma-typo-body-s-font-style); + ${switchTokens.descriptionFontWeight}: var(--plasma-typo-body-s-font-weight); + ${switchTokens.descriptionLineHeight}: var(--plasma-typo-body-s-line-height); + ${switchTokens.descriptionFontSize}: var(--plasma-typo-body-s-font-size); + ${switchTokens.descriptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${switchTokens.verticalGap}: 0.25rem; + ${switchTokens.labelOffset}: 0.75rem; + `, + l: css` + ${switchTokens.fontFamily}: var(--plasma-typo-body-l-font-family); + ${switchTokens.fontStyle}: var(--plasma-typo-body-l-font-style); + ${switchTokens.fontWeight}: var(--plasma-typo-body-l-font-weight); + ${switchTokens.lineHeight}: var(--plasma-typo-body-l-line-height); + ${switchTokens.fontSize}: var(--plasma-typo-body-l-font-size); + ${switchTokens.letterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${switchTokens.descriptionFontFamily}: var(--plasma-typo-body-m-font-family); + ${switchTokens.descriptionFontStyle}: var(--plasma-typo-body-m-font-style); + ${switchTokens.descriptionFontWeight}: var(--plasma-typo-body-m-font-weight); + ${switchTokens.descriptionLineHeight}: var(--plasma-typo-body-m-line-height); + ${switchTokens.descriptionFontSize}: var(--plasma-typo-body-m-font-size); + ${switchTokens.descriptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${switchTokens.verticalGap}: 0.25rem; + ${switchTokens.labelOffset}: 0.75rem; + `, + }, + toggleSize: { + l: css` + ${switchTokens.trackWidth}: 2.75rem; + ${switchTokens.trackHeight}: 1.75rem; + ${switchTokens.trackBorderRadius}: calc(var(${switchTokens.trackHeight}) / 2); + ${switchTokens.thumbSize}: 1.5rem; + ${switchTokens.thumbBorderRadius}: calc(var(${switchTokens.thumbSize}) / 2); + ${switchTokens.thumbOffsetOn}: 0.125rem; + ${switchTokens.thumbOffsetOff}: 0.125rem; + ${switchTokens.thumbPressScale}: 1.25; + `, + s: css` + ${switchTokens.trackWidth}: 2rem; + ${switchTokens.trackHeight}: 1.25rem; + ${switchTokens.trackBorderRadius}: calc(var(${switchTokens.trackHeight}) / 2); + ${switchTokens.thumbSize}: 1rem; + ${switchTokens.thumbBorderRadius}: calc(var(${switchTokens.thumbSize}) / 2); + ${switchTokens.thumbOffsetOn}: 0.125rem; + ${switchTokens.thumbOffsetOff}: 0.125rem; + ${switchTokens.thumbPressScale}: 1.25; + `, + }, + view: { + default: css` + ${switchTokens.labelColor}: var(--text-primary); + ${switchTokens.descriptionColor}: var(--text-secondary); + ${switchTokens.trackBackgroundColorOn}: var(--surface-accent); + ${switchTokens.trackBackgroundColorOnHover}: var(--surface-accent-hover); + ${switchTokens.trackBackgroundColorOff}: var(--surface-transparent-tertiary); + ${switchTokens.trackBackgroundColorOffHover}: var(--surface-transparent-tertiary-hover); + ${switchTokens.trackBorderWidthOn}: 0; + ${switchTokens.trackBorderWidthOff}: 0; + ${switchTokens.thumbBackgroundColorOn}: var(--on-dark-surface-solid-default); + ${switchTokens.thumbBackgroundColorOff}: var(--on-dark-surface-solid-default); + ${switchTokens.thumbBoxShadow}: 0 1px 1px rgba(0, 0, 0, 0.11); + `, + }, + disabled: { + true: css` + ${switchTokens.disabledOpacity}: 0.4; + `, + }, + focused: { + true: css` + ${switchTokens.trackFocusColor}: var(--surface-accent); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Switch/Switch.stories.tsx b/packages/plasma-giga/src/components/Switch/Switch.stories.tsx new file mode 100644 index 0000000000..3c815340fd --- /dev/null +++ b/packages/plasma-giga/src/components/Switch/Switch.stories.tsx @@ -0,0 +1,103 @@ +import React, { useState } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import styled from 'styled-components'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; + +import { Switch } from '.'; +import type { SwitchProps } from '.'; + +const onChange = action('onChange'); +const onFocus = action('onFocus'); +const onBlur = action('onBlur'); + +const meta: Meta<SwitchProps> = { + title: 'Data Entry/Switch', + component: Switch, + decorators: [InSpacingDecorator], + argTypes: { + label: { + control: { + type: 'text', + }, + }, + description: { + control: { + type: 'text', + }, + }, + labelPosition: { + options: ['before', 'after'], + control: { type: 'select' }, + }, + size: { + control: { type: 'select' }, + }, + toggleSize: { + control: { type: 'select' }, + }, + ...disableProps([ + 'id', + 'onFocus', + 'onBlur', + 'onChange', + 'value', + 'checked', + 'focused', + 'pressed', + 'outlined', + 'theme', + 'as', + 'forwardedAs', + 'view', + 'placeholder', + 'name', + 'type', + 'readOnly', + 'required', + 'minLength', + 'maxLength', + ]), + }, + args: { + label: 'Label', + description: 'Description', + labelPosition: 'before', + }, +}; + +export default meta; + +const StyledWrapper = styled.div` + width: 13.75rem; +`; + +const StoryDefault = (args: SwitchProps) => { + const value = 0; + const [checked, setChecked] = useState(true); + + return ( + <StyledWrapper> + <Switch + value={value} + checked={checked} + onChange={(event) => { + setChecked(event.target.checked); + onChange(event); + }} + onFocus={onFocus} + onBlur={onBlur} + {...args} + /> + </StyledWrapper> + ); +}; + +export const Default: StoryObj<SwitchProps> = { + args: { + size: 'm', + toggleSize: 'l', + disabled: false, + }, + render: (args) => <StoryDefault {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Switch/Switch.tsx b/packages/plasma-giga/src/components/Switch/Switch.tsx new file mode 100644 index 0000000000..db87cda862 --- /dev/null +++ b/packages/plasma-giga/src/components/Switch/Switch.tsx @@ -0,0 +1,10 @@ +import { switchConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; +import { ComponentProps } from 'react'; + +import { config } from './Switch.config'; + +const mergedConfig = mergeConfig(switchConfig, config); +const SwitchComponent = component(mergedConfig); + +export const Switch = SwitchComponent; +export type SwitchProps = ComponentProps<typeof SwitchComponent>; diff --git a/packages/plasma-giga/src/components/Switch/index.ts b/packages/plasma-giga/src/components/Switch/index.ts new file mode 100644 index 0000000000..c33419dc39 --- /dev/null +++ b/packages/plasma-giga/src/components/Switch/index.ts @@ -0,0 +1,2 @@ +export { Switch } from './Switch'; +export type { SwitchProps } from './Switch'; diff --git a/packages/plasma-giga/src/components/Tabs/TabItem.tsx b/packages/plasma-giga/src/components/Tabs/TabItem.tsx new file mode 100644 index 0000000000..a8c2061a79 --- /dev/null +++ b/packages/plasma-giga/src/components/Tabs/TabItem.tsx @@ -0,0 +1,29 @@ +import React, { ComponentProps } from 'react'; +import { + horizontalTabItemConfig, + verticalTabItemConfig, + component, + mergeConfig, +} from '@salutejs/plasma-new-hope/styled-components'; + +import { config as horizontalConfig } from './horizontal/HorizontalTabItem.config'; +import { config as verticalConfig } from './vertical/VerticalTabItem.config'; + +const mergedHorizontalTabItemConfig = mergeConfig(horizontalTabItemConfig, horizontalConfig); +const HorizontalTabItem = component(mergedHorizontalTabItemConfig); + +const mergedVerticalTabItemConfig = mergeConfig(verticalTabItemConfig, verticalConfig); +const VerticalTabItem = component(mergedVerticalTabItemConfig); + +type TabItemProps = ComponentProps<typeof HorizontalTabItem> | ComponentProps<typeof VerticalTabItem>; + +/** + * Элемент списка, недопустимо использовать вне компонента Tabs. + */ +export const TabItem = (props: TabItemProps) => { + if (props.orientation === 'vertical') { + return <VerticalTabItem {...props} />; + } + + return <HorizontalTabItem {...props} />; +}; diff --git a/packages/plasma-giga/src/components/Tabs/Tabs.stories.tsx b/packages/plasma-giga/src/components/Tabs/Tabs.stories.tsx new file mode 100644 index 0000000000..ee9d3343f2 --- /dev/null +++ b/packages/plasma-giga/src/components/Tabs/Tabs.stories.tsx @@ -0,0 +1,751 @@ +import React, { useState } from 'react'; +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { IconPlasma } from '@salutejs/plasma-icons'; +import { disableProps, InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { Dropdown } from '../Dropdown/Dropdown'; +import { Counter } from '../Counter/Counter'; + +import { Tabs } from './Tabs'; +import { TabItem } from './TabItem'; + +const clips = ['none', 'scroll', 'showAll']; +const headerClips = ['none', 'scroll']; +const sizes = ['xs', 's', 'm', 'l'] as const; +const headerSizes = ['h5', 'h4', 'h3', 'h2', 'h1'] as const; + +type Size = typeof sizes[number]; +type HeaderSize = typeof headerSizes[number]; + +type CustomStoryTabsProps = { + itemQuantity: number; + contentLeft: string; + contentRight: string; + stretch: boolean; + helperText: string; + maxItemWidth: string; +}; + +const contentLeftOptions = ['none', 'icon']; +const contentRightOptions = ['none', 'counter', 'icon']; +const labels = ['Label', 'Middle label', 'Very long label']; + +const getContentLeft = (contentLeftOption: string, size: Size) => { + const iconSize = size === 'xs' ? 'xs' : 's'; + return contentLeftOption === 'icon' ? <IconPlasma size={iconSize} color="inherit" /> : undefined; +}; + +const getContentRight = (contentRightOption: string, size: Size) => { + const iconSize = size === 'xs' ? 'xs' : 's'; + const counterSize = size === 'xs' ? 'xxs' : 'xs'; + + switch (contentRightOption) { + case 'icon': + return <IconPlasma size={iconSize} color="inherit" />; + case 'counter': + return <Counter size={counterSize} count={1} view="positive" />; + default: + return undefined; + } +}; + +type StoryTabsProps = ComponentProps<typeof Tabs> & CustomStoryTabsProps; +type HorizontalStoryTabsProps = StoryTabsProps & { width: string }; +type VerticalStoryTabsProps = StoryTabsProps & { height: string }; + +const meta: Meta<StoryTabsProps> = { + title: 'Navigation/Tabs', + component: Tabs, + decorators: [InSpacingDecorator], + argTypes: { + contentLeft: { + options: contentLeftOptions, + control: { + type: 'select', + }, + }, + contentRight: { + options: contentRightOptions, + control: { + type: 'select', + }, + if: { arg: 'helperText', eq: '' }, + }, + maxItemWidth: { + control: { + type: 'text', + }, + if: { arg: 'stretch', truthy: false }, + }, + ...disableProps([ + 'orientation', + 'tabItemContentLeft', + 'pilled', + 'animated', + 'view', + 'as', + 'forwardedAs', + 'outsideScroll', + 'index', + ]), + }, +}; + +export default meta; + +const StoryHorizontalDefault = (props: HorizontalStoryTabsProps) => { + const { + disabled, + itemQuantity, + size, + contentLeft: contentLeftOption, + contentRight: contentRightOption, + hasDivider, + stretch, + maxItemWidth, + helperText, + clip, + } = props; + const items = Array(itemQuantity).fill(0); + const [index, setIndex] = useState(0); + + return ( + <Tabs clip={clip} view="divider" hasDivider={hasDivider} stretch={stretch} disabled={disabled} size={size}> + {items.map((_, i) => { + if (helperText !== '') { + return ( + <TabItem + key={`item:${i}`} + view="divider" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + value={helperText} + contentLeft={getContentLeft(contentLeftOption, size as Size)} + size={size as Size} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ); + } + + return ( + <TabItem + key={`item:${i}`} + view="divider" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + contentLeft={getContentLeft(contentLeftOption, size as Size)} + contentRight={getContentRight(contentRightOption, size as Size)} + size={size as Size} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ); + })} + </Tabs> + ); +}; + +const StoryHorizontalScroll = (props: HorizontalStoryTabsProps) => { + const { + disabled, + itemQuantity, + clip, + size, + contentLeft: contentLeftOption, + contentRight: contentRightOption, + hasDivider, + helperText, + width, + maxItemWidth, + } = props; + const items = Array(itemQuantity).fill(0); + const [index, setIndex] = useState(0); + + return ( + <Tabs clip={clip} view="divider" hasDivider={hasDivider} disabled={disabled} size={size} style={{ width }}> + {items.map((_, i) => { + if (helperText !== '') { + return ( + <TabItem + key={`item:${i}`} + view="divider" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + value={helperText} + contentLeft={getContentLeft(contentLeftOption, size as Size)} + size={size as Size} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ); + } + + return ( + <TabItem + key={`item:${i}`} + view="divider" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + contentLeft={getContentLeft(contentLeftOption, size as Size)} + contentRight={getContentRight(contentRightOption, size as Size)} + size={size as Size} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ); + })} + </Tabs> + ); +}; + +const StoryHorizontalShowAll = (props: HorizontalStoryTabsProps) => { + const { + disabled, + itemQuantity, + clip, + size, + contentLeft: contentLeftOption, + contentRight: contentRightOption, + hasDivider, + helperText, + maxItemWidth, + } = props; + const maxItemQuantity = 3; + const items = Array(itemQuantity).fill(0); + const [index, setIndex] = useState(0); + + const visibleItems = items.slice(0, maxItemQuantity); + const otherItems = items.slice(maxItemQuantity); + + const dropdownItems = otherItems.map((_, i) => { + const itemIndex = maxItemQuantity + i; + + return { + label: `Label${itemIndex + 1}`, + value: itemIndex, + }; + }); + + return ( + <Tabs clip={clip} view="divider" hasDivider={hasDivider} disabled={disabled} size={size}> + {visibleItems.map((_, i) => { + if (helperText !== '') { + return ( + <TabItem + key={`item:${i}`} + view="divider" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + value={helperText} + contentLeft={getContentLeft(contentLeftOption, size as Size)} + size={size as Size} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ); + } + + return ( + <TabItem + key={`item:${i}`} + view="divider" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + contentLeft={getContentLeft(contentLeftOption, size as Size)} + contentRight={getContentRight(contentRightOption, size as Size)} + size={size as Size} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ); + })} + {dropdownItems.length > 0 && ( + <div style={{ marginLeft: '1.75rem' }}> + <Dropdown + size={size as Size} + items={dropdownItems} + onItemSelect={(item) => setIndex(item.value as number)} + > + <TabItem + key="item:ShowAll" + view="divider" + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + size={size as Size} + maxItemWidth="auto" + > + ShowAll + </TabItem> + </Dropdown> + </div> + )} + </Tabs> + ); +}; + +export const HorizontalTabs: StoryObj<HorizontalStoryTabsProps> = { + args: { + size: 'xs', + disabled: false, + hasDivider: true, + helperText: '', + itemQuantity: 6, + stretch: false, + width: '15rem', + maxItemWidth: '', + }, + argTypes: { + contentLeft: { + options: contentLeftOptions, + control: { + type: 'select', + }, + }, + contentRight: { + options: contentRightOptions, + control: { + type: 'select', + }, + }, + clip: { + options: clips, + control: { + type: 'select', + }, + if: { arg: 'stretch', truthy: false }, + }, + width: { + control: { + type: 'text', + }, + if: { arg: 'clip', eq: 'scroll' }, + }, + size: { + options: sizes, + control: { + type: 'select', + }, + }, + }, + render: (args) => { + switch (args.clip) { + case 'scroll': + return <StoryHorizontalScroll {...args} />; + case 'showAll': + return <StoryHorizontalShowAll {...args} />; + default: + return <StoryHorizontalDefault {...args} />; + } + }, +}; + +const StoryVerticalDefault = (props: VerticalStoryTabsProps) => { + const { + disabled, + itemQuantity, + size, + contentLeft: contentLeftOption, + contentRight: contentRightOption, + hasDivider, + helperText, + maxItemWidth, + } = props; + const items = Array(itemQuantity).fill(0); + const [index, setIndex] = useState(0); + + return ( + <Tabs orientation="vertical" hasDivider={hasDivider} size={size as Size} disabled={disabled}> + {items.map((_, i) => { + if (helperText !== '') { + return ( + <TabItem + orientation="vertical" + key={`item:${i}`} + view="divider" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + value={helperText} + contentLeft={getContentLeft(contentLeftOption, size as Size)} + size={size as Size} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ); + } + + return ( + <TabItem + orientation="vertical" + key={`item:${i}`} + view="divider" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + contentLeft={getContentLeft(contentLeftOption, size as Size)} + contentRight={getContentRight(contentRightOption, size as Size)} + size={size as Size} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ); + })} + </Tabs> + ); +}; + +const StoryVerticalScroll = (props: VerticalStoryTabsProps) => { + const { + disabled, + itemQuantity, + clip, + size, + contentLeft: contentLeftOption, + contentRight: contentRightOption, + hasDivider, + helperText, + height, + maxItemWidth, + } = props; + const items = Array(itemQuantity).fill(0); + const [index, setIndex] = useState(0); + + return ( + <Tabs + orientation="vertical" + size={size as Size} + disabled={disabled} + clip={clip} + hasDivider={hasDivider} + style={{ height }} + > + {items.map((_, i) => { + if (helperText !== '') { + return ( + <TabItem + orientation="vertical" + key={`item:${i}`} + view="divider" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + value={helperText} + contentLeft={getContentLeft(contentLeftOption, size as Size)} + size={size as Size} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ); + } + + return ( + <TabItem + orientation="vertical" + key={`item:${i}`} + view="divider" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + contentLeft={getContentLeft(contentLeftOption, size as Size)} + contentRight={getContentRight(contentRightOption, size as Size)} + size={size as Size} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ); + })} + </Tabs> + ); +}; + +const StoryVerticalShowAll = (props: VerticalStoryTabsProps) => { + const { + disabled, + itemQuantity, + clip, + size, + contentLeft: contentLeftOption, + contentRight: contentRightOption, + hasDivider, + helperText, + maxItemWidth, + } = props; + const maxItemQuantity = 3; + const items = Array(itemQuantity).fill(0); + const [index, setIndex] = useState(0); + + const visibleItems = items.slice(0, maxItemQuantity); + const otherItems = items.slice(maxItemQuantity); + + const dropdownItems = otherItems.map((_, i) => { + const itemIndex = maxItemQuantity + i; + + return { + label: `Label${itemIndex + 1}`, + value: itemIndex, + }; + }); + + return ( + <Tabs clip={clip} orientation="vertical" size={size as Size} disabled={disabled} hasDivider={hasDivider}> + {visibleItems.map((_, i) => { + if (helperText !== '') { + return ( + <TabItem + orientation="vertical" + key={`item:${i}`} + view="divider" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + value={helperText} + contentLeft={getContentLeft(contentLeftOption, size as Size)} + size={size as Size} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ); + } + + return ( + <TabItem + orientation="vertical" + key={`item:${i}`} + view="divider" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + contentLeft={getContentLeft(contentLeftOption, size as Size)} + contentRight={getContentRight(contentRightOption, size as Size)} + size={size as Size} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ); + })} + {dropdownItems.length > 0 && ( + <Dropdown + size={size as Size} + items={dropdownItems} + onItemSelect={(item) => setIndex(item.value as number)} + placement="right" + > + <TabItem + orientation="vertical" + key="item:ShowAll" + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + size={size as Size} + maxItemWidth="auto" + > + ShowAll + </TabItem> + </Dropdown> + )} + </Tabs> + ); +}; + +export const VerticalTabs: StoryObj<VerticalStoryTabsProps> = { + args: { + size: 'xs', + disabled: false, + hasDivider: true, + itemQuantity: 6, + orientation: 'vertical', + helperText: '', + height: '10rem', + maxItemWidth: '', + }, + argTypes: { + contentLeft: { + options: contentLeftOptions, + control: { + type: 'select', + }, + }, + contentRight: { + options: contentRightOptions, + control: { + type: 'select', + }, + }, + size: { + options: sizes, + control: { + type: 'select', + }, + }, + clip: { + options: clips, + control: { + type: 'select', + }, + if: { arg: 'stretch', truthy: false }, + }, + stretch: { + table: { + disable: true, + }, + }, + height: { + control: { + type: 'text', + }, + if: { arg: 'clip', eq: 'scroll' }, + }, + }, + render: (args) => { + switch (args.clip) { + case 'scroll': + return <StoryVerticalScroll {...args} />; + case 'showAll': + return <StoryVerticalShowAll {...args} />; + default: + return <StoryVerticalDefault {...args} />; + } + }, +}; + +const StoryHeaderDefault = (props: HorizontalStoryTabsProps) => { + const { disabled, itemQuantity, size, helperText, maxItemWidth } = props; + const items = Array(itemQuantity).fill(0); + const [index, setIndex] = useState(0); + + return ( + <Tabs view="clear" disabled={disabled} size={size as HeaderSize}> + {items.map((_, i) => ( + <TabItem + key={`item:${i}`} + view="clear" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + value={helperText} + size={size as HeaderSize} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ))} + </Tabs> + ); +}; + +const StoryHeaderScroll = (props: HorizontalStoryTabsProps) => { + const { disabled, itemQuantity, size, helperText, width, maxItemWidth } = props; + const items = Array(itemQuantity).fill(0); + const [index, setIndex] = useState(0); + + return ( + <Tabs view="clear" disabled={disabled} size={size as HeaderSize} style={{ width }}> + {items.map((_, i) => ( + <TabItem + key={`item:${i}`} + view="clear" + selected={i === index} + onClick={() => !disabled && setIndex(i)} + tabIndex={!disabled ? 0 : -1} + disabled={disabled} + value={helperText} + size={size as HeaderSize} + maxItemWidth={maxItemWidth} + > + {`${labels[i % labels.length]} ${i + 1}`} + </TabItem> + ))} + </Tabs> + ); +}; + +export const HeaderTabs: StoryObj<HorizontalStoryTabsProps> = { + args: { + size: 'h5', + disabled: false, + helperText: '', + itemQuantity: 4, + width: '12rem', + maxItemWidth: '', + }, + argTypes: { + clip: { + options: headerClips, + control: { + type: 'select', + }, + }, + width: { + control: { + type: 'text', + }, + if: { arg: 'clip', eq: 'scroll' }, + }, + stretch: { + table: { + disable: true, + }, + }, + contentLeft: { + table: { + disable: true, + }, + }, + contentRight: { + table: { + disable: true, + }, + }, + hasDivider: { + table: { + disable: true, + }, + }, + size: { + options: headerSizes, + control: { + type: 'select', + }, + }, + }, + render: (args) => { + switch (args.clip) { + case 'scroll': + return <StoryHeaderScroll {...args} />; + default: + return <StoryHeaderDefault {...args} />; + } + }, +}; diff --git a/packages/plasma-giga/src/components/Tabs/Tabs.tsx b/packages/plasma-giga/src/components/Tabs/Tabs.tsx new file mode 100644 index 0000000000..9475451e71 --- /dev/null +++ b/packages/plasma-giga/src/components/Tabs/Tabs.tsx @@ -0,0 +1,29 @@ +import React, { ComponentProps } from 'react'; +import { + horizontalTabsConfig, + verticalTabsConfig, + component, + mergeConfig, +} from '@salutejs/plasma-new-hope/styled-components'; + +import { config as horizontalConfig } from './horizontal/HorizontalTabs.config'; +import { config as verticalConfig } from './vertical/VerticalTabs.config'; + +const mergedHorizontalTabsConfig = mergeConfig(horizontalTabsConfig, horizontalConfig); +const mergedVerticalTabsConfig = mergeConfig(verticalTabsConfig, verticalConfig); + +const HorizontalTabs = component(mergedHorizontalTabsConfig); +const VerticalTabs = component(mergedVerticalTabsConfig); + +type TabsProps = ComponentProps<typeof HorizontalTabs> | ComponentProps<typeof VerticalTabs>; + +/** + * Контейнер вкладок, основной компонент для пользовательской сборки вкладок. + */ +export const Tabs = (props: TabsProps) => { + if (props.orientation === 'vertical') { + return <VerticalTabs {...props} />; + } + + return <HorizontalTabs {...props} />; +}; diff --git a/packages/plasma-giga/src/components/Tabs/TabsController.tsx b/packages/plasma-giga/src/components/Tabs/TabsController.tsx new file mode 100644 index 0000000000..9de85c85d0 --- /dev/null +++ b/packages/plasma-giga/src/components/Tabs/TabsController.tsx @@ -0,0 +1,28 @@ +import { + createTabsController, + horizontalTabItemConfig as horizontalBaseTabItemConfig, + horizontalTabsConfig as horizontalBaseTabsConfig, + HorizontalTabItemProps, + HorizontalTabsProps, + component, + mergeConfig, +} from '@salutejs/plasma-new-hope/styled-components'; +import { ForwardRefExoticComponent, RefAttributes } from 'react'; + +import { config as horizontalTabsConfig } from './horizontal/HorizontalTabs.config'; +import { config as horizontalTabItemConfig } from './horizontal/HorizontalTabItem.config'; + +const mergedHorizontalTabsConfig = mergeConfig(horizontalBaseTabsConfig, horizontalTabsConfig); +const HorizontalTabs = component(mergedHorizontalTabsConfig); + +const mergedHorizontalTabItemConfig = mergeConfig(horizontalBaseTabItemConfig, horizontalTabItemConfig); +const HorizontalTabItem = component(mergedHorizontalTabItemConfig); + +/** + * Контроллер вкладок. + * Позволяет использовать клавиши ArrowLeft, ArrowRight, Home, End для навигации по вкладкам. + */ +export const TabsController = createTabsController( + HorizontalTabs as ForwardRefExoticComponent<HorizontalTabsProps & RefAttributes<HTMLDivElement>>, + HorizontalTabItem as ForwardRefExoticComponent<HorizontalTabItemProps & RefAttributes<HTMLDivElement>>, +); diff --git a/packages/plasma-giga/src/components/Tabs/horizontal/HorizontalTabItem.config.ts b/packages/plasma-giga/src/components/Tabs/horizontal/HorizontalTabItem.config.ts new file mode 100644 index 0000000000..a92aa6ab0c --- /dev/null +++ b/packages/plasma-giga/src/components/Tabs/horizontal/HorizontalTabItem.config.ts @@ -0,0 +1,272 @@ +import { css, tabsTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'secondary', + size: 'l', + }, + variations: { + view: { + clear: css` + ${tabsTokens.itemColor}: var(--text-secondary); + ${tabsTokens.itemValueColor}: var(--text-tertiary); + ${tabsTokens.itemBackgroundColor}: transparent; + ${tabsTokens.itemColorHover}: var(--text-secondary-hover); + ${tabsTokens.itemValueColorHover}: var(--text-secondary); + ${tabsTokens.itemColorActive}: var(--text-secondary-active); + ${tabsTokens.itemValueColorActive}: var(--text-secondary); + ${tabsTokens.itemBackgroundColorHover}: transparent; + ${tabsTokens.itemSelectedColor}: var(--text-primary); + ${tabsTokens.itemSelectedValueColor}: var(--text-secondary); + ${tabsTokens.itemSelectedBackgroundColor}: transparent; + ${tabsTokens.itemSelectedColorHover}: var(--text-primary); + ${tabsTokens.itemSelectedValueColorHover}: var(--text-secondary); + ${tabsTokens.itemSelectedBackgroundColorHover}: transparent; + ${tabsTokens.itemBackgroundTransition}: background-color 0.3s ease-in-out; + + ${tabsTokens.itemPaddingClear}: 0; + ${tabsTokens.itemContentPaddingClear}: 0; + + ${tabsTokens.outlineFocusColor}: var(--surface-accent); + + ${tabsTokens.itemSelectedDividerHeight}: 0rem; + ${tabsTokens.itemSelectedDividerColor}: var(--text-primary); + ${tabsTokens.itemSelectedDividerColorHover}: var(--text-primary); + `, + secondary: css` + ${tabsTokens.itemColor}: var(--text-primary); + ${tabsTokens.itemValueColor}: var(--text-secondary); + ${tabsTokens.itemBackgroundColor}: transparent; + ${tabsTokens.itemColorHover}: var(--text-secondary-hover); + ${tabsTokens.itemValueColorHover}: var(--text-secondary); + ${tabsTokens.itemColorActive}: var(--text-secondary-active); + ${tabsTokens.itemValueColorActive}: var(--text-secondary); + ${tabsTokens.itemBackgroundColorHover}: transparent; + ${tabsTokens.itemSelectedColor}: var(--text-primary); + ${tabsTokens.itemSelectedValueColor}: var(--text-secondary); + ${tabsTokens.itemSelectedBackgroundColor}: var(--surface-transparent-card); + ${tabsTokens.itemSelectedColorHover}: var(--text-primary); + ${tabsTokens.itemSelectedValueColorHover}: var(--text-secondary); + ${tabsTokens.itemSelectedBackgroundColorHover}: var(--surface-transparent-card); + ${tabsTokens.itemBackgroundTransition}: background-color 0.3s ease-in-out; + + ${tabsTokens.itemMarginLeftFilled}: 0.125rem; + + ${tabsTokens.outlineFocusColor}: var(--surface-accent); + + ${tabsTokens.itemSelectedDividerHeight}: 0rem; + ${tabsTokens.itemSelectedDividerColor}: var(--text-primary); + ${tabsTokens.itemSelectedDividerColorHover}: var(--text-primary); + `, + divider: css` + ${tabsTokens.itemColor}: var(--text-secondary); + ${tabsTokens.itemValueColor}: var(--text-tertiary); + ${tabsTokens.itemBackgroundColor}: transparent; + ${tabsTokens.itemColorHover}: var(--text-secondary-hover); + ${tabsTokens.itemValueColorHover}: var(--text-secondary); + ${tabsTokens.itemColorActive}: var(--text-secondary-active); + ${tabsTokens.itemValueColorActive}: var(--text-secondary); + ${tabsTokens.itemBackgroundColorHover}: transparent; + ${tabsTokens.itemSelectedColor}: var(--text-primary); + ${tabsTokens.itemSelectedValueColor}: var(--text-secondary); + ${tabsTokens.itemSelectedBackgroundColor}: transparent; + ${tabsTokens.itemSelectedColorHover}: var(--text-primary); + ${tabsTokens.itemSelectedValueColorHover}: var(--text-secondary); + ${tabsTokens.itemSelectedBackgroundColorHover}: transparent; + ${tabsTokens.itemBackgroundTransition}: background-color 0.3s ease-in-out; + + ${tabsTokens.itemPaddingClear}: 0; + ${tabsTokens.itemContentPaddingClear}: 0; + + ${tabsTokens.outlineFocusColor}: var(--surface-accent); + + ${tabsTokens.itemSelectedDividerHeight}: 0.125rem; + ${tabsTokens.itemSelectedDividerColor}: var(--text-primary); + ${tabsTokens.itemSelectedDividerColorHover}: var(--text-primary); + `, + default: css` + ${tabsTokens.itemColor}: var(--text-primary); + ${tabsTokens.itemValueColor}: var(--text-secondary); + ${tabsTokens.itemBackgroundColor}: transparent; + ${tabsTokens.itemColorHover}: var(--text-secondary-hover); + ${tabsTokens.itemValueColorHover}: var(--text-secondary); + ${tabsTokens.itemColorActive}: var(--text-secondary-active); + ${tabsTokens.itemValueColorActive}: var(--text-secondary); + ${tabsTokens.itemBackgroundColorHover}: transparent; + ${tabsTokens.itemSelectedColor}: var(--inverse-text-primary); + ${tabsTokens.itemSelectedValueColor}: var(--on-dark-text-secondary); + ${tabsTokens.itemSelectedBackgroundColor}: var(--surface-solid-default); + ${tabsTokens.itemSelectedColorHover}: var(--inverse-text-primary); + ${tabsTokens.itemSelectedValueColorHover}: var(--on-dark-text-secondary); + ${tabsTokens.itemSelectedBackgroundColorHover}: var(--surface-solid-default); + ${tabsTokens.itemBackgroundTransition}: background-color 0.3s ease-in-out; + + ${tabsTokens.itemMarginLeftFilled}: 0.125rem; + + ${tabsTokens.outlineFocusColor}: var(--surface-accent); + + ${tabsTokens.itemSelectedDividerHeight}: 0rem; + ${tabsTokens.itemSelectedDividerColor}: var(--text-primary); + ${tabsTokens.itemSelectedDividerColorHover}: var(--text-primary); + `, + }, + size: { + xs: css` + ${tabsTokens.itemBorderRadius}: 0.375rem; + ${tabsTokens.itemWidth}: auto; + ${tabsTokens.itemHeight}: 2rem; + ${tabsTokens.itemPadding}: 0 0.5rem; + ${tabsTokens.itemPaddingPilled}: 0 0.375rem; + ${tabsTokens.itemMarginLeft}: 1.75rem; + ${tabsTokens.itemContentGap}: 0.25rem; + ${tabsTokens.itemContentPadding}: 0.125rem; + + ${tabsTokens.fontFamily}: var(--plasma-typo-body-xs-font-family); + ${tabsTokens.fontSize}: var(--plasma-typo-body-xs-font-size); + ${tabsTokens.fontStyle}: var(--plasma-typo-body-xs-font-style); + ${tabsTokens.fontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tabsTokens.letterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tabsTokens.lineHeight}: var(--plasma-typo-body-xs-line-height); + `, + s: css` + ${tabsTokens.itemBorderRadius}: 0.5rem; + ${tabsTokens.itemWidth}: auto; + ${tabsTokens.itemHeight}: 2.5rem; + ${tabsTokens.itemPadding}: 0 0.625rem; + ${tabsTokens.itemPaddingPilled}: 0 0.5rem; + ${tabsTokens.itemMarginLeft}: 1.75rem; + ${tabsTokens.itemContentGap}: 0.25rem; + ${tabsTokens.itemContentPadding}: 0.125rem; + + ${tabsTokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${tabsTokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${tabsTokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${tabsTokens.fontWeight}: var(--plasma-typo-body-s-font-weight); + ${tabsTokens.letterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tabsTokens.lineHeight}: var(--plasma-typo-body-s-line-height); + `, + m: css` + ${tabsTokens.itemBorderRadius}: 0.625rem; + ${tabsTokens.itemWidth}: auto; + ${tabsTokens.itemHeight}: 3rem; + ${tabsTokens.itemPadding}: 0 0.625rem; + ${tabsTokens.itemPaddingPilled}: 0 0.5rem; + ${tabsTokens.itemMarginLeft}: 1.75rem; + ${tabsTokens.itemContentGap}: 0.375rem; + ${tabsTokens.itemContentPadding}: 0.125rem; + + ${tabsTokens.fontFamily}: var(--plasma-typo-body-m-font-family); + ${tabsTokens.fontSize}: var(--plasma-typo-body-m-font-size); + ${tabsTokens.fontStyle}: var(--plasma-typo-body-m-font-style); + ${tabsTokens.fontWeight}: var(--plasma-typo-body-m-font-weight); + ${tabsTokens.letterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tabsTokens.lineHeight}: var(--plasma-typo-body-m-line-height); + `, + l: css` + ${tabsTokens.itemBorderRadius}: 0.75rem; + ${tabsTokens.itemWidth}: auto; + ${tabsTokens.itemHeight}: 3.5rem; + ${tabsTokens.itemPadding}: 0 0.875rem; + ${tabsTokens.itemPaddingPilled}: 0 0.75rem; + ${tabsTokens.itemMarginLeft}: 1.75rem; + ${tabsTokens.itemContentGap}: 0.5rem; + ${tabsTokens.itemContentPadding}: 0.125rem; + + ${tabsTokens.fontFamily}: var(--plasma-typo-body-l-font-family); + ${tabsTokens.fontSize}: var(--plasma-typo-body-l-font-size); + ${tabsTokens.fontStyle}: var(--plasma-typo-body-l-font-style); + ${tabsTokens.fontWeight}: var(--plasma-typo-body-l-font-weight); + ${tabsTokens.letterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tabsTokens.lineHeight}: var(--plasma-typo-body-l-line-height); + `, + h5: css` + ${tabsTokens.itemBorderRadius}: 0.375rem; + ${tabsTokens.itemWidth}: auto; + ${tabsTokens.itemHeight}: 3rem; + ${tabsTokens.itemPadding}: 0rem; + ${tabsTokens.itemMarginLeft}: 1.75rem; + ${tabsTokens.itemContentGap}: 0.625rem; + + ${tabsTokens.fontFamily}: var(--plasma-typo-h5-font-family); + ${tabsTokens.fontSize}: var(--plasma-typo-h5-font-size); + ${tabsTokens.fontStyle}: var(--plasma-typo-h5-font-style); + ${tabsTokens.fontWeight}: var(--plasma-typo-h5-font-weight); + ${tabsTokens.letterSpacing}: var(--plasma-typo-h5-letter-spacing); + ${tabsTokens.lineHeight}: var(--plasma-typo-h5-line-height); + `, + h4: css` + ${tabsTokens.itemBorderRadius}: 0.375rem; + ${tabsTokens.itemWidth}: auto; + ${tabsTokens.itemHeight}: 3.25rem; + ${tabsTokens.itemPadding}: 0rem; + ${tabsTokens.itemMarginLeft}: 2rem; + ${tabsTokens.itemContentGap}: 0.625rem; + + ${tabsTokens.fontFamily}: var(--plasma-typo-h4-font-family); + ${tabsTokens.fontSize}: var(--plasma-typo-h4-font-size); + ${tabsTokens.fontStyle}: var(--plasma-typo-h4-font-style); + ${tabsTokens.fontWeight}: var(--plasma-typo-h4-font-weight); + ${tabsTokens.letterSpacing}: var(--plasma-typo-h4-letter-spacing); + ${tabsTokens.lineHeight}: var(--plasma-typo-h4-line-height); + `, + h3: css` + ${tabsTokens.itemBorderRadius}: 0.5rem; + ${tabsTokens.itemWidth}: auto; + ${tabsTokens.itemHeight}: 3.875rem; + ${tabsTokens.itemPadding}: 0rem; + ${tabsTokens.itemMarginLeft}: 2.25rem; + ${tabsTokens.itemContentGap}: 0.75rem; + + ${tabsTokens.fontFamily}: var(--plasma-typo-h3-font-family); + ${tabsTokens.fontSize}: var(--plasma-typo-h3-font-size); + ${tabsTokens.fontStyle}: var(--plasma-typo-h3-font-style); + ${tabsTokens.fontWeight}: var(--plasma-typo-h3-font-weight); + ${tabsTokens.letterSpacing}: var(--plasma-typo-h3-letter-spacing); + ${tabsTokens.lineHeight}: var(--plasma-typo-h3-line-height); + `, + h2: css` + ${tabsTokens.itemBorderRadius}: 0.625rem; + ${tabsTokens.itemWidth}: auto; + ${tabsTokens.itemHeight}: 4.5rem; + ${tabsTokens.itemPadding}: 0rem; + ${tabsTokens.itemMarginLeft}: 2.5rem; + ${tabsTokens.itemContentGap}: 0.875rem; + + ${tabsTokens.fontFamily}: var(--plasma-typo-h2-font-family); + ${tabsTokens.fontSize}: var(--plasma-typo-h2-font-size); + ${tabsTokens.fontStyle}: var(--plasma-typo-h2-font-style); + ${tabsTokens.fontWeight}: var(--plasma-typo-h2-font-weight); + ${tabsTokens.letterSpacing}: var(--plasma-typo-h2-letter-spacing); + ${tabsTokens.lineHeight}: var(--plasma-typo-h2-line-height); + `, + h1: css` + ${tabsTokens.itemBorderRadius}: 0.75rem; + ${tabsTokens.itemWidth}: auto; + ${tabsTokens.itemHeight}: 5.75rem; + ${tabsTokens.itemPadding}: 0rem; + ${tabsTokens.itemMarginLeft}: 3.5rem; + ${tabsTokens.itemContentGap}: 1rem; + + ${tabsTokens.fontFamily}: var(--plasma-typo-h1-font-family); + ${tabsTokens.fontSize}: var(--plasma-typo-h1-font-size); + ${tabsTokens.fontStyle}: var(--plasma-typo-h1-font-style); + ${tabsTokens.fontWeight}: var(--plasma-typo-h1-font-weight); + ${tabsTokens.letterSpacing}: var(--plasma-typo-h1-letter-spacing); + ${tabsTokens.lineHeight}: var(--plasma-typo-h1-line-height); + `, + }, + disabled: { + true: css` + ${tabsTokens.disabledOpacity}: 0.4; + `, + }, + pilled: { + true: css` + ${tabsTokens.itemPilledBorderRadius}: 1.5rem; + `, + }, + truncate: { + true: css``, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Tabs/horizontal/HorizontalTabs.config.ts b/packages/plasma-giga/src/components/Tabs/horizontal/HorizontalTabs.config.ts new file mode 100644 index 0000000000..4be9690610 --- /dev/null +++ b/packages/plasma-giga/src/components/Tabs/horizontal/HorizontalTabs.config.ts @@ -0,0 +1,125 @@ +import { css, tabsTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'filled', + size: 'l', + }, + variations: { + view: { + clear: css` + ${tabsTokens.arrowColor}: var(--text-secondary); + ${tabsTokens.arrowColorHover}: var(--text-secondary-hover); + ${tabsTokens.arrowColorActive}: var(---text-secondary-active); + ${tabsTokens.tabsBackgroundColor}: transparent; + ${tabsTokens.outlineFocusColor}: var(--surface-accent); + + ${tabsTokens.tabsDividerHeight}: 0rem; + ${tabsTokens.tabsDividerColor}: transparent; + ${tabsTokens.tabsDividerBorderRadius}: 0rem; + `, + filled: css` + ${tabsTokens.arrowColor}: var(--text-secondary); + ${tabsTokens.arrowColorHover}: var(--text-secondary-hover); + ${tabsTokens.arrowColorActive}: var(---text-secondary-active); + ${tabsTokens.tabsBackgroundColor}: var(--surface-transparent-primary); + ${tabsTokens.outlineFocusColor}: var(--surface-accent); + + ${tabsTokens.tabsDividerHeight}: 0rem; + ${tabsTokens.tabsDividerColor}: transparent; + ${tabsTokens.tabsDividerBorderRadius}: 0rem; + `, + divider: css` + ${tabsTokens.arrowColor}: var(--text-secondary); + ${tabsTokens.arrowColorHover}: var(--text-secondary-hover); + ${tabsTokens.arrowColorActive}: var(---text-secondary-active); + ${tabsTokens.tabsBackgroundColor}: transparent; + ${tabsTokens.outlineFocusColor}: var(--surface-accent); + + ${tabsTokens.tabsDividerHeight}: 0.0625rem; + ${tabsTokens.tabsDividerColor}: var(--surface-transparent-tertiary); + ${tabsTokens.tabsDividerBorderRadius}: 0.0625rem; + `, + }, + size: { + xs: css` + ${tabsTokens.tabsBorderRadius}: 0.5rem; + ${tabsTokens.tabsWidth}: fit-content; + ${tabsTokens.tabsHeight}: auto; + ${tabsTokens.arrowInnerPadding}: 0rem; + ${tabsTokens.arrowOuterPadding}: 0.125rem; + `, + s: css` + ${tabsTokens.tabsBorderRadius}: 0.625rem; + ${tabsTokens.tabsWidth}: fit-content; + ${tabsTokens.tabsHeight}: auto; + ${tabsTokens.arrowInnerPadding}: 0rem; + ${tabsTokens.arrowOuterPadding}: 0.25rem; + `, + m: css` + ${tabsTokens.tabsBorderRadius}: 0.75rem; + ${tabsTokens.tabsWidth}: fit-content; + ${tabsTokens.tabsHeight}: auto; + ${tabsTokens.arrowInnerPadding}: 0rem; + ${tabsTokens.arrowOuterPadding}: 0.625rem; + `, + l: css` + ${tabsTokens.tabsBorderRadius}: 0.875rem; + ${tabsTokens.tabsWidth}: fit-content; + ${tabsTokens.tabsHeight}: auto; + ${tabsTokens.arrowInnerPadding}: 0rem; + ${tabsTokens.arrowOuterPadding}: 0.75rem; + `, + h5: css` + ${tabsTokens.tabsBorderRadius}: 0.5rem; + ${tabsTokens.tabsWidth}: fit-content; + ${tabsTokens.tabsHeight}: auto; + ${tabsTokens.arrowInnerPadding}: 0.25rem; + ${tabsTokens.arrowOuterPadding}: 0rem; + `, + h4: css` + ${tabsTokens.tabsBorderRadius}: 0.5rem; + ${tabsTokens.tabsWidth}: fit-content; + ${tabsTokens.tabsHeight}: auto; + ${tabsTokens.arrowInnerPadding}: 0.25rem; + ${tabsTokens.arrowOuterPadding}: 0rem; + `, + h3: css` + ${tabsTokens.tabsBorderRadius}: 0.625rem; + ${tabsTokens.tabsWidth}: fit-content; + ${tabsTokens.tabsHeight}: auto; + ${tabsTokens.arrowInnerPadding}: 0.375rem; + ${tabsTokens.arrowOuterPadding}: 0rem; + `, + h2: css` + ${tabsTokens.tabsBorderRadius}: 0.75rem; + ${tabsTokens.tabsWidth}: fit-content; + ${tabsTokens.tabsHeight}: auto; + ${tabsTokens.arrowInnerPadding}: 0.5rem; + ${tabsTokens.arrowOuterPadding}: 0rem; + `, + h1: css` + ${tabsTokens.tabsBorderRadius}: 0.75rem; + ${tabsTokens.tabsWidth}: fit-content; + ${tabsTokens.tabsHeight}: auto; + ${tabsTokens.arrowInnerPadding}: 1rem; + ${tabsTokens.arrowOuterPadding}: 0rem; + `, + }, + stretch: { + true: css` + ${tabsTokens.containerWidth}: 100%; + `, + }, + disabled: { + true: css` + ${tabsTokens.disabledOpacity}: 0.4; + `, + }, + pilled: { + true: css` + ${tabsTokens.tabsPilledBorderRadius}: 1.625rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Tabs/index.ts b/packages/plasma-giga/src/components/Tabs/index.ts new file mode 100644 index 0000000000..c6c864a9df --- /dev/null +++ b/packages/plasma-giga/src/components/Tabs/index.ts @@ -0,0 +1,6 @@ +export { TabsController } from './TabsController'; +export { TabItemRefs, TabsContext } from '@salutejs/plasma-new-hope/styled-components'; +export type { TabItemProps, TabsProps, TabsControllerProps } from '@salutejs/plasma-new-hope/styled-components'; + +export { Tabs } from './Tabs'; +export { TabItem } from './TabItem'; diff --git a/packages/plasma-giga/src/components/Tabs/vertical/VerticalTabItem.config.ts b/packages/plasma-giga/src/components/Tabs/vertical/VerticalTabItem.config.ts new file mode 100644 index 0000000000..ff5619391e --- /dev/null +++ b/packages/plasma-giga/src/components/Tabs/vertical/VerticalTabItem.config.ts @@ -0,0 +1,121 @@ +import { css, tabsTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'divider', + size: 'l', + }, + variations: { + view: { + divider: css` + ${tabsTokens.itemColor}: var(--text-secondary); + ${tabsTokens.itemValueColor}: var(--text-tertiary); + ${tabsTokens.itemBackgroundColor}: transparent; + ${tabsTokens.itemColorHover}: var(--text-secondary-hover); + ${tabsTokens.itemValueColorHover}: var(--text-secondary); + ${tabsTokens.itemColorActive}: var(--text-secondary-active); + ${tabsTokens.itemValueColorActive}: var(--text-secondary); + ${tabsTokens.itemBackgroundColorHover}: transparent; + ${tabsTokens.itemSelectedColor}: var(--text-primary); + ${tabsTokens.itemSelectedValueColor}: var(--text-secondary); + ${tabsTokens.itemSelectedBackgroundColor}: transparent; + ${tabsTokens.itemSelectedColorHover}: var(--text-primary); + ${tabsTokens.itemSelectedValueColorHover}: var(--text-secondary); + ${tabsTokens.itemSelectedBackgroundColorHover}: transparent; + ${tabsTokens.itemBackgroundTransition}: background-color 0.3s ease-in-out; + + ${tabsTokens.itemPaddingClear}: 0; + ${tabsTokens.itemContentPaddingClear}: 0; + + ${tabsTokens.outlineFocusColor}: var(--surface-accent); + + ${tabsTokens.itemSelectedDividerWidth}: 0.125rem; + ${tabsTokens.itemSelectedDividerHeight}: 0.125rem; + ${tabsTokens.itemSelectedDividerColor}: var(--text-primary); + ${tabsTokens.itemSelectedDividerColorHover}: var(--text-primary); + `, + }, + size: { + xs: css` + ${tabsTokens.itemBorderRadius}: 0.375rem; + ${tabsTokens.itemWidth}: auto; + ${tabsTokens.itemHeight}: 2rem; + ${tabsTokens.itemPadding}: 0 0.5rem; + ${tabsTokens.itemPaddingPilled}: 0 0.375rem; + ${tabsTokens.itemPaddingOrientationVertical}: 0.5rem 0.625rem; + ${tabsTokens.itemMarginLeft}: 0.625rem; + ${tabsTokens.itemContentGap}: 0.25rem; + ${tabsTokens.itemContentPadding}: 0.125rem; + + ${tabsTokens.fontFamily}: var(--plasma-typo-body-xs-font-family); + ${tabsTokens.fontSize}: var(--plasma-typo-body-xs-font-size); + ${tabsTokens.fontStyle}: var(--plasma-typo-body-xs-font-style); + ${tabsTokens.fontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tabsTokens.letterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tabsTokens.lineHeight}: var(--plasma-typo-body-xs-line-height); + `, + s: css` + ${tabsTokens.itemBorderRadius}: 0.5rem; + ${tabsTokens.itemWidth}: auto; + ${tabsTokens.itemHeight}: 2.5rem; + ${tabsTokens.itemPadding}: 0 0.625rem; + ${tabsTokens.itemPaddingPilled}: 0 0.5rem; + ${tabsTokens.itemPaddingOrientationVertical}: 0.5rem 1rem; + ${tabsTokens.itemMarginLeft}: 0.75rem; + ${tabsTokens.itemContentGap}: 0.25rem; + ${tabsTokens.itemContentPadding}: 0.125rem; + + ${tabsTokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${tabsTokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${tabsTokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${tabsTokens.fontWeight}: var(--plasma-typo-body-s-font-weight); + ${tabsTokens.letterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tabsTokens.lineHeight}: var(--plasma-typo-body-s-line-height); + `, + m: css` + ${tabsTokens.itemBorderRadius}: 0.625rem; + ${tabsTokens.itemWidth}: auto; + ${tabsTokens.itemHeight}: 3rem; + ${tabsTokens.itemPadding}: 0 0.625rem; + ${tabsTokens.itemPaddingPilled}: 0 0.5rem; + ${tabsTokens.itemPaddingOrientationVertical}: 0.75rem 1.25rem; + ${tabsTokens.itemMarginLeft}: 1.125rem; + ${tabsTokens.itemContentGap}: 0.375rem; + ${tabsTokens.itemContentPadding}: 0.125rem; + + ${tabsTokens.fontFamily}: var(--plasma-typo-body-m-font-family); + ${tabsTokens.fontSize}: var(--plasma-typo-body-m-font-size); + ${tabsTokens.fontStyle}: var(--plasma-typo-body-m-font-style); + ${tabsTokens.fontWeight}: var(--plasma-typo-body-m-font-weight); + ${tabsTokens.letterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tabsTokens.lineHeight}: var(--plasma-typo-body-m-line-height); + `, + l: css` + ${tabsTokens.itemBorderRadius}: 0.75rem; + ${tabsTokens.itemWidth}: auto; + ${tabsTokens.itemHeight}: 3.5rem; + ${tabsTokens.itemPadding}: 0 0.875rem; + ${tabsTokens.itemPaddingPilled}: 0 0.75rem; + ${tabsTokens.itemPaddingOrientationVertical}: 1rem 1.5rem; + ${tabsTokens.itemMarginLeft}: 1.25rem; + ${tabsTokens.itemContentGap}: 0.5rem; + ${tabsTokens.itemContentPadding}: 0.125rem; + + ${tabsTokens.fontFamily}: var(--plasma-typo-body-l-font-family); + ${tabsTokens.fontSize}: var(--plasma-typo-body-l-font-size); + ${tabsTokens.fontStyle}: var(--plasma-typo-body-l-font-style); + ${tabsTokens.fontWeight}: var(--plasma-typo-body-l-font-weight); + ${tabsTokens.letterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tabsTokens.lineHeight}: var(--plasma-typo-body-l-line-height); + `, + }, + disabled: { + true: css` + ${tabsTokens.disabledOpacity}: 0.4; + `, + }, + truncate: { + true: css``, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Tabs/vertical/VerticalTabs.config.ts b/packages/plasma-giga/src/components/Tabs/vertical/VerticalTabs.config.ts new file mode 100644 index 0000000000..78eba3f047 --- /dev/null +++ b/packages/plasma-giga/src/components/Tabs/vertical/VerticalTabs.config.ts @@ -0,0 +1,64 @@ +import { css, tabsTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'divider', + size: 'l', + }, + variations: { + view: { + divider: css` + ${tabsTokens.arrowColor}: var(--text-secondary); + ${tabsTokens.arrowColorHover}: var(--text-secondary-hover); + ${tabsTokens.arrowColorActive}: var(---text-secondary-active); + ${tabsTokens.tabsBackgroundColor}: transparent; + ${tabsTokens.outlineFocusColor}: var(--surface-accent); + + ${tabsTokens.tabsDividerWidth}: 0.0625rem; + ${tabsTokens.tabsDividerHeight}: 0.0625rem; + ${tabsTokens.tabsDividerColor}: var(--surface-transparent-tertiary); + ${tabsTokens.tabsDividerBorderRadius}: 0.0625rem; + `, + }, + size: { + xs: css` + ${tabsTokens.tabsBorderRadius}: 0.5rem; + ${tabsTokens.tabsWidth}: fit-content; + ${tabsTokens.tabsHeight}: auto; + ${tabsTokens.arrowInnerPadding}: 0rem; + ${tabsTokens.arrowOuterPadding}: 0.125rem; + `, + s: css` + ${tabsTokens.tabsBorderRadius}: 0.625rem; + ${tabsTokens.tabsWidth}: fit-content; + ${tabsTokens.tabsHeight}: auto; + ${tabsTokens.arrowInnerPadding}: 0rem; + ${tabsTokens.arrowOuterPadding}: 0.25rem; + `, + m: css` + ${tabsTokens.tabsBorderRadius}: 0.75rem; + ${tabsTokens.tabsWidth}: fit-content; + ${tabsTokens.tabsHeight}: auto; + ${tabsTokens.arrowInnerPadding}: 0rem; + ${tabsTokens.arrowOuterPadding}: 0.625rem; + `, + l: css` + ${tabsTokens.tabsBorderRadius}: 0.75rem; + ${tabsTokens.tabsWidth}: fit-content; + ${tabsTokens.tabsHeight}: auto; + ${tabsTokens.arrowInnerPadding}: 0rem; + ${tabsTokens.arrowOuterPadding}: 0.75rem; + `, + }, + stretch: { + true: css` + ${tabsTokens.containerHeight}: 100%; + `, + }, + disabled: { + true: css` + ${tabsTokens.disabledOpacity}: 0.4; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/TextArea/TextArea.config.tsx b/packages/plasma-giga/src/components/TextArea/TextArea.config.tsx new file mode 100644 index 0000000000..e29368e610 --- /dev/null +++ b/packages/plasma-giga/src/components/TextArea/TextArea.config.tsx @@ -0,0 +1,542 @@ +import { css, textAreaTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + focused: 'true', + }, + variations: { + size: { + xs: css` + ${textAreaTokens.inputWidth}: 100%; + ${textAreaTokens.inputHeight}: 7.312rem; + ${textAreaTokens.inputMinHeight}: 0.625rem; + ${textAreaTokens.borderRadius}: 0.5rem; + ${textAreaTokens.borderRadiusWithHelpers}: 0.5rem 0.5rem 0 0; + ${textAreaTokens.inputPaddingTop}: 0.563rem; + ${textAreaTokens.inputPaddingRight}: 0.625rem; + ${textAreaTokens.inputPaddingRightWithRightContent}: 2.125rem; + ${textAreaTokens.clearInputPaddingRightWithRightContent}: 1.5rem; + ${textAreaTokens.inputPaddingBottom}: 0.563rem; + ${textAreaTokens.inputPaddingLeft}: 0.625rem; + ${textAreaTokens.helpersPaddingTop}: 0.5rem; + ${textAreaTokens.clearHelpersPaddingTop}: 0.25rem; + ${textAreaTokens.helpersPaddingRight}: 0.625rem; + ${textAreaTokens.helpersPaddingBottom}: 0.563rem; + ${textAreaTokens.helpersPaddingLeft}: 0.625rem; + ${textAreaTokens.helpersOffset}: 0rem; + ${textAreaTokens.rightContentTop}: 0.563rem; + ${textAreaTokens.rightContentRight}: 0.5rem; + ${textAreaTokens.rightContentHeight}: 1rem; + ${textAreaTokens.labelMarginBottom}: 0.375rem; + ${textAreaTokens.clearLabelMarginBottom}: 0.25rem; + ${textAreaTokens.labelInnerFontFamily}: var(--plasma-typo-body-xxs-font-family); + ${textAreaTokens.labelInnerFontSize}: var(--plasma-typo-body-xxs-font-size); + ${textAreaTokens.labelInnerFontStyle}: var(--plasma-typo-body-xxs-font-style); + ${textAreaTokens.labelInnerFontWeight}: var(--plasma-typo-body-xxs-font-weight); + ${textAreaTokens.labelInnerLetterSpacing}: var(--plasma-typo-body-xxs-letter-spacing); + ${textAreaTokens.labelInnerLineHeight}: var(--plasma-typo-body-xxs-line-height); + ${textAreaTokens.labelInnerTop}: 0rem; + ${textAreaTokens.labelInnerMarginBottom}: 0rem; + ${textAreaTokens.inputFontFamily}: var(--plasma-typo-body-xs-font-family); + ${textAreaTokens.inputFontSize}: var(--plasma-typo-body-xs-font-size); + ${textAreaTokens.inputFontStyle}: var(--plasma-typo-body-xs-font-style); + ${textAreaTokens.inputFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${textAreaTokens.inputLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${textAreaTokens.inputLineHeight}: var(--plasma-typo-body-xs-line-height); + ${textAreaTokens.helpersFontFamily}: var(--plasma-typo-body-xs-font-family); + ${textAreaTokens.helpersFontSize}: var(--plasma-typo-body-xs-font-size); + ${textAreaTokens.helpersFontStyle}: var(--plasma-typo-body-xs-font-style); + ${textAreaTokens.helpersFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${textAreaTokens.helpersLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${textAreaTokens.helpersLineHeight}: var(--plasma-typo-body-xs-line-height); + ${textAreaTokens.indicatorSizeInner}: 0.375rem; + ${textAreaTokens.indicatorSizeOuter}: 0.375rem; + ${textAreaTokens.indicatorLabelPlacementInner}: 0 0 0 0; + ${textAreaTokens.indicatorLabelPlacementOuter}: 0.25rem auto auto -0.625rem; + ${textAreaTokens.indicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${textAreaTokens.indicatorLabelPlacementOuterRight}: 0.125rem -0.675rem auto auto; + ${textAreaTokens.clearIndicatorLabelPlacementInner}: 0.813rem auto auto -0.625rem; + ${textAreaTokens.clearIndicatorLabelPlacementInnerRight}: 0.813rem -0.625rem auto auto; + ${textAreaTokens.clearIndicatorHintInnerRight}: 0.813rem -1.875rem auto auto; + + ${textAreaTokens.scrollbarWidth}: 0.188rem; + ${textAreaTokens.scrollbarBorderWidth}: 0.063rem; + + ${textAreaTokens.hintMargin}: -0.75rem -0.625rem -0.75rem -0.5rem; + ${textAreaTokens.hintTargetSize}: 2.375rem; + ${textAreaTokens.hintInnerLabelPlacementOffset}: -0.751rem -1.875rem auto auto; + ${textAreaTokens.clearHintInnerLabelPlacementOffset}: -0.188rem -1.938rem auto auto; + + ${textAreaTokens.titleCaptionInnerLabelOffset}: 0.25rem; + ${textAreaTokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family); + ${textAreaTokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size); + ${textAreaTokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style); + ${textAreaTokens.titleCaptionFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${textAreaTokens.titleCaptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${textAreaTokens.titleCaptionLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + s: css` + ${textAreaTokens.inputWidth}: 100%; + ${textAreaTokens.inputHeight}: 7.187rem; + ${textAreaTokens.inputMinHeight}: 0.625rem; + ${textAreaTokens.borderRadius}: 0.625rem; + ${textAreaTokens.borderRadiusWithHelpers}: 0.625rem 0.625rem 0 0; + ${textAreaTokens.inputPaddingTop}: 0.688rem; + ${textAreaTokens.inputPaddingRight}: 0.875rem; + ${textAreaTokens.inputPaddingRightWithRightContent}: 3.125rem; + ${textAreaTokens.clearInputPaddingRightWithRightContent}: 2rem; + ${textAreaTokens.inputPaddingBottom}: 0.75rem; + ${textAreaTokens.inputPaddingLeft}: 0.875rem; + ${textAreaTokens.helpersPaddingTop}: 0.75rem; + ${textAreaTokens.clearHelpersPaddingTop}: 0.25rem; + ${textAreaTokens.helpersPaddingRight}: 0.875rem; + ${textAreaTokens.helpersPaddingBottom}: 0.75rem; + ${textAreaTokens.helpersPaddingLeft}: 0.875rem; + ${textAreaTokens.helpersOffset}: 0rem; + ${textAreaTokens.rightContentTop}: 0.688rem; + ${textAreaTokens.rightContentRight}: 0.75rem; + ${textAreaTokens.rightContentHeight}: 1.25rem; + ${textAreaTokens.labelMarginBottom}: 0.5rem; + ${textAreaTokens.clearLabelMarginBottom}: 0.25rem; + ${textAreaTokens.labelInnerFontFamily}: var(--plasma-typo-body-xs-font-family); + ${textAreaTokens.labelInnerFontSize}: var(--plasma-typo-body-xs-font-size); + ${textAreaTokens.labelInnerFontStyle}: var(--plasma-typo-body-xs-font-style); + ${textAreaTokens.labelInnerFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${textAreaTokens.labelInnerLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${textAreaTokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height); + ${textAreaTokens.labelInnerTop}: 0.375rem; + ${textAreaTokens.labelInnerMarginBottom}: 0.125rem; + ${textAreaTokens.inputFontFamily}: var(--plasma-typo-body-s-font-family); + ${textAreaTokens.inputFontSize}: var(--plasma-typo-body-s-font-size); + ${textAreaTokens.inputFontStyle}: var(--plasma-typo-body-s-font-style); + ${textAreaTokens.inputFontWeight}: var(--plasma-typo-body-s-font-weight); + ${textAreaTokens.inputLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${textAreaTokens.inputLineHeight}: var(--plasma-typo-body-s-line-height); + ${textAreaTokens.helpersFontFamily}: var(--plasma-typo-body-xs-font-family); + ${textAreaTokens.helpersFontSize}: var(--plasma-typo-body-xs-font-size); + ${textAreaTokens.helpersFontStyle}: var(--plasma-typo-body-xs-font-style); + ${textAreaTokens.helpersFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${textAreaTokens.helpersLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${textAreaTokens.helpersLineHeight}: var(--plasma-typo-body-xs-line-height); + ${textAreaTokens.indicatorSizeInner}: 0.375rem; + ${textAreaTokens.indicatorSizeOuter}: 0.375rem; + ${textAreaTokens.indicatorLabelPlacementInner}: 0 0 0 0; + ${textAreaTokens.indicatorLabelPlacementOuter}: 0.375rem auto auto -0.675rem; + ${textAreaTokens.indicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${textAreaTokens.indicatorLabelPlacementOuterRight}: 0.25rem -0.625rem auto auto; + ${textAreaTokens.clearIndicatorLabelPlacementInner}: 1.063rem auto auto -0.75rem; + ${textAreaTokens.clearIndicatorLabelPlacementInnerRight}: 1.063rem -0.75rem auto auto; + ${textAreaTokens.clearIndicatorHintInnerRight}: 1.063rem -2.125rem auto auto; + + ${textAreaTokens.scrollbarWidth}: 0.188rem; + ${textAreaTokens.scrollbarBorderWidth}: 0.063rem; + + ${textAreaTokens.hintMargin}: -0.688rem -0.5rem; + ${textAreaTokens.hintTargetSize}: 2.375rem; + ${textAreaTokens.hintInnerLabelPlacementOffset}: -0.751rem -2rem auto auto; + ${textAreaTokens.clearHintInnerLabelPlacementOffset}: 0.062rem -2.063rem auto auto; + + ${textAreaTokens.titleCaptionInnerLabelOffset}: 0.25rem; + ${textAreaTokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family); + ${textAreaTokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size); + ${textAreaTokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style); + ${textAreaTokens.titleCaptionFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${textAreaTokens.titleCaptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${textAreaTokens.titleCaptionLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + m: css` + ${textAreaTokens.inputWidth}: 100%; + ${textAreaTokens.inputHeight}: 7rem; + ${textAreaTokens.inputMinHeight}: 1.125rem; + ${textAreaTokens.borderRadius}: 0.75rem; + ${textAreaTokens.borderRadiusWithHelpers}: 0.75rem 0.75rem 0 0; + ${textAreaTokens.inputPaddingTop}: 0.875rem; + ${textAreaTokens.inputPaddingRight}: 1rem; + ${textAreaTokens.inputPaddingRightWithRightContent}: 3.375rem; + ${textAreaTokens.clearInputPaddingRightWithRightContent}: 2.125rem; + ${textAreaTokens.inputPaddingBottom}: 0.75rem; + ${textAreaTokens.inputPaddingLeft}: 1rem; + ${textAreaTokens.helpersPaddingTop}: 0.75rem; + ${textAreaTokens.clearHelpersPaddingTop}: 0.25rem; + ${textAreaTokens.helpersPaddingRight}: 1rem; + ${textAreaTokens.helpersPaddingBottom}: 0.75rem; + ${textAreaTokens.helpersPaddingLeft}: 1rem; + ${textAreaTokens.helpersOffset}: 0rem; + ${textAreaTokens.rightContentTop}: 0.875rem; + ${textAreaTokens.rightContentRight}: 0.875rem; + ${textAreaTokens.rightContentHeight}: 1.25rem; + ${textAreaTokens.labelMarginBottom}: 0.625rem; + ${textAreaTokens.clearLabelMarginBottom}: 0.25rem; + ${textAreaTokens.labelInnerFontFamily}: var(--plasma-typo-body-xs-font-family); + ${textAreaTokens.labelInnerFontSize}: var(--plasma-typo-body-xs-font-size); + ${textAreaTokens.labelInnerFontStyle}: var(--plasma-typo-body-xs-font-style); + ${textAreaTokens.labelInnerFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${textAreaTokens.labelInnerLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${textAreaTokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height); + ${textAreaTokens.labelInnerTop}: 0.375rem; + ${textAreaTokens.labelInnerMarginBottom}: 0.125rem; + ${textAreaTokens.inputFontFamily}: var(--plasma-typo-body-m-font-family); + ${textAreaTokens.inputFontSize}: var(--plasma-typo-body-m-font-size); + ${textAreaTokens.inputFontStyle}: var(--plasma-typo-body-m-font-style); + ${textAreaTokens.inputFontWeight}: var(--plasma-typo-body-m-font-weight); + ${textAreaTokens.inputLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${textAreaTokens.inputLineHeight}: var(--plasma-typo-body-m-line-height); + ${textAreaTokens.helpersFontFamily}: var(--plasma-typo-body-xs-font-family); + ${textAreaTokens.helpersFontSize}: var(--plasma-typo-body-xs-font-size); + ${textAreaTokens.helpersFontStyle}: var(--plasma-typo-body-xs-font-style); + ${textAreaTokens.helpersFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${textAreaTokens.helpersLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${textAreaTokens.helpersLineHeight}: var(--plasma-typo-body-xs-line-height); + ${textAreaTokens.indicatorSizeInner}: 0.5rem; + ${textAreaTokens.indicatorSizeOuter}: 0.375rem; + ${textAreaTokens.indicatorLabelPlacementInner}: 0 0 0 0; + /* stylelint-disable-next-line number-max-precision */ + ${textAreaTokens.indicatorLabelPlacementOuter}: 0.4375rem auto auto -0.675rem; + ${textAreaTokens.indicatorLabelPlacementInnerRight}: 0 0 auto auto; + /* stylelint-disable-next-line number-max-precision */ + ${textAreaTokens.indicatorLabelPlacementOuterRight}: 0.1875rem -0.625rem auto auto; + ${textAreaTokens.clearIndicatorLabelPlacementInner}: 1.25rem auto auto -0.875rem; + ${textAreaTokens.clearIndicatorLabelPlacementInnerRight}: 1.25rem -0.875rem auto auto; + ${textAreaTokens.clearIndicatorHintInnerRight}: 1.25rem -2.25rem auto auto; + + ${textAreaTokens.scrollbarWidth}: 0.188rem; + ${textAreaTokens.scrollbarBorderWidth}: 0.063rem; + + ${textAreaTokens.hintMargin}: -0.688rem -0.5rem; + ${textAreaTokens.hintTargetSize}: 2.375rem; + ${textAreaTokens.hintInnerLabelPlacementOffset}: -0.751rem -2rem auto auto; + ${textAreaTokens.clearHintInnerLabelPlacementOffset}: 0.312rem -2.063rem auto auto; + + ${textAreaTokens.titleCaptionInnerLabelOffset}: 0.25rem; + ${textAreaTokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family); + ${textAreaTokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size); + ${textAreaTokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style); + ${textAreaTokens.titleCaptionFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${textAreaTokens.titleCaptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${textAreaTokens.titleCaptionLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + l: css` + ${textAreaTokens.inputWidth}: 100%; + ${textAreaTokens.inputHeight}: 6.812rem; + ${textAreaTokens.inputMinHeight}: 1.625rem; + ${textAreaTokens.borderRadius}: 0.875rem; + ${textAreaTokens.borderRadiusWithHelpers}: 0.875rem 0.875rem 0 0; + ${textAreaTokens.inputPaddingTop}: 1.063rem; + ${textAreaTokens.inputPaddingRight}: 1.125rem; + ${textAreaTokens.inputPaddingRightWithRightContent}: 3.625rem; + ${textAreaTokens.clearInputPaddingRightWithRightContent}: 2.25rem; + ${textAreaTokens.inputPaddingBottom}: 0.75rem; + ${textAreaTokens.inputPaddingLeft}: 1.125rem; + ${textAreaTokens.helpersPaddingTop}: 0.75rem; + ${textAreaTokens.clearHelpersPaddingTop}: 0.25rem; + ${textAreaTokens.helpersPaddingRight}: 1.125rem; + ${textAreaTokens.helpersPaddingBottom}: 0.75rem; + ${textAreaTokens.helpersPaddingLeft}: 1.125rem; + ${textAreaTokens.helpersOffset}: 0rem; + ${textAreaTokens.rightContentTop}: 1.063rem; + ${textAreaTokens.rightContentRight}: 1rem; + ${textAreaTokens.rightContentHeight}: 1.25rem; + ${textAreaTokens.labelMarginBottom}: 0.75rem; + ${textAreaTokens.clearLabelMarginBottom}: 0.25rem; + ${textAreaTokens.labelInnerFontFamily}: var(--plasma-typo-body-xs-font-family); + ${textAreaTokens.labelInnerFontSize}: var(--plasma-typo-body-xs-font-size); + ${textAreaTokens.labelInnerFontStyle}: var(--plasma-typo-body-xs-font-style); + ${textAreaTokens.labelInnerFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${textAreaTokens.labelInnerLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${textAreaTokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height); + ${textAreaTokens.labelInnerTop}: 0.563rem; + ${textAreaTokens.labelInnerMarginBottom}: 0.125rem; + ${textAreaTokens.inputFontFamily}: var(--plasma-typo-body-l-font-family); + ${textAreaTokens.inputFontSize}: var(--plasma-typo-body-l-font-size); + ${textAreaTokens.inputFontStyle}: var(--plasma-typo-body-l-font-style); + ${textAreaTokens.inputFontWeight}: var(--plasma-typo-body-l-font-weight); + ${textAreaTokens.inputLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${textAreaTokens.inputLineHeight}: var(--plasma-typo-body-l-line-height); + ${textAreaTokens.helpersFontFamily}: var(--plasma-typo-body-xs-font-family); + ${textAreaTokens.helpersFontSize}: var(--plasma-typo-body-xs-font-size); + ${textAreaTokens.helpersFontStyle}: var(--plasma-typo-body-xs-font-style); + ${textAreaTokens.helpersFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${textAreaTokens.helpersLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${textAreaTokens.helpersLineHeight}: var(--plasma-typo-body-xs-line-height); + ${textAreaTokens.indicatorSizeInner}: 0.5rem; + ${textAreaTokens.indicatorSizeOuter}: 0.375rem; + ${textAreaTokens.indicatorLabelPlacementInner}: 0 0 0 0; + ${textAreaTokens.indicatorLabelPlacementOuter}: 0.5rem auto auto -0.675rem; + ${textAreaTokens.indicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${textAreaTokens.indicatorLabelPlacementOuterRight}: 0.25rem -0.625rem auto auto; + ${textAreaTokens.clearIndicatorLabelPlacementInner}: 1.5rem auto auto -0.875rem; + ${textAreaTokens.clearIndicatorLabelPlacementInnerRight}: 1.5rem -0.875rem auto auto; + ${textAreaTokens.clearIndicatorHintInnerRight}: 1.5rem -2.25rem auto auto; + + ${textAreaTokens.scrollbarWidth}: 0.188rem; + ${textAreaTokens.scrollbarBorderWidth}: 0.063rem; + + ${textAreaTokens.hintMargin}: -0.688rem -0.5rem; + ${textAreaTokens.hintTargetSize}: 2.375rem; + ${textAreaTokens.hintInnerLabelPlacementOffset}: -0.751rem -2rem auto auto; + ${textAreaTokens.clearHintInnerLabelPlacementOffset}: 0.562rem -2.063rem auto auto; + + ${textAreaTokens.titleCaptionInnerLabelOffset}: 0.25rem; + ${textAreaTokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family); + ${textAreaTokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size); + ${textAreaTokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style); + ${textAreaTokens.titleCaptionFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${textAreaTokens.titleCaptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${textAreaTokens.titleCaptionLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + }, + view: { + default: css` + ${textAreaTokens.inputBackgroundColor}: var(--surface-transparent-primary); + ${textAreaTokens.inputBackgroundColorHover}: var(--surface-transparent-primary-hover); + ${textAreaTokens.inputBackgroundColorActive}: var(--surface-transparent-primary-active); + ${textAreaTokens.inputBackgroundColorFocus}: var(--surface-transparent-secondary); + ${textAreaTokens.helpersBackgroundColor}: var(--surface-transparent-primary); + ${textAreaTokens.helpersBackgroundColorHover}: var(--surface-transparent-primary-hover); + ${textAreaTokens.helpersBackgroundColorActive}: var(--surface-transparent-primary-active); + ${textAreaTokens.helpersBackgroundColorFocus}: var(--surface-transparent-secondary); + ${textAreaTokens.inputColor}: var(--text-primary); + ${textAreaTokens.clearInputColor}: var(--text-primary); + ${textAreaTokens.inputColorFocus}: var(--text-primary); + ${textAreaTokens.inputCaretColor}: var(--text-accent); + ${textAreaTokens.placeholderColor}: var(--text-secondary); + ${textAreaTokens.placeholderColorFocus}: var(--text-tertiary); + ${textAreaTokens.clearPlaceholderColor}: var(--text-secondary); + ${textAreaTokens.clearPlaceholderColorFocus}: var(--text-tertiary); + ${textAreaTokens.leftHelperColor}: var(--text-secondary); + ${textAreaTokens.rightHelperColor}: var(--text-secondary); + ${textAreaTokens.indicatorColor}: var(--surface-negative); + ${textAreaTokens.optionalColor}: var(--text-tertiary); + + ${textAreaTokens.scrollbarThumbBackgroundColor}: var(--surface-transparent-tertiary); + ${textAreaTokens.scrollbarThumbBackgroundColorHover}: var(--surface-transparent-tertiary-hover); + ${textAreaTokens.scrollbarThumbBackgroundColorActive}: var(--surface-transparent-tertiary-active); + ${textAreaTokens.scrollbarTrackBackgroundColor}: var(--surface-transparent-primary); + ${textAreaTokens.scrollbarTrackBackgroundColorActive}: var(--surface-transparent-primary-active); + ${textAreaTokens.scrollbarTrackBackgroundColorHover}: var(--surface-transparent-primary-hover); + + ${textAreaTokens.dividerColor}: var(--surface-transparent-tertiary); + ${textAreaTokens.dividerColorHover}: var(--text-secondary); + ${textAreaTokens.dividerColorFocus}: var(--surface-accent); + ${textAreaTokens.titleCaptionColor}: var(--text-secondary); + ${textAreaTokens.hintIconColor}: var(--text-secondary); + `, + positive: css` + ${textAreaTokens.inputBackgroundColor}: var(--surface-transparent-positive); + ${textAreaTokens.inputBackgroundColorHover}: var(--surface-transparent-positive-hover); + ${textAreaTokens.inputBackgroundColorActive}: var(--surface-transparent-positive-active); + ${textAreaTokens.inputBackgroundColorFocus}: var(--surface-transparent-positive); + ${textAreaTokens.helpersBackgroundColor}: var(--surface-transparent-positive); + ${textAreaTokens.helpersBackgroundColorHover}: var(--surface-transparent-positive-hover); + ${textAreaTokens.helpersBackgroundColorActive}: var(--surface-transparent-positive-active); + ${textAreaTokens.helpersBackgroundColorFocus}: var(--surface-transparent-positive); + ${textAreaTokens.inputColor}: var(--text-primary); + ${textAreaTokens.clearInputColor}: var(--text-positive); + ${textAreaTokens.clearPlaceholderColor}: var(--text-positive); + ${textAreaTokens.inputColorFocus}: var(--text-primary); + ${textAreaTokens.inputCaretColor}: var(--text-positive); + ${textAreaTokens.placeholderColor}: var(--text-secondary); + ${textAreaTokens.placeholderColorFocus}: var(--text-tertiary); + ${textAreaTokens.clearPlaceholderColorFocus}: var(--text-positive); + ${textAreaTokens.leftHelperColor}: var(--text-positive); + ${textAreaTokens.rightHelperColor}: var(--text-secondary); + ${textAreaTokens.indicatorColor}: var(--surface-negative); + ${textAreaTokens.optionalColor}: var(--text-tertiary); + + ${textAreaTokens.scrollbarThumbBackgroundColor}: var(--surface-transparent-tertiary); + ${textAreaTokens.scrollbarThumbBackgroundColorHover}: var(--surface-transparent-tertiary-hover); + ${textAreaTokens.scrollbarThumbBackgroundColorActive}: var(--surface-transparent-tertiary-active); + ${textAreaTokens.scrollbarTrackBackgroundColor}: var(--surface-transparent-primary); + ${textAreaTokens.scrollbarTrackBackgroundColorActive}: var(--surface-transparent-primary-active); + ${textAreaTokens.scrollbarTrackBackgroundColorHover}: var(--surface-transparent-primary-hover); + + ${textAreaTokens.dividerColor}: var(--surface-positive); + ${textAreaTokens.dividerColorHover}: var(--surface-positive); + ${textAreaTokens.dividerColorFocus}: var(--surface-accent); + ${textAreaTokens.titleCaptionColor}: var(--text-secondary); + ${textAreaTokens.hintIconColor}: var(--text-secondary); + `, + /** + * @deprecated + * Использовать `default` + */ + primary: css` + ${textAreaTokens.inputBackgroundColor}: var(--surface-transparent-primary); + ${textAreaTokens.inputBackgroundColorHover}: var(--surface-transparent-primary-hover); + ${textAreaTokens.inputBackgroundColorActive}: var(--surface-transparent-primary-active); + ${textAreaTokens.inputBackgroundColorFocus}: var(--surface-transparent-secondary); + ${textAreaTokens.helpersBackgroundColor}: var(--surface-transparent-primary); + ${textAreaTokens.helpersBackgroundColorHover}: var(--surface-transparent-primary-hover); + ${textAreaTokens.helpersBackgroundColorActive}: var(--surface-transparent-primary-active); + ${textAreaTokens.helpersBackgroundColorFocus}: var(--surface-transparent-secondary); + ${textAreaTokens.inputColor}: var(--text-primary); + ${textAreaTokens.clearInputColor}: var(--text-primary); + ${textAreaTokens.inputColorFocus}: var(--text-primary); + ${textAreaTokens.inputCaretColor}: var(--text-accent); + ${textAreaTokens.placeholderColor}: var(--text-secondary); + ${textAreaTokens.placeholderColorFocus}: var(--text-tertiary); + ${textAreaTokens.clearPlaceholderColor}: var(--text-secondary); + ${textAreaTokens.clearPlaceholderColorFocus}: var(--text-tertiary); + ${textAreaTokens.leftHelperColor}: var(--text-secondary); + ${textAreaTokens.rightHelperColor}: var(--text-secondary); + ${textAreaTokens.indicatorColor}: var(--surface-negative); + ${textAreaTokens.optionalColor}: var(--text-tertiary); + + ${textAreaTokens.scrollbarThumbBackgroundColor}: var(--surface-transparent-tertiary); + ${textAreaTokens.scrollbarThumbBackgroundColorHover}: var(--surface-transparent-tertiary-hover); + ${textAreaTokens.scrollbarThumbBackgroundColorActive}: var(--surface-transparent-tertiary-active); + ${textAreaTokens.scrollbarTrackBackgroundColor}: var(--surface-transparent-primary); + ${textAreaTokens.scrollbarTrackBackgroundColorActive}: var(--surface-transparent-primary-active); + ${textAreaTokens.scrollbarTrackBackgroundColorHover}: var(--surface-transparent-primary-hover); + + ${textAreaTokens.dividerColor}: var(--surface-transparent-tertiary); + ${textAreaTokens.dividerColorHover}: var(--text-secondary); + ${textAreaTokens.dividerColorFocus}: var(--surface-accent); + ${textAreaTokens.titleCaptionColor}: var(--text-secondary); + ${textAreaTokens.hintIconColor}: var(--text-secondary); + `, + warning: css` + ${textAreaTokens.inputBackgroundColor}: var(--surface-transparent-warning); + ${textAreaTokens.inputBackgroundColorHover}: var(--surface-transparent-warning-hover); + ${textAreaTokens.inputBackgroundColorActive}: var(--surface-transparent-warning-active); + ${textAreaTokens.inputBackgroundColorFocus}: var(--surface-transparent-warning); + ${textAreaTokens.helpersBackgroundColor}: var(--surface-transparent-warning); + ${textAreaTokens.helpersBackgroundColorHover}: var(--surface-transparent-warning-hover); + ${textAreaTokens.helpersBackgroundColorActive}: var(--surface-transparent-warning-active); + ${textAreaTokens.helpersBackgroundColorFocus}: var(--surface-transparent-warning); + ${textAreaTokens.inputColor}: var(--text-primary); + ${textAreaTokens.clearInputColor}: var(--text-warning); + ${textAreaTokens.clearPlaceholderColor}: var(--text-warning); + ${textAreaTokens.inputColorFocus}: var(--text-primary); + ${textAreaTokens.inputCaretColor}: var(--text-warning); + ${textAreaTokens.placeholderColor}: var(--text-secondary); + ${textAreaTokens.placeholderColorFocus}: var(--text-tertiary); + ${textAreaTokens.clearPlaceholderColorFocus}: var(--text-warning); + ${textAreaTokens.leftHelperColor}: var(--text-warning); + ${textAreaTokens.rightHelperColor}: var(--text-secondary); + ${textAreaTokens.indicatorColor}: var(--surface-negative); + ${textAreaTokens.optionalColor}: var(--text-tertiary); + + ${textAreaTokens.scrollbarThumbBackgroundColor}: var(--surface-transparent-tertiary); + ${textAreaTokens.scrollbarThumbBackgroundColorHover}: var(--surface-transparent-tertiary-hover); + ${textAreaTokens.scrollbarThumbBackgroundColorActive}: var(--surface-transparent-tertiary-active); + ${textAreaTokens.scrollbarTrackBackgroundColor}: var(--surface-transparent-primary); + ${textAreaTokens.scrollbarTrackBackgroundColorActive}: var(--surface-transparent-primary-active); + ${textAreaTokens.scrollbarTrackBackgroundColorHover}: var(--surface-transparent-primary-hover); + + ${textAreaTokens.dividerColor}: var(--surface-warning); + ${textAreaTokens.dividerColorHover}: var(--surface-warning); + ${textAreaTokens.dividerColorFocus}: var(--surface-accent); + ${textAreaTokens.titleCaptionColor}: var(--text-secondary); + ${textAreaTokens.hintIconColor}: var(--text-secondary); + `, + negative: css` + ${textAreaTokens.inputBackgroundColor}: var(--surface-transparent-negative); + ${textAreaTokens.inputBackgroundColorHover}: var(--surface-transparent-negative-hover); + ${textAreaTokens.inputBackgroundColorActive}: var(--surface-transparent-negative-active); + ${textAreaTokens.inputBackgroundColorFocus}: var(--surface-transparent-negative); + ${textAreaTokens.helpersBackgroundColor}: var(--surface-transparent-negative); + ${textAreaTokens.helpersBackgroundColorHover}: var(--surface-transparent-negative-hover); + ${textAreaTokens.helpersBackgroundColorActive}: var(--surface-transparent-negative-active); + ${textAreaTokens.helpersBackgroundColorFocus}: var(--surface-transparent-negative); + ${textAreaTokens.inputColor}: var(--text-primary); + ${textAreaTokens.clearInputColor}: var(--text-negative); + ${textAreaTokens.clearPlaceholderColor}: var(--text-negative); + ${textAreaTokens.inputColorFocus}: var(--text-primary); + ${textAreaTokens.inputCaretColor}: var(--text-negative); + ${textAreaTokens.placeholderColor}: var(--text-secondary); + ${textAreaTokens.placeholderColorFocus}: var(--text-tertiary); + ${textAreaTokens.clearPlaceholderColorFocus}: var(--text-negative); + ${textAreaTokens.leftHelperColor}: var(--text-negative); + ${textAreaTokens.rightHelperColor}: var(--text-secondary); + ${textAreaTokens.indicatorColor}: var(--surface-negative); + ${textAreaTokens.optionalColor}: var(--text-tertiary); + + ${textAreaTokens.scrollbarThumbBackgroundColor}: var(--surface-transparent-tertiary); + ${textAreaTokens.scrollbarThumbBackgroundColorHover}: var(--surface-transparent-tertiary-hover); + ${textAreaTokens.scrollbarThumbBackgroundColorActive}: var(--surface-transparent-tertiary-active); + ${textAreaTokens.scrollbarTrackBackgroundColor}: var(--surface-transparent-primary); + ${textAreaTokens.scrollbarTrackBackgroundColorActive}: var(--surface-transparent-primary-active); + ${textAreaTokens.scrollbarTrackBackgroundColorHover}: var(--surface-transparent-primary-hover); + + ${textAreaTokens.dividerColor}: var(--surface-negative); + ${textAreaTokens.dividerColorHover}: var(--surface-negative); + ${textAreaTokens.dividerColorFocus}: var(--surface-accent); + ${textAreaTokens.titleCaptionColor}: var(--text-secondary); + ${textAreaTokens.hintIconColor}: var(--text-secondary); + `, + }, + hintView: { + default: css` + ${textAreaTokens.tooltipBackgroundColor}: var(--surface-solid-card-brightness); + ${textAreaTokens.tooltipBoxShadow}: var(--shadow-down-hard-m); + ${textAreaTokens.tooltipColor}: var(--text-primary); + ${textAreaTokens.tooltipArrowBackground}: var(--surface-solid-card-brightness); + `, + }, + hintSize: { + m: css` + ${textAreaTokens.tooltipPaddingTop}: 0.688rem; + ${textAreaTokens.tooltipPaddingRight}: 0.875rem; + ${textAreaTokens.tooltipPaddingBottom}: 0.688rem; + ${textAreaTokens.tooltipPaddingLeft}: 0.875rem; + + ${textAreaTokens.tooltipMinHeight}: 2.5rem; + ${textAreaTokens.tooltipBorderRadius}: 0.625rem; + + ${textAreaTokens.tooltipTextFontFamily}: var(--plasma-typo-body-s-font-family); + ${textAreaTokens.tooltipTextFontSize}: var(--plasma-typo-body-s-font-size); + ${textAreaTokens.tooltipTextFontStyle}: var(--plasma-typo-body-s-font-style); + ${textAreaTokens.tooltipTextFontWeight}: var(--plasma-typo-body-s-font-weight); + ${textAreaTokens.tooltipTextFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${textAreaTokens.tooltipTextFontLineHeight}: var(--plasma-typo-body-s-line-height); + + ${textAreaTokens.tooltipContentLeftMargin}: 0.375rem; + + ${textAreaTokens.tooltipArrowMaskWidth}: 1.25rem; + ${textAreaTokens.tooltipArrowMaskHeight}: 1.25rem; + /* stylelint-disable-next-line */ + ${textAreaTokens.tooltipArrowMaskImage}: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMC4xNywxMS44M2wyMCwwYy01LjUyLDAgLTEwLDMuNTkgLTEwLDhjMCwtNC40MSAtNC40OCwtOCAtMTAsLTh6IiBmaWxsPSIjMTcxNzE3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJUYWlsIi8+Cjwvc3ZnPg=="); + ${textAreaTokens.tooltipArrowHeight}: 0.5rem; + ${textAreaTokens.tooltipArrowEdgeMargin}: 0.625rem; + `, + s: css` + ${textAreaTokens.tooltipPaddingTop}: 0.5rem; + ${textAreaTokens.tooltipPaddingRight}: 0.75rem; + ${textAreaTokens.tooltipPaddingBottom}: 0.5rem; + ${textAreaTokens.tooltipPaddingLeft}: 0.75rem; + + ${textAreaTokens.tooltipMinHeight}: 2rem; + ${textAreaTokens.tooltipBorderRadius}: 0.5rem; + + ${textAreaTokens.tooltipTextFontFamily}: var(--plasma-typo-body-xs-font-family); + ${textAreaTokens.tooltipTextFontSize}: var(--plasma-typo-body-xs-font-size); + ${textAreaTokens.tooltipTextFontStyle}: var(--plasma-typo-body-xs-font-style); + ${textAreaTokens.tooltipTextFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${textAreaTokens.tooltipTextFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${textAreaTokens.tooltipTextFontLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${textAreaTokens.tooltipContentLeftMargin}: 0.25rem; + + ${textAreaTokens.tooltipArrowMaskWidth}: 1rem; + ${textAreaTokens.tooltipArrowMaskHeight}: 1rem; + /* stylelint-disable-next-line */ + ${textAreaTokens.tooltipArrowMaskImage}: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMCw5Ljg1bDE2LDBjLTQuNDEsMCAtOCwyLjY5IC04LDZjMCwtMy4zMSAtMy41OSwtNiAtOCwtNnoiIGZpbGw9IiMxNzE3MTciIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9IlRhaWwiLz4KPC9zdmc+"); + ${textAreaTokens.tooltipArrowHeight}: 0.375rem; + ${textAreaTokens.tooltipArrowEdgeMargin}: 0.563rem; + `, + }, + clear: { + true: css``, + }, + disabled: { + true: css` + ${textAreaTokens.disabledOpacity}: 0.4; + ${textAreaTokens.inputColorDisabled}: var(--text-secondary); + ${textAreaTokens.dividerColorReadOnly}: var(--surface-transparent-primary); + ${textAreaTokens.titleCaptionColorReadOnly}: var(--text-secondary); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/TextArea/TextArea.stories.tsx b/packages/plasma-giga/src/components/TextArea/TextArea.stories.tsx new file mode 100644 index 0000000000..53619b960b --- /dev/null +++ b/packages/plasma-giga/src/components/TextArea/TextArea.stories.tsx @@ -0,0 +1,231 @@ +import React, { useState } from 'react'; +import type { ComponentProps } from 'react'; +import type { Meta, StoryObj } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { IconBell } from '@salutejs/plasma-icons'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; +import type { PopoverPlacement } from '@salutejs/plasma-new-hope'; + +import { TextArea } from './TextArea'; + +const labelPlacements = ['inner', 'outer']; + +type StoryTextAreaPropsCustom = { + hasHint?: boolean; + enableContentRight?: boolean; +}; + +type StoryTextAreaProps = ComponentProps<typeof TextArea> & StoryTextAreaPropsCustom; + +const sizes = ['xs', 's', 'm', 'l']; +const views = ['default', 'positive', 'warning', 'negative']; +const hintViews = ['default']; +const hintSizes = ['m', 's']; +const hintTriggers = ['hover', 'click']; +const placements: Array<PopoverPlacement> = [ + 'top', + 'top-start', + 'top-end', + + 'bottom', + 'bottom-start', + 'bottom-end', + + 'left', + 'left-start', + 'left-end', + + 'right', + 'right-start', + 'right-end', + + 'auto', +]; + +const meta: Meta<StoryTextAreaProps> = { + title: 'Data Entry/TextArea', + decorators: [InSpacingDecorator], + component: TextArea, + argTypes: { + requiredPlacement: { + options: ['left', 'right'], + control: { + type: 'select', + }, + }, + required: { + control: { + type: 'boolean', + }, + if: { arg: 'optional', truthy: false }, + }, + optional: { + control: { + type: 'boolean', + }, + if: { arg: 'required', truthy: false }, + }, + labelPlacement: { + options: labelPlacements, + control: { + type: 'select', + }, + }, + size: { + options: sizes, + defaultValue: 'm', + control: { + type: 'select', + }, + }, + view: { + options: views, + control: { + type: 'select', + }, + }, + hasDivider: { + control: { + type: 'boolean', + }, + if: { arg: 'clear', truthy: true }, + }, + cols: { + control: { + type: 'number', + }, + if: { arg: 'clear', truthy: false }, + }, + rows: { + control: { + type: 'number', + }, + if: { arg: 'clear', truthy: false }, + }, + hintText: { + control: { type: 'text' }, + if: { arg: 'hasHint', truthy: true }, + }, + hintView: { + options: hintViews, + control: { + type: 'select', + }, + if: { arg: 'hasHint', truthy: true }, + }, + hintSize: { + options: hintSizes, + control: { + type: 'select', + }, + if: { arg: 'hasHint', truthy: true }, + }, + hintTrigger: { + options: hintTriggers, + control: { + type: 'inline-radio', + }, + if: { arg: 'hasHint', truthy: true }, + }, + hintPlacement: { + options: placements, + control: { + type: 'select', + }, + if: { arg: 'hasHint', truthy: true }, + mappers: placements, + }, + hintHasArrow: { + control: { type: 'boolean' }, + if: { arg: 'hasHint', truthy: true }, + }, + hintWidth: { + control: { type: 'text' }, + if: { arg: 'hasHint', truthy: true }, + }, + ...disableProps([ + 'helperBlock', + '$isFocused', + 'contentRight', + 'autoComplete', + 'autoFocus', + 'dirName', + 'form', + 'minLength', + 'maxLength', + 'name', + 'value', + 'wrap', + 'theme', + 'as', + 'forwardedAs', + 'onChange', + 'onFocus', + 'onBlur', + 'status', + 'resize', + 'height', + 'width', + 'helperText', + 'leftHelperPlacement', + ]), + }, + args: { + id: 'example-textarea', + enableContentRight: true, + label: 'Лейбл', + placeholder: 'Заполните многострочное поле', + titleCaption: 'Подпись к полю', + leftHelper: 'Подсказка к полю слева', + rightHelper: 'Подсказка к полю справа', + disabled: false, + readOnly: false, + autoResize: false, + minAuto: 0, + maxAuto: 0, + required: false, + requiredPlacement: 'right', + optional: false, + clear: false, + hasDivider: false, + hasHint: true, + hintText: 'Текст подсказки', + hintTrigger: 'hover', + hintView: 'default', + hintSize: 'm', + hintPlacement: 'auto', + hintWidth: '10rem', + hintHasArrow: true, + }, +}; + +export default meta; + +const onChange = action('onChange'); +const onFocus = action('onFocus'); +const onBlur = action('onBlur'); + +const StoryDefault = (props: StoryTextAreaProps) => { + const [value, setValue] = useState('Значение поля'); + + const iconSize = props.size === 'xs' ? 'xs' : 's'; + + return ( + <TextArea + value={value} + contentRight={props.enableContentRight ? <IconBell size={iconSize} /> : undefined} + onChange={(e) => { + setValue(e.target.value); + onChange(e); + }} + onFocus={onFocus} + onBlur={onBlur} + style={{ width: '70%', margin: '0 auto' }} + {...props} + /> + ); +}; + +export const Default: StoryObj<StoryTextAreaProps> = { + render: (args) => <StoryDefault {...args} />, +}; diff --git a/packages/plasma-giga/src/components/TextArea/TextArea.tsx b/packages/plasma-giga/src/components/TextArea/TextArea.tsx new file mode 100644 index 0000000000..6252934bc0 --- /dev/null +++ b/packages/plasma-giga/src/components/TextArea/TextArea.tsx @@ -0,0 +1,11 @@ +import { textAreaConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './TextArea.config'; + +const mergedConfig = mergeConfig(textAreaConfig, config); +const TextAreaComponent = component(mergedConfig); + +/** + * Поле ввода многострочного текста. + */ +export const TextArea = TextAreaComponent; diff --git a/packages/plasma-giga/src/components/TextArea/index.ts b/packages/plasma-giga/src/components/TextArea/index.ts new file mode 100644 index 0000000000..fdf76b35f2 --- /dev/null +++ b/packages/plasma-giga/src/components/TextArea/index.ts @@ -0,0 +1 @@ +export { TextArea } from './TextArea'; diff --git a/packages/plasma-giga/src/components/TextField/TextField.config.ts b/packages/plasma-giga/src/components/TextField/TextField.config.ts new file mode 100644 index 0000000000..2fce7462f0 --- /dev/null +++ b/packages/plasma-giga/src/components/TextField/TextField.config.ts @@ -0,0 +1,673 @@ +import { css, textFieldTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + labelPlacement: 'outer', + chipView: 'secondary', + }, + variations: { + view: { + default: css` + ${tokens.color}: var(--text-primary); + ${tokens.clearColor}: var(--text-primary); + ${tokens.placeholderColorFocus}: var(--text-tertiary); + ${tokens.clearPlaceholderColor}: var(--text-secondary); + ${tokens.clearPlaceholderColorFocus}: var(--text-tertiary); + ${tokens.backgroundColor}: var(--surface-transparent-primary); + ${tokens.backgroundColorHover}: var(--surface-transparent-primary-hover); + ${tokens.backgroundColorFocus}: var(--surface-transparent-secondary); + ${tokens.caretColor}: var(--text-accent); + ${tokens.placeholderColor}: var(--text-secondary); + ${tokens.textBeforeColor}: var(--text-tertiary); + ${tokens.textAfterColor}: var(--text-tertiary); + ${tokens.labelColor}: var(--text-primary); + ${tokens.leftHelperColor}: var(--text-secondary); + ${tokens.titleCaptionColor}: var(--text-secondary); + ${tokens.hintIconColor}: var(--text-secondary); + + ${tokens.contentSlotColor}: var(--text-secondary); + ${tokens.contentSlotColorHover}: var(--text-secondary-hover); + ${tokens.contentSlotColorActive}: var(--text-secondary-active); + + ${tokens.dividerColor}: var(--surface-transparent-tertiary); + ${tokens.dividerColorHover}: var(--text-secondary); + ${tokens.dividerColorFocus}: var(--surface-accent); + + ${tokens.chipCloseIconColor}: var(--text-secondary); + ${tokens.chipColor}: var(--text-primary); + ${tokens.chipBackground}: var(--surface-transparent-secondary); + ${tokens.chipColorHover}: var(--text-primary); + ${tokens.chipBackgroundHover}: var(--surface-transparent-secondary-hover); + ${tokens.chipColorActive}: var(--text-primary); + ${tokens.chipBackgroundActive}: var(--surface-transparent-secondary-active); + ${tokens.chipBackgroundReadOnly}: var(--surface-transparent-secondary); + ${tokens.chipColorReadOnly}: var(--text-primary); + ${tokens.chipBackgroundReadOnlyHover}: var(--surface-transparent-secondary); + ${tokens.chipColorReadOnlyHover}: var(--text-primary); + ${tokens.chipOpacityReadonly}: 0.72; + + ${tokens.focusColor}: var(--text-accent); + ${tokens.indicatorColor}: var(--surface-negative); + ${tokens.optionalColor}: var(--text-tertiary); + `, + positive: css` + ${tokens.color}: var(--text-primary); + ${tokens.clearColor}: var(--text-positive); + ${tokens.clearPlaceholderColor}: var(--text-positive); + ${tokens.placeholderColorFocus}: var(--text-tertiary); + ${tokens.clearPlaceholderColorFocus}: var(--text-positive); + ${tokens.backgroundColor}: var(--surface-transparent-positive); + ${tokens.backgroundColorHover}: var(--surface-transparent-positive-hover); + ${tokens.backgroundColorFocus}: var(--surface-transparent-positive-active); + ${tokens.caretColor}: var(--text-accent); + ${tokens.placeholderColor}: var(--text-secondary); + ${tokens.textBeforeColor}: var(--text-tertiary); + ${tokens.textAfterColor}: var(--text-tertiary); + ${tokens.labelColor}: var(--text-primary); + ${tokens.leftHelperColor}: var(--text-positive); + ${tokens.titleCaptionColor}: var(--text-secondary); + ${tokens.hintIconColor}: var(--text-secondary); + + ${tokens.contentSlotColor}: var(--text-secondary); + ${tokens.contentSlotColorHover}: var(--text-secondary-hover); + ${tokens.contentSlotColorActive}: var(--text-secondary-active); + + ${tokens.dividerColor}: var(--surface-positive); + ${tokens.dividerColorHover}: var(--surface-positive); + ${tokens.dividerColorFocus}: var(--surface-accent); + + ${tokens.chipCloseIconColor}: var(--text-secondary); + ${tokens.chipColor}: var(--text-primary); + ${tokens.chipBackground}: var(--surface-transparent-secondary); + ${tokens.chipColorHover}: var(--text-primary); + ${tokens.chipBackgroundHover}: var(--surface-transparent-secondary-hover); + ${tokens.chipColorActive}: var(--text-primary); + ${tokens.chipBackgroundActive}: var(--surface-transparent-secondary-active); + ${tokens.chipBackgroundReadOnly}: var(--surface-transparent-secondary); + ${tokens.chipColorReadOnly}: var(--text-primary); + ${tokens.chipBackgroundReadOnlyHover}: var(--surface-transparent-secondary); + ${tokens.chipColorReadOnlyHover}: var(--text-primary); + ${tokens.chipOpacityReadonly}: 0.72; + + ${tokens.focusColor}: var(--text-accent); + ${tokens.indicatorColor}: var(--surface-negative); + ${tokens.optionalColor}: var(--text-tertiary); + `, + warning: css` + ${tokens.color}: var(--text-primary); + ${tokens.clearColor}: var(--text-warning); + ${tokens.clearPlaceholderColor}: var(--text-warning); + ${tokens.placeholderColorFocus}: var(--text-tertiary); + ${tokens.clearPlaceholderColorFocus}: var(--text-warning); + ${tokens.backgroundColor}: var(--surface-transparent-warning); + ${tokens.backgroundColorHover}: var(--surface-transparent-warning-hover); + ${tokens.backgroundColorFocus}: var(--surface-transparent-warning-active); + ${tokens.caretColor}: var(--text-accent); + ${tokens.placeholderColor}: var(--text-secondary); + ${tokens.textBeforeColor}: var(--text-tertiary); + ${tokens.textAfterColor}: var(--text-tertiary); + ${tokens.labelColor}: var(--text-primary); + ${tokens.leftHelperColor}: var(--text-warning); + ${tokens.titleCaptionColor}: var(--text-secondary); + ${tokens.hintIconColor}: var(--text-secondary); + + ${tokens.contentSlotColor}: var(--text-secondary); + ${tokens.contentSlotColorHover}: var(--text-secondary-hover); + ${tokens.contentSlotColorActive}: var(--text-secondary-active); + + ${tokens.dividerColor}: var(--surface-warning); + ${tokens.dividerColorHover}: var(--surface-warning); + ${tokens.dividerColorFocus}: var(--surface-accent); + + ${tokens.chipCloseIconColor}: var(--text-secondary); + ${tokens.chipColor}: var(--text-primary); + ${tokens.chipBackground}: var(--surface-transparent-secondary); + ${tokens.chipColorHover}: var(--text-primary); + ${tokens.chipBackgroundHover}: var(--surface-transparent-secondary-hover); + ${tokens.chipColorActive}: var(--text-primary); + ${tokens.chipBackgroundActive}: var(--surface-transparent-secondary-active); + ${tokens.chipBackgroundReadOnly}: var(--surface-transparent-secondary); + ${tokens.chipColorReadOnly}: var(--text-primary); + ${tokens.chipBackgroundReadOnlyHover}: var(--surface-transparent-secondary); + ${tokens.chipColorReadOnlyHover}: var(--text-primary); + ${tokens.chipOpacityReadonly}: 0.72; + + ${tokens.focusColor}: var(--text-accent); + ${tokens.indicatorColor}: var(--surface-negative); + ${tokens.optionalColor}: var(--text-tertiary); + `, + negative: css` + ${tokens.color}: var(--text-primary); + ${tokens.clearColor}: var(--text-negative); + ${tokens.clearPlaceholderColor}: var(--text-negative); + ${tokens.placeholderColorFocus}: var(--text-tertiary); + ${tokens.clearPlaceholderColorFocus}: var(--text-negative); + ${tokens.backgroundColor}: var(--surface-transparent-negative); + ${tokens.backgroundColorHover}: var(--surface-transparent-negative-hover); + ${tokens.backgroundColorFocus}: var(--surface-transparent-negative-active); + ${tokens.caretColor}: var(--text-accent); + ${tokens.placeholderColor}: var(--text-secondary); + ${tokens.textBeforeColor}: var(--text-tertiary); + ${tokens.textAfterColor}: var(--text-tertiary); + ${tokens.labelColor}: var(--text-primary); + ${tokens.leftHelperColor}: var(--text-negative); + ${tokens.titleCaptionColor}: var(--text-secondary); + ${tokens.hintIconColor}: var(--text-secondary); + + ${tokens.contentSlotColor}: var(--text-secondary); + ${tokens.contentSlotColorHover}: var(--text-secondary-hover); + ${tokens.contentSlotColorActive}: var(--text-secondary-active); + + ${tokens.dividerColor}: var(--surface-negative); + ${tokens.dividerColorHover}: var(--surface-negative); + ${tokens.dividerColorFocus}: var(--surface-accent); + + ${tokens.chipCloseIconColor}: var(--text-secondary); + ${tokens.chipColor}: var(--text-primary); + ${tokens.chipBackground}: var(--surface-transparent-secondary); + ${tokens.chipColorHover}: var(--text-primary); + ${tokens.chipBackgroundHover}: var(--surface-transparent-secondary-hover); + ${tokens.chipColorActive}: var(--text-primary); + ${tokens.chipBackgroundActive}: var(--surface-transparent-secondary-active); + ${tokens.chipBackgroundReadOnly}: var(--surface-transparent-secondary); + ${tokens.chipColorReadOnly}: var(--text-primary); + ${tokens.chipBackgroundReadOnlyHover}: var(--surface-transparent-secondary); + ${tokens.chipColorReadOnlyHover}: var(--text-primary); + ${tokens.chipOpacityReadonly}: 0.72; + + ${tokens.focusColor}: var(--text-accent); + ${tokens.indicatorColor}: var(--surface-negative); + ${tokens.optionalColor}: var(--text-tertiary); + `, + }, + size: { + l: css` + ${tokens.height}: 3.5rem; + ${tokens.padding}: 1.0625rem 1.125rem 1.0625rem 1.125rem; + ${tokens.paddingWithChips}: 0.375rem; + ${tokens.borderRadius}: 0.875rem; + + ${tokens.leftContentMargin}: -0.0625rem 0.5rem -0.0625rem -0.125rem; + ${tokens.rightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.labelOffset}: 0.75rem; + ${tokens.clearLabelOffset}: 0.25rem; + ${tokens.labelFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.labelFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.labelFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.labelFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.hintMargin}: -0.688rem -0.5rem; + ${tokens.hintTargetSize}: 2.375rem; + ${tokens.hintInnerLabelPlacementOffset}: -0.751rem -2rem auto auto; + ${tokens.clearHintInnerLabelPlacementOffset}: 0.562rem -2.063rem auto auto; + + ${tokens.titleCaptionInnerLabelOffset}: 0.25rem; + ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.titleCaptionFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.titleCaptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.titleCaptionLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.leftHelperOffset}: 0.25rem; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.labelInnerPadding}: 0.5625rem 0 0.125rem 0; + ${tokens.contentLabelInnerPadding}: 1.5625rem 0 0.5625rem 0; + ${tokens.textBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textAfterMargin}: 0 0 0 0.25rem; + + ${tokens.chipGap}: 0.25rem; + ${tokens.chipBorderRadius}: 0.5rem; + ${tokens.chipWidth}: auto; + ${tokens.chipHeight}: 2.75rem; + ${tokens.chipPadding}: 0 0.75rem 0 1rem; + ${tokens.chipClearContentMarginLeft}: 0.625rem; + ${tokens.chipClearContentMarginRight}: 0rem; + ${tokens.chipCloseIconSize}: 1.5rem; + ${tokens.chipFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.chipFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.chipFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.chipFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.chipLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.chipLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.indicatorSizeInner}: 0.5rem; + ${tokens.indicatorSizeOuter}: 0.375rem; + ${tokens.indicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.indicatorLabelPlacementOuter}: 0.5rem auto auto -0.75rem; + ${tokens.indicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.indicatorLabelPlacementOuterRight}: 0.25rem -0.625rem auto auto; + ${tokens.clearIndicatorLabelPlacementInner}: 1.5rem auto auto -0.875rem; + ${tokens.clearIndicatorLabelPlacementInnerRight}: 1.5rem -0.875rem auto auto; + ${tokens.clearIndicatorHintInnerRight}: 1.5rem -2.25rem auto auto; + `, + m: css` + ${tokens.height}: 3rem; + ${tokens.padding}: 0.875rem 1rem 0.875rem 1rem; + ${tokens.paddingWithChips}: 0.375rem; + ${tokens.borderRadius}: 0.75rem; + + ${tokens.leftContentMargin}: -0.125rem 0.375rem -0.125rem -0.125rem; + ${tokens.rightContentMargin}: -0.125rem -0.125rem -0.125rem 0.75rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.labelOffset}: 0.625rem; + ${tokens.clearLabelOffset}: 0.25rem; + ${tokens.labelFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.labelFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.labelFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.labelFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.hintMargin}: -0.688rem -0.5rem; + ${tokens.hintTargetSize}: 2.375rem; + ${tokens.hintInnerLabelPlacementOffset}: -0.751rem -2rem auto auto; + ${tokens.clearHintInnerLabelPlacementOffset}: 0.312rem -2.063rem auto auto; + + ${tokens.titleCaptionInnerLabelOffset}: 0.25rem; + ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.titleCaptionFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.titleCaptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.titleCaptionLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.leftHelperOffset}: 0.25rem; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.labelInnerPadding}: 0.375rem 0 0.125rem 0; + ${tokens.contentLabelInnerPadding}: 1.375rem 0 0.375rem 0; + ${tokens.textBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textAfterMargin}: 0 0 0 0.25rem; + + ${tokens.chipGap}: 0.25rem; + ${tokens.chipBorderRadius}: 0.375rem; + ${tokens.chipWidth}: auto; + ${tokens.chipHeight}: 2.25rem; + ${tokens.chipPadding}: 0 0.625rem 0 0.875rem; + ${tokens.chipClearContentMarginLeft}: 0.5rem; + ${tokens.chipClearContentMarginRight}: 0rem; + ${tokens.chipCloseIconSize}: 1.25rem; + ${tokens.chipFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.chipFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.chipFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.chipFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.chipLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.chipLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.indicatorSizeInner}: 0.5rem; + ${tokens.indicatorSizeOuter}: 0.375rem; + ${tokens.indicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.indicatorLabelPlacementOuter}: 0.375rem auto auto -0.75rem; + ${tokens.indicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.indicatorLabelPlacementOuterRight}: 0.25rem -0.6875rem auto auto; + ${tokens.clearIndicatorLabelPlacementInner}: 1.25rem auto auto -0.875rem; + ${tokens.clearIndicatorLabelPlacementInnerRight}: 1.25rem -0.875rem auto auto; + ${tokens.clearIndicatorHintInnerRight}: 1.25rem -2.25rem auto auto; + `, + s: css` + ${tokens.height}: 2.5rem; + ${tokens.padding}: 0.6875rem 0.875rem 0.6875rem 0.875rem; + ${tokens.paddingWithChips}: 0.375rem; + ${tokens.borderRadius}: 0.625rem; + + ${tokens.leftContentMargin}: -0.1875rem 0.25rem -0.1875rem -0.125rem; + ${tokens.rightContentMargin}: -0.1875rem -0.125rem -0.1875rem 0.75rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.labelOffset}: 0.5rem; + ${tokens.clearLabelOffset}: 0.25rem; + ${tokens.labelFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.labelFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.labelFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.labelFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.hintMargin}: -0.688rem -0.5rem; + ${tokens.hintTargetSize}: 2.375rem; + ${tokens.hintInnerLabelPlacementOffset}: -0.751rem -2rem auto auto; + ${tokens.clearHintInnerLabelPlacementOffset}: 0.062rem -2.063rem auto auto; + + ${tokens.titleCaptionInnerLabelOffset}: 0.25rem; + ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.titleCaptionFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.titleCaptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.titleCaptionLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.leftHelperOffset}: 0.25rem; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.labelInnerPadding}: 0.3125rem 0 0 0; + ${tokens.contentLabelInnerPadding}: 1.0625rem 0 0.3125rem 0; + ${tokens.textBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textAfterMargin}: 0 0 0 0.25rem; + + ${tokens.chipGap}: 0.25rem; + ${tokens.chipBorderRadius}: 0.25rem; + ${tokens.chipWidth}: auto; + ${tokens.chipHeight}: 1.75rem; + ${tokens.chipPadding}: 0 0.5rem 0 0.75rem; + ${tokens.chipClearContentMarginLeft}: 0.375rem; + ${tokens.chipClearContentMarginRight}: 0rem; + ${tokens.chipCloseIconSize}: 1rem; + ${tokens.chipFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.chipFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.chipFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.chipFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.chipLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.chipLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.indicatorSizeInner}: 0.375rem; + ${tokens.indicatorSizeOuter}: 0.375rem; + ${tokens.indicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.indicatorLabelPlacementOuter}: 0.3125rem auto auto -0.6875rem; + ${tokens.indicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.indicatorLabelPlacementOuterRight}: 0.25rem -0.625rem auto auto; + ${tokens.clearIndicatorLabelPlacementInner}: 1.063rem auto auto -0.75rem; + ${tokens.clearIndicatorLabelPlacementInnerRight}: 1.063rem -0.75rem auto auto; + ${tokens.clearIndicatorHintInnerRight}: 1.063rem -2.125rem auto auto; + `, + xs: css` + ${tokens.height}: 2rem; + ${tokens.padding}: 0.5625rem 0.625rem 0.5625rem 0.625rem; + ${tokens.paddingWithChips}: 0.375rem; + ${tokens.borderRadius}: 0.5rem; + + ${tokens.leftContentMargin}: -0.0625rem 0.25rem -0.0625rem -0.125rem; + ${tokens.rightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.labelOffset}: 0.375rem; + ${tokens.clearLabelOffset}: 0.25rem; + ${tokens.labelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.labelFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.labelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.labelFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.hintMargin}: -0.75rem -0.625rem -0.75rem -0.5rem; + ${tokens.hintTargetSize}: 2.375rem; + ${tokens.hintInnerLabelPlacementOffset}: -0.751rem -1.875rem auto auto; + ${tokens.clearHintInnerLabelPlacementOffset}: -0.188rem -1.938rem auto auto; + + ${tokens.titleCaptionInnerLabelOffset}: 0.25rem; + ${tokens.titleCaptionFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.titleCaptionFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.titleCaptionFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.titleCaptionFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.titleCaptionLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.titleCaptionLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.leftHelperOffset}: 0.25rem; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.labelInnerPadding}: 0.3125rem 0 0 0; + ${tokens.contentLabelInnerPadding}: 1.0625rem 0 0.3125rem 0; + ${tokens.textBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textAfterMargin}: 0 0 0 0.25rem; + + ${tokens.chipGap}: 0.25rem; + ${tokens.chipBorderRadius}: 0.125rem; + ${tokens.chipWidth}: auto; + ${tokens.chipHeight}: 1.25rem; + ${tokens.chipPadding}: 0 0.375rem 0 0.625rem; + ${tokens.chipClearContentMarginLeft}: 0.25rem; + ${tokens.chipClearContentMarginRight}: 0rem; + ${tokens.chipCloseIconSize}: 0.75rem; + ${tokens.chipFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.chipFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.chipFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.chipFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.chipLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.chipLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.indicatorSizeInner}: 0.375rem; + ${tokens.indicatorSizeOuter}: 0.375rem; + ${tokens.indicatorLabelPlacementInner}: 0 0 0 0; + ${tokens.indicatorLabelPlacementOuter}: 0.25rem auto auto -0.625rem; + ${tokens.indicatorLabelPlacementInnerRight}: 0 0 auto auto; + ${tokens.indicatorLabelPlacementOuterRight}: 0.125rem -0.6875rem auto auto; + ${tokens.clearIndicatorLabelPlacementInner}: 0.813rem auto auto -0.625rem; + ${tokens.clearIndicatorLabelPlacementInnerRight}: 0.813rem -0.625rem auto auto; + ${tokens.clearIndicatorHintInnerRight}: 0.813rem -1.875rem auto auto; + `, + }, + labelPlacement: { + inner: css` + ${tokens.placeholderColor}: var(--plasma-input-label-color, var(--plasma-input-placeholder-color, var(--text-secondary))); + ${tokens.labelInnerFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.labelInnerFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.labelInnerFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.labelInnerFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.labelInnerLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.labelInnerLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + outer: css``, + }, + clear: { + true: css``, + }, + chipView: { + default: css` + ${tokens.chipColor}: var(--inverse-text-primary); + ${tokens.chipBackground}: var(--surface-solid-default); + ${tokens.chipColorHover}: var(--inverse-text-primary); + ${tokens.chipBackgroundHover}: var(--surface-solid-default-hover); + ${tokens.chipColorActive}: var(--inverse-text-primary); + ${tokens.chipBackgroundActive}: var(--surface-solid-default-active); + ${tokens.chipBackgroundReadOnly}: var(--surface-solid-default); + ${tokens.chipColorReadOnly}: var(--inverse-text-primary); + ${tokens.chipBackgroundReadOnlyHover}: var(--surface-solid-default); + ${tokens.chipColorReadOnlyHover}: var(--inverse-text-primary); + + ${tokens.chipCloseIconColor}: var(--inverse-text-secondary); + ${tokens.chipOpacityReadonly}: 0.72; + `, + secondary: css` + ${tokens.chipColor}: var(--text-primary); + ${tokens.chipBackground}: var(--surface-transparent-secondary); + ${tokens.chipColorHover}: var(--text-primary); + ${tokens.chipBackgroundHover}: var(--surface-transparent-secondary-hover); + ${tokens.chipColorActive}: var(--text-primary); + ${tokens.chipBackgroundActive}: var(--surface-transparent-secondary-active); + ${tokens.chipBackgroundReadOnly}: var(--surface-transparent-secondary); + ${tokens.chipColorReadOnly}: var(--text-primary); + ${tokens.chipBackgroundReadOnlyHover}: var(--surface-transparent-secondary); + ${tokens.chipColorReadOnlyHover}: var(--text-primary); + + ${tokens.chipCloseIconColor}: var(--text-secondary); + ${tokens.chipOpacityReadonly}: 0.72; + `, + accent: css` + ${tokens.chipColor}: var(--on-dark-text-primary); + ${tokens.chipBackground}: var(--surface-accent); + ${tokens.chipColorHover}: var(--on-dark-text-primary); + ${tokens.chipBackgroundHover}: var(--surface-accent-hover); + ${tokens.chipColorActive}: var(--on-dark-text-primary); + ${tokens.chipBackgroundActive}: var(--surface-accent-active); + ${tokens.chipBackgroundReadOnly}: var(--surface-accent); + ${tokens.chipColorReadOnly}: var(--on-dark-text-primary); + ${tokens.chipBackgroundReadOnlyHover}: var(--surface-accent); + ${tokens.chipColorReadOnlyHover}: var(--on-dark-text-primary); + + ${tokens.chipCloseIconColor}: var(--on-dark-text-secondary); + ${tokens.chipOpacityReadonly}: 0.72; + `, + positive: css` + ${tokens.chipColor}: var(--on-dark-text-primary); + ${tokens.chipBackground}: var(--surface-positive); + ${tokens.chipColorHover}: var(--on-dark-text-primary); + ${tokens.chipBackgroundHover}: var(--surface-positive-hover); + ${tokens.chipColorActive}: var(--on-dark-text-primary); + ${tokens.chipBackgroundActive}: var(--surface-positive-active); + ${tokens.chipBackgroundReadOnly}: var(--surface-positive); + ${tokens.chipColorReadOnly}: var(--on-dark-text-primary); + ${tokens.chipBackgroundReadOnlyHover}: var(--surface-positive); + ${tokens.chipColorReadOnlyHover}: var(--on-dark-text-primary); + + ${tokens.chipCloseIconColor}: var(--on-dark-text-secondary); + ${tokens.chipOpacityReadonly}: 0.72; + `, + warning: css` + ${tokens.chipColor}: var(--on-dark-text-primary); + ${tokens.chipBackground}: var(--surface-warning); + ${tokens.chipColorHover}: var(--on-dark-text-primary); + ${tokens.chipBackgroundHover}: var(--surface-warning-hover); + ${tokens.chipColorActive}: var(--on-dark-text-primary); + ${tokens.chipBackgroundActive}: var(--surface-warning-active); + ${tokens.chipBackgroundReadOnly}: var(--surface-warning); + ${tokens.chipColorReadOnly}: var(--on-dark-text-primary); + ${tokens.chipBackgroundReadOnlyHover}: var(--surface-warning); + ${tokens.chipColorReadOnlyHover}: var(--on-dark-text-primary); + + ${tokens.chipCloseIconColor}: var(--on-dark-text-secondary); + ${tokens.chipOpacityReadonly}: 0.72; + `, + negative: css` + ${tokens.chipColor}: var(--on-dark-text-primary); + ${tokens.chipBackground}: var(--surface-negative); + ${tokens.chipColorHover}: var(--on-dark-text-primary); + ${tokens.chipBackgroundHover}: var(--surface-negative-hover); + ${tokens.chipColorActive}: var(--on-dark-text-primary); + ${tokens.chipBackgroundActive}: var(--surface-negative-active); + ${tokens.chipBackgroundReadOnly}: var(--surface-negative); + ${tokens.chipColorReadOnly}: var(--on-dark-text-primary); + ${tokens.chipBackgroundReadOnlyHover}: var(--surface-negative); + ${tokens.chipColorReadOnlyHover}: var(--on-dark-text-primary); + + ${tokens.chipCloseIconColor}: var(--on-dark-text-secondary); + ${tokens.chipOpacityReadonly}: 0.72; + `, + }, + hintView: { + default: css` + ${tokens.tooltipBackgroundColor}: var(--surface-solid-card-brightness); + ${tokens.tooltipBoxShadow}: var(--shadow-down-hard-m); + ${tokens.tooltipColor}: var(--text-primary); + ${tokens.tooltipArrowBackground}: var(--surface-solid-card-brightness); + `, + }, + hintSize: { + m: css` + ${tokens.tooltipPaddingTop}: 0.6875rem; + ${tokens.tooltipPaddingRight}: 0.875rem; + ${tokens.tooltipPaddingBottom}: 0.6875rem; + ${tokens.tooltipPaddingLeft}: 0.875rem; + + ${tokens.tooltipMinHeight}: 2.5rem; + ${tokens.tooltipBorderRadius}: 0.625rem; + + ${tokens.tooltipTextFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.tooltipTextFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.tooltipTextFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.tooltipTextFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.tooltipTextFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.tooltipTextFontLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.tooltipContentLeftMargin}: 0.375rem; + + ${tokens.tooltipArrowMaskWidth}: 1.25rem; + ${tokens.tooltipArrowMaskHeight}: 1.25rem; + ${tokens.tooltipArrowMaskImage}: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMC4xNywxMS44M2wyMCwwYy01LjUyLDAgLTEwLDMuNTkgLTEwLDhjMCwtNC40MSAtNC40OCwtOCAtMTAsLTh6IiBmaWxsPSIjMTcxNzE3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJUYWlsIi8+Cjwvc3ZnPg=="); + ${tokens.tooltipArrowHeight}: 0.5rem; + ${tokens.tooltipArrowEdgeMargin}: 0.625rem; + `, + s: css` + ${tokens.tooltipPaddingTop}: 0.5rem; + ${tokens.tooltipPaddingRight}: 0.75rem; + ${tokens.tooltipPaddingBottom}: 0.5rem; + ${tokens.tooltipPaddingLeft}: 0.75rem; + + ${tokens.tooltipMinHeight}: 2rem; + ${tokens.tooltipBorderRadius}: 0.5rem; + + ${tokens.tooltipTextFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.tooltipTextFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.tooltipTextFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.tooltipTextFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.tooltipTextFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.tooltipTextFontLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.tooltipContentLeftMargin}: 0.25rem; + + ${tokens.tooltipArrowMaskWidth}: 1rem; + ${tokens.tooltipArrowMaskHeight}: 1rem; + ${tokens.tooltipArrowMaskImage}: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMCw5Ljg1bDE2LDBjLTQuNDEsMCAtOCwyLjY5IC04LDZjMCwtMy4zMSAtMy41OSwtNiAtOCwtNnoiIGZpbGw9IiMxNzE3MTciIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9IlRhaWwiLz4KPC9zdmc+"); + ${tokens.tooltipArrowHeight}: 0.375rem; + ${tokens.tooltipArrowEdgeMargin}: 0.5625rem; + `, + }, + disabled: { + true: css` + ${tokens.disabledOpacity}: 0.4; + `, + }, + readOnly: { + true: css` + ${tokens.colorReadOnly}: var(--text-secondary); + ${tokens.backgroundColorReadOnly}: var(--surface-transparent-primary); + ${tokens.placeholderColorReadOnly}: var(--text-secondary); + ${tokens.leftHelperColorReadOnly}: var(--text-secondary); + ${tokens.titleCaptionColorReadOnly}: var(--text-secondary); + ${tokens.labelColorReadOnly}: var(--text-secondary); + ${tokens.dividerColorReadOnly}: var(--surface-transparent-primary); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/TextField/TextField.stories.tsx b/packages/plasma-giga/src/components/TextField/TextField.stories.tsx new file mode 100644 index 0000000000..34628d21b4 --- /dev/null +++ b/packages/plasma-giga/src/components/TextField/TextField.stories.tsx @@ -0,0 +1,344 @@ +import React, { useState } from 'react'; +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; +import type { PopoverPlacement } from '@salutejs/plasma-new-hope'; +import { IconBellFill } from '@salutejs/plasma-icons'; + +import { TextField } from '.'; + +const onChange = action('onChange'); +const onFocus = action('onFocus'); +const onBlur = action('onBlur'); +const onSearch = action('onSearch'); +const onChipsChange = action('onChipsChange'); + +const sizes = ['l', 'm', 's', 'xs']; +const views = ['default', 'positive', 'warning', 'negative']; +const chipViews = ['default', 'secondary', 'accent', 'positive', 'warning', 'negative']; +const hintViews = ['default']; +const hintSizes = ['m', 's']; +const hintTriggers = ['hover', 'click']; +const labelPlacements = ['outer', 'inner']; +const placements: Array<PopoverPlacement> = [ + 'top', + 'top-start', + 'top-end', + + 'bottom', + 'bottom-start', + 'bottom-end', + + 'left', + 'left-start', + 'left-end', + + 'right', + 'right-start', + 'right-end', + + 'auto', +]; + +const meta: Meta<typeof TextField> = { + title: 'Data Entry/TextField', + component: TextField, + decorators: [InSpacingDecorator], + argTypes: { + requiredPlacement: { + options: ['left', 'right'], + control: { + type: 'select', + }, + }, + required: { + control: { + type: 'boolean', + }, + if: { arg: 'optional', truthy: false }, + }, + optional: { + control: { + type: 'boolean', + }, + if: { arg: 'required', truthy: false }, + }, + hasDivider: { + control: { + type: 'boolean', + }, + if: { arg: 'clear', truthy: true }, + }, + view: { + options: views, + control: { + type: 'select', + }, + }, + labelPlacement: { + options: labelPlacements, + control: { + type: 'inline-radio', + }, + }, + keepPlaceholder: { + control: { + type: 'boolean', + }, + if: { arg: 'labelPlacement', eq: 'inner' }, + }, + size: { + options: sizes, + control: { + type: 'inline-radio', + }, + }, + hintText: { + control: { type: 'text' }, + if: { arg: 'hasHint', truthy: true }, + }, + hintView: { + options: hintViews, + control: { + type: 'select', + }, + if: { arg: 'hasHint', truthy: true }, + }, + hintSize: { + options: hintSizes, + control: { + type: 'select', + }, + if: { arg: 'hasHint', truthy: true }, + }, + hintTrigger: { + options: hintTriggers, + control: { + type: 'inline-radio', + }, + if: { arg: 'hasHint', truthy: true }, + }, + hintPlacement: { + options: placements, + control: { + type: 'select', + }, + if: { arg: 'hasHint', truthy: true }, + mappers: placements, + }, + hintHasArrow: { + control: { type: 'boolean' }, + if: { arg: 'hasHint', truthy: true }, + }, + hintWidth: { + control: { type: 'text' }, + if: { arg: 'hasHint', truthy: true }, + }, + chipType: { + control: 'select', + options: ['default', 'text'], + }, + ...disableProps([ + 'contentLeft', + 'contentRight', + 'onChange', + 'onSearch', + 'onChangeChips', + 'enumerationType', + 'values', + 'hintTargetIcon', + 'hintOffset', + 'hintContentLeft', + 'chips', + 'chipValidator', + 'onFocus', + 'onBlur', + 'name', + 'value', + 'type', + 'minLength', + 'maxLength', + 'checked', + ]), + }, +}; + +export default meta; + +type StoryPropsDefault = Omit< + ComponentProps<typeof TextField>, + | 'helperBlock' + | 'contentLeft' + | 'htmlSize' + | 'contentRight' + | 'type' + | 'name' + | 'onFocus' + | 'onBlur' + | 'onChange' + | 'value' + | 'checked' + | 'maxLength' + | 'minLength' + | 'required' + | 'enumerationType' + | 'chips' + | 'onChangeChips' +> & { + hasHint: boolean; + enableContentLeft: boolean; + enableContentRight: boolean; +}; + +const StoryDemo = ({ enableContentLeft, enableContentRight, view, ...rest }: StoryPropsDefault) => { + const [text, setText] = useState('Значение поля'); + + const iconSize = rest.size === 'xs' ? 'xs' : 's'; + + return ( + <div style={{ display: 'flex', flexDirection: 'column', gap: '2rem', width: '70%', margin: '0 auto' }}> + <TextField + {...rest} + value={text} + contentLeft={enableContentLeft ? <IconBellFill color="inherit" size={iconSize} /> : undefined} + contentRight={enableContentRight ? <IconBellFill color="inherit" size={iconSize} /> : undefined} + view={view} + onChange={(e) => { + setText(e.target.value); + onChange(e.target.value); + }} + onFocus={onFocus} + onBlur={onBlur} + onSearch={onSearch} + /> + + <TextField + {...rest} + label="Uncontrolled TextField" + defaultValue="Дефолтное значение" + contentLeft={enableContentLeft ? <IconBellFill color="inherit" size={iconSize} /> : undefined} + contentRight={enableContentRight ? <IconBellFill color="inherit" size={iconSize} /> : undefined} + view={view} + onChange={(e) => { + setText(e.target.value); + onChange(e.target.value); + }} + onFocus={onFocus} + onBlur={onBlur} + onSearch={onSearch} + /> + </div> + ); +}; + +export const Default: StoryObj<StoryPropsDefault> = { + argsTypes: { + ...disableProps(['chipView']), + }, + args: { + id: 'example-text-field', + size: 'm', + view: 'default', + label: 'Лейбл', + labelPlacement: 'outer', + keepPlaceholder: false, + placeholder: 'Заполните поле', + titleCaption: 'Подпись к полю', + leftHelper: 'Подсказка к полю', + disabled: false, + readOnly: false, + enableContentLeft: true, + enableContentRight: true, + required: false, + requiredPlacement: 'right', + optional: false, + clear: false, + hasDivider: false, + hasHint: true, + hintText: 'Текст подсказки', + hintTrigger: 'hover', + hintView: 'default', + hintSize: 'm', + hintPlacement: 'auto', + hintWidth: '10rem', + hintHasArrow: true, + }, + parameters: { + controls: { + exclude: ['chipType'], + }, + }, + render: (args) => <StoryDemo {...args} />, +}; + +type StoryPropsChips = Omit< + ComponentProps<typeof TextField>, + | 'helperBlock' + | 'contentLeft' + | 'htmlSize' + | 'contentRight' + | 'type' + | 'name' + | 'onFocus' + | 'onBlur' + | 'onChange' + | 'onSearch' + | 'value' + | 'checked' + | 'maxLength' + | 'minLength' + | 'required' + | 'enumerationType' +> & { + hasHint: boolean; + enableContentLeft: boolean; + enableContentRight: boolean; +}; + +const StoryChips = ({ enableContentLeft, enableContentRight, view, ...rest }: StoryPropsChips) => { + const [text, setText] = useState('Значение поля'); + + const iconSize = rest.size === 'xs' ? 'xs' : 's'; + + const validateChip = (value) => (value === '1 value' ? { view: 'negative' } : {}); + + return ( + <TextField + {...rest} + style={{ width: '70%', margin: '0 auto' }} + enumerationType="chip" + value={text} + contentLeft={enableContentLeft ? <IconBellFill color="inherit" size={iconSize} /> : undefined} + contentRight={enableContentRight ? <IconBellFill color="inherit" size={iconSize} /> : undefined} + view={view} + onChange={(e) => { + setText(e.target.value); + onChange(e.target.value); + }} + onFocus={onFocus} + onBlur={onBlur} + chipValidator={validateChip} + onChangeChips={onChipsChange} + /> + ); +}; + +export const Chips: StoryObj<StoryPropsChips> = { + argTypes: { + chipView: { + options: chipViews, + control: { + type: 'select', + }, + }, + }, + args: { + ...Default.args, + leftHelper: 'Для первого чипа валидация вернула view="negative"', + chipView: 'secondary', + chips: ['1 value', '2 value', '3 value', '4 value'], + chipType: 'default', + }, + render: (args) => <StoryChips {...args} />, +}; diff --git a/packages/plasma-giga/src/components/TextField/TextField.tsx b/packages/plasma-giga/src/components/TextField/TextField.tsx new file mode 100644 index 0000000000..60a4c319a0 --- /dev/null +++ b/packages/plasma-giga/src/components/TextField/TextField.tsx @@ -0,0 +1,10 @@ +import { textFieldConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './TextField.config'; + +const mergedConfig = mergeConfig(textFieldConfig, config); + +/** + * Поле ввода текста. + */ +export const TextField = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/TextField/index.ts b/packages/plasma-giga/src/components/TextField/index.ts new file mode 100644 index 0000000000..cf27a043fd --- /dev/null +++ b/packages/plasma-giga/src/components/TextField/index.ts @@ -0,0 +1,3 @@ +export { TextField } from './TextField'; +export { textFieldTokens } from '@salutejs/plasma-new-hope/styled-components'; +export type { TextFieldProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/TextFieldGroup/TextFieldGroup.config.ts b/packages/plasma-giga/src/components/TextFieldGroup/TextFieldGroup.config.ts new file mode 100644 index 0000000000..200d2e26ac --- /dev/null +++ b/packages/plasma-giga/src/components/TextFieldGroup/TextFieldGroup.config.ts @@ -0,0 +1,262 @@ +import { css, textFieldGroupTokens as tokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + size: 'm', + }, + variations: { + size: { + l: css` + ${tokens.textFieldDefaultRadius}: 0.875rem; + ${tokens.textFieldSegmentedRadius}: 0.375rem; + ${tokens.textFieldSideRadius}: 0.875rem; + + ${tokens.height}: 3.5rem; + ${tokens.padding}: 1.0625rem 1.125rem 1.0625rem 1.125rem; + ${tokens.paddingWithChips}: 0.375rem; + + ${tokens.leftContentMargin}: -0.0625rem 0.5rem -0.0625rem -0.125rem; + ${tokens.rightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + + ${tokens.textBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textAfterMargin}: 0 0 0 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.labelOffset}: 0.75rem; + ${tokens.labelFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.labelFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.labelFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.labelFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-l-line-height); + + ${tokens.leftHelperOffset}: 0.25rem; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.labelInnerPadding}: 0.5625rem 0 0.125rem 0; + ${tokens.contentLabelInnerPadding}: 1.5625rem 0 0.5625rem 0; + + ${tokens.chipGap}: 0.25rem; + ${tokens.chipBorderRadius}: 0.5rem; + ${tokens.chipWidth}: auto; + ${tokens.chipHeight}: 2.75rem; + ${tokens.chipPadding}: 0 0.75rem 0 1rem; + ${tokens.chipClearContentMarginLeft}: 0.625rem; + ${tokens.chipClearContentMarginRight}: 0rem; + ${tokens.chipCloseIconSize}: 1.5rem; + ${tokens.chipFontFamily}: var(--plasma-typo-body-l-font-family); + ${tokens.chipFontSize}: var(--plasma-typo-body-l-font-size); + ${tokens.chipFontStyle}: var(--plasma-typo-body-l-font-style); + ${tokens.chipFontWeight}: var(--plasma-typo-body-l-font-weight); + ${tokens.chipLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${tokens.chipLineHeight}: var(--plasma-typo-body-l-line-height); + `, + m: css` + ${tokens.textFieldDefaultRadius}: 0.75rem; + ${tokens.textFieldSegmentedRadius}: 0.25rem; + ${tokens.textFieldSideRadius}: 0.75rem; + + ${tokens.height}: 3rem; + ${tokens.padding}: 0.875rem 1rem 0.875rem 1rem; + ${tokens.paddingWithChips}: 0.375rem; + + ${tokens.leftContentMargin}: -0.125rem 0.375rem -0.125rem -0.125rem; + ${tokens.rightContentMargin}: -0.125rem -0.125rem -0.125rem 0.75rem; + + ${tokens.textBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textAfterMargin}: 0 0 0 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.labelOffset}: 0.625rem; + ${tokens.labelFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.labelFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.labelFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.labelFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-m-line-height); + + ${tokens.leftHelperOffset}: 0.25rem; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.labelInnerPadding}: 0.375rem 0 0.125rem 0; + ${tokens.contentLabelInnerPadding}: 1.375rem 0 0.375rem 0; + + ${tokens.chipGap}: 0.25rem; + ${tokens.chipBorderRadius}: 0.375rem; + ${tokens.chipWidth}: auto; + ${tokens.chipHeight}: 2.25rem; + ${tokens.chipPadding}: 0 0.625rem 0 0.875rem; + ${tokens.chipClearContentMarginLeft}: 0.5rem; + ${tokens.chipClearContentMarginRight}: 0rem; + ${tokens.chipCloseIconSize}: 1.25rem; + ${tokens.chipFontFamily}: var(--plasma-typo-body-m-font-family); + ${tokens.chipFontSize}: var(--plasma-typo-body-m-font-size); + ${tokens.chipFontStyle}: var(--plasma-typo-body-m-font-style); + ${tokens.chipFontWeight}: var(--plasma-typo-body-m-font-weight); + ${tokens.chipLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${tokens.chipLineHeight}: var(--plasma-typo-body-m-line-height); + `, + s: css` + ${tokens.textFieldSegmentedRadius}: 0.25rem; + ${tokens.textFieldSideRadius}: 0.625rem; + ${tokens.textFieldDefaultRadius}: 0.625rem; + + ${tokens.height}: 2.5rem; + ${tokens.padding}: 0.6875rem 0.875rem 0.6875rem 0.875rem; + ${tokens.paddingWithChips}: 0.375rem; + + ${tokens.leftContentMargin}: -0.1875rem 0.25rem -0.1875rem -0.125rem; + ${tokens.rightContentMargin}: -0.1875rem -0.125rem -0.1875rem 0.75rem; + + ${tokens.textBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textAfterMargin}: 0 0 0 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.labelOffset}: 0.5rem; + ${tokens.labelFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.labelFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.labelFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.labelFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tokens.leftHelperOffset}: 0.25rem; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.labelInnerPadding}: 0.3125rem 0 0 0; + ${tokens.contentLabelInnerPadding}: 1.0625rem 0 0.3125rem 0; + + ${tokens.chipGap}: 0.25rem; + ${tokens.chipBorderRadius}: 0.25rem; + ${tokens.chipWidth}: auto; + ${tokens.chipHeight}: 1.75rem; + ${tokens.chipPadding}: 0 0.5rem 0 0.75rem; + ${tokens.chipClearContentMarginLeft}: 0.375rem; + ${tokens.chipClearContentMarginRight}: 0rem; + ${tokens.chipCloseIconSize}: 1rem; + ${tokens.chipFontFamily}: var(--plasma-typo-body-s-font-family); + ${tokens.chipFontSize}: var(--plasma-typo-body-s-font-size); + ${tokens.chipFontStyle}: var(--plasma-typo-body-s-font-style); + ${tokens.chipFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tokens.chipLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tokens.chipLineHeight}: var(--plasma-typo-body-s-line-height); + `, + xs: css` + ${tokens.textFieldSegmentedRadius}: 0.125rem; + ${tokens.textFieldDefaultRadius}: 0.5rem; + ${tokens.textFieldSideRadius}: 0.5rem; + + ${tokens.height}: 2rem; + ${tokens.padding}: 0.5625rem 0.625rem 0.5625rem 0.625rem; + ${tokens.paddingWithChips}: 0.375rem; + + ${tokens.leftContentMargin}: -0.0625rem 0.25rem -0.0625rem -0.125rem; + ${tokens.rightContentMargin}: -0.0625rem -0.125rem -0.0625rem 0.75rem; + + ${tokens.textBeforeMargin}: 0 0.25rem 0 0; + ${tokens.textAfterMargin}: 0 0 0 0.25rem; + + ${tokens.fontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.fontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.fontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.fontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.letterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.lineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.labelOffset}: 0.375rem; + ${tokens.labelFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.labelFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.labelFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.labelFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.labelLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.labelLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.leftHelperOffset}: 0.25rem; + ${tokens.leftHelperFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.leftHelperFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.leftHelperFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.leftHelperFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.leftHelperLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.leftHelperLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tokens.labelInnerPadding}: 0.3125rem 0 0 0; + ${tokens.contentLabelInnerPadding}: 1.0625rem 0 0.3125rem 0; + + ${tokens.chipGap}: 0.25rem; + ${tokens.chipBorderRadius}: 0.125rem; + ${tokens.chipWidth}: auto; + ${tokens.chipHeight}: 1.25rem; + ${tokens.chipPadding}: 0 0.375rem 0 0.625rem; + ${tokens.chipClearContentMarginLeft}: 0.25rem; + ${tokens.chipClearContentMarginRight}: 0rem; + ${tokens.chipCloseIconSize}: 0.75rem; + ${tokens.chipFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tokens.chipFontSize}: var(--plasma-typo-body-xs-font-size); + ${tokens.chipFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tokens.chipFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tokens.chipLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tokens.chipLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + }, + orientation: { + horizontal: css` + ${tokens.textFieldGroupOrientation}: row; + `, + vertical: css` + ${tokens.textFieldGroupOrientation}: column; + `, + }, + gap: { + none: css` + ${tokens.textFieldGroupItemsGap}: 0.063rem; + `, + dense: css` + ${tokens.textFieldGroupItemsGap}: 0.125rem; + `, + wide: css` + ${tokens.textFieldGroupItemsGap}: 0.5rem; + `, + }, + shape: { + segmented: css``, + default: css``, + }, + stretching: { + auto: css``, + filled: css``, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/TextFieldGroup/TextFieldGroup.stories.tsx b/packages/plasma-giga/src/components/TextFieldGroup/TextFieldGroup.stories.tsx new file mode 100644 index 0000000000..5f8ec29659 --- /dev/null +++ b/packages/plasma-giga/src/components/TextFieldGroup/TextFieldGroup.stories.tsx @@ -0,0 +1,115 @@ +import React from 'react'; +import type { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { disableProps, InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { TextField } from '../TextField/TextField'; + +import { TextFieldGroup } from './TextFieldGroup'; + +type StoryProps = Omit<ComponentProps<typeof TextFieldGroup>, 'gap'> & { + itemsCount?: number; + gapDefaultShape?: string; + gapSegmentedShape?: string; +}; +type Story = StoryObj<StoryProps>; + +const sizes = ['l', 'm', 's', 'xs']; +const orientationValues = ['horizontal', 'vertical']; +const gapDefaultValues = ['dense', 'wide']; +const gapSegmentedValues = ['none', 'dense']; +const shapeValues = ['segmented', 'default']; +const stretchingValues = ['auto', 'filled']; + +const meta: Meta<typeof TextFieldGroup> = { + title: 'Data Entry/TextFieldGroup', + decorators: [InSpacingDecorator], + argTypes: { + size: { + options: sizes, + control: { + type: 'select', + }, + }, + orientation: { + options: orientationValues, + control: { + type: 'inline-radio', + }, + }, + shape: { + options: shapeValues, + control: { + type: 'select', + }, + }, + stretching: { + options: stretchingValues, + control: { + type: 'select', + }, + }, + ...disableProps(['gap']), + }, +}; + +export default meta; + +export const Default: Story = { + argTypes: { + gapDefaultShape: { + options: gapDefaultValues, + control: { type: 'select' }, + if: { arg: 'shape', eq: 'default' }, + }, + gapSegmentedShape: { + options: gapSegmentedValues, + control: { type: 'select' }, + if: { arg: 'shape', eq: 'segmented' }, + }, + }, + args: { + size: 'm', + shape: 'default', + gapDefaultShape: 'dense', + gapSegmentedShape: 'dense', + orientation: 'horizontal', + itemsCount: 5, + stretching: 'auto', + }, + render: ({ itemsCount, gapDefaultShape, gapSegmentedShape, ...args }: StoryProps) => { + return ( + <TextFieldGroup {...args} gap={(gapDefaultShape || gapSegmentedShape) as any}> + {Array(itemsCount) + .fill(true) + .map((_, i) => ( + <TextField placeholder={`input #${i}`} /> + ))} + </TextFieldGroup> + ); + }, +}; + +export const CustomTextFields: Story = { + args: { + ...Default.args, + isCommonTextFieldStyles: false, + }, + argTypes: { + ...Default.argTypes, + ...disableProps(['itemsCount']), + }, + render: ({ gapDefaultShape, gapSegmentedShape, ...args }: StoryProps) => { + return ( + <> + <h3>Группа TextField с разными размерами</h3> + <TextFieldGroup {...args} gap={(gapDefaultShape || gapSegmentedShape) as any}> + <TextField placeholder="Размер l" size="l" /> + <TextField placeholder="Размер m" size="m" /> + <TextField placeholder="Размер s" size="s" /> + <TextField placeholder="Размер xs" size="xs" /> + </TextFieldGroup> + </> + ); + }, +}; diff --git a/packages/plasma-giga/src/components/TextFieldGroup/TextFieldGroup.tsx b/packages/plasma-giga/src/components/TextFieldGroup/TextFieldGroup.tsx new file mode 100644 index 0000000000..ba4ab10bbc --- /dev/null +++ b/packages/plasma-giga/src/components/TextFieldGroup/TextFieldGroup.tsx @@ -0,0 +1,10 @@ +import { textFieldGroupConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './TextFieldGroup.config'; + +const mergedConfig = mergeConfig(textFieldGroupConfig, config); + +/** + * Группа TextField. + */ +export const TextFieldGroup = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/TextFieldGroup/index.tsx b/packages/plasma-giga/src/components/TextFieldGroup/index.tsx new file mode 100644 index 0000000000..c4d8708b77 --- /dev/null +++ b/packages/plasma-giga/src/components/TextFieldGroup/index.tsx @@ -0,0 +1,3 @@ +export { TextFieldGroup } from './TextFieldGroup'; + +export type { TextFieldGroupProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Toast/Toast.config.ts b/packages/plasma-giga/src/components/Toast/Toast.config.ts new file mode 100644 index 0000000000..95751057c3 --- /dev/null +++ b/packages/plasma-giga/src/components/Toast/Toast.config.ts @@ -0,0 +1,64 @@ +import { css, toastTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + closeIconType: 'default', + }, + variations: { + view: { + default: css` + ${toastTokens.color}: var(--text-primary); + ${toastTokens.background}: var(--surface-solid-card-brightness); + + ${toastTokens.closeIconColor}: var(--text-secondary); + ${toastTokens.closeIconColorOnHover}: var(--text-secondary); + `, + dark: css` + ${toastTokens.color}: var(--on-dark-text-primary); + ${toastTokens.background}: var(--on-dark-surface-solid-primary-brightness); + + ${toastTokens.closeIconColor}: var(--on-dark-text-secondary); + ${toastTokens.closeIconColorOnHover}: var(--on-dark-text-secondary); + `, + light: css` + ${toastTokens.color}: var(--on-light-text-primary); + ${toastTokens.background}: var(--on-light-surface-solid-primary-brightness); + + ${toastTokens.closeIconColor}: var(--on-light-text-secondary); + ${toastTokens.closeIconColorOnHover}: var(--on-light-text-secondary); + `, + }, + size: { + m: css` + ${toastTokens.borderRadius}: 0.75rem; + ${toastTokens.maxWidth}: calc(100vw - 5rem); + ${toastTokens.padding}: 0.5625rem 0.75rem; + ${toastTokens.fontFamily}: var(--plasma-typo-body-xs-font-family); + ${toastTokens.fontSize}: var(--plasma-typo-body-xs-font-size); + ${toastTokens.fontStyle}: var(--plasma-typo-body-xs-font-style); + ${toastTokens.fontWeight}: var(--plasma-typo-body-xs-font-weight); + ${toastTokens.letterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${toastTokens.lineHeight}: var(--plasma-typo-body-xs-line-height); + + ${toastTokens.leftContentMargin}: -0.0625rem 0.375rem -0.0625rem -0.125rem; + ${toastTokens.closeIconMargin}: -0.0625rem -0.25rem -0.0625rem 0.5rem; + `, + }, + closeIconType: { + default: css` + ${toastTokens.closeIconButtonSize}: 1rem; + ${toastTokens.closeIconSize}: 1.5rem; + `, + }, + pilled: { + true: css` + ${toastTokens.pilledBorderRadius}: 1.5rem; + + ${toastTokens.leftContentMargin}: -0.0625rem 0.375rem -0.0625rem -0.25rem; + ${toastTokens.closeIconMargin}: -0.0625rem -0.25rem -0.0625rem 0.375rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Toast/Toast.stories.tsx b/packages/plasma-giga/src/components/Toast/Toast.stories.tsx new file mode 100644 index 0000000000..d390929024 --- /dev/null +++ b/packages/plasma-giga/src/components/Toast/Toast.stories.tsx @@ -0,0 +1,151 @@ +import React, { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; +import styled from 'styled-components'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; + +import { Button } from '../Button'; + +import { ToastController, ToastProvider } from './Toast'; + +import { Toast, useToast } from '.'; + +const meta: Meta<typeof ToastController> = { + title: 'Overlay/Toast', + decorators: [InSpacingDecorator], + argTypes: { + view: { + options: ['default', 'dark', 'light'], + control: { + type: 'select', + }, + }, + size: { + options: ['m'], + control: { + type: 'inline-radio', + }, + }, + ...disableProps(['role', 'onShow', 'onHide', 'contentLeft']), + }, +}; + +export default meta; + +type StoryComponentProps = ComponentProps<typeof Toast> & { + enableContentLeft?: boolean; +}; +type StoryComponent = StoryObj<StoryComponentProps>; + +type StoryProps = ComponentProps<typeof ToastController> & { + text: string; + timeout?: number; + enableContentLeft?: boolean; +}; +type Story = StoryObj<StoryProps>; + +const BellIcon = (props) => ( + <svg width="100%" viewBox="0 0 24 24" fill="none" {...props}> + <path + d="M11.501 21.28c1.088 0 1.978-.889 1.978-1.977H9.524c0 1.088.88 1.978 1.977 1.978zm5.933-5.932v-4.944c0-3.035-1.622-5.576-4.45-6.248v-.673c0-.82-.662-1.483-1.483-1.483-.82 0-1.483.662-1.483 1.483v.672c-2.838.673-4.45 3.204-4.45 6.25v4.943l-1.275 1.276c-.623.623-.188 1.69.692 1.69h13.022c.88 0 1.325-1.067.702-1.69l-1.275-1.276z" + fill="currentColor" + /> + </svg> +); + +const ToastContainer = styled.div` + position: fixed; + transform: translateX(50%); +`; + +const Container = styled.div` + display: flex; + gap: 0.5rem; +`; + +export const ToastComponent: StoryComponent = { + args: { + text: 'Текст всплывающего уведомления', + view: 'default', + size: 'm', + hasClose: true, + enableContentLeft: true, + pilled: false, + }, + render: ({ enableContentLeft, ...args }) => ( + <ToastContainer> + <Toast contentLeft={enableContentLeft && <BellIcon width="1rem" height="1rem" />} {...args} /> + </ToastContainer> + ), +}; + +const StoryLiveDemo = ({ + text, + position, + timeout, + fade, + offset, + pilled, + view, + size, + hasClose, + enableContentLeft, +}: StoryProps) => { + const { showToast, hideToast } = useToast(); + const contentLeft = enableContentLeft && <BellIcon width="1rem" height="1rem" />; + + return ( + <Container> + <Button onClick={hideToast}>Скрыть уведомление</Button> + <Button + onClick={() => { + showToast({ + text, + position, + offset, + timeout, + fade, + contentLeft, + pilled, + view, + size, + hasClose, + onHide: action('onHide'), + onShow: action('onShow'), + }); + }} + > + Показать уведомление + </Button> + </Container> + ); +}; + +export const LiveDemo: Story = { + argTypes: { + position: { + options: ['top', 'bottom'], + control: { + type: 'inline-radio', + }, + }, + }, + args: { + ...ToastComponent.args, + position: 'bottom', + fade: true, + offset: 0, + timeout: 3000, + role: 'alert', + }, + parameters: { + chromatic: { + disable: true, + }, + }, + render: (args) => ( + <ToastProvider> + <StoryLiveDemo {...args} /> + </ToastProvider> + ), +}; diff --git a/packages/plasma-giga/src/components/Toast/Toast.tsx b/packages/plasma-giga/src/components/Toast/Toast.tsx new file mode 100644 index 0000000000..207800711d --- /dev/null +++ b/packages/plasma-giga/src/components/Toast/Toast.tsx @@ -0,0 +1,17 @@ +import { + toastConfig, + ToastProviderHoc, + ToastControllerHoc, + component, + mergeConfig, +} from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Toast.config'; + +export { useToast } from '@salutejs/plasma-new-hope/styled-components'; + +const mergedConfig = mergeConfig(toastConfig, config); + +export const Toast = component(mergedConfig); +export const ToastController = ToastControllerHoc(Toast); +export const ToastProvider = ToastProviderHoc(ToastController); diff --git a/packages/plasma-giga/src/components/Toast/index.ts b/packages/plasma-giga/src/components/Toast/index.ts new file mode 100644 index 0000000000..eb62860653 --- /dev/null +++ b/packages/plasma-giga/src/components/Toast/index.ts @@ -0,0 +1,2 @@ +export { Toast, ToastProvider, useToast } from './Toast'; +export type { ShowToastArgs, ToastProps, ToastPosition, ToastRole } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Tokens/Tokens.stories.tsx b/packages/plasma-giga/src/components/Tokens/Tokens.stories.tsx new file mode 100644 index 0000000000..61fc42bc53 --- /dev/null +++ b/packages/plasma-giga/src/components/Tokens/Tokens.stories.tsx @@ -0,0 +1,124 @@ +import React from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { plasma_giga__dark, plasma_giga__light } from '@salutejs/plasma-themes/es/themes'; +import type { GroupedTokens } from '@salutejs/plasma-sb-utils'; + +import { InSpacingDecorator, getGroupedTokens } from '../../helpers'; +import { Accordion } from '../Accordion'; +import { ShowToastArgs, ToastProvider, useToast } from '../Toast'; + +import { + AccordionInfo, + Category, + CategoryContainer, + ColorCircle, + ColumnTitle, + OpacityPart, + StyledAccordionItem, + Subcategory, + TokenInfo, + TokenInfoWrapper, +} from './Tokens.styles'; + +const meta: Meta = { + title: 'Colors', + decorators: [InSpacingDecorator], +}; + +export default meta; + +const themes: Record<string, GroupedTokens> = { + 'plasma-giga:light': getGroupedTokens(plasma_giga__light[0]), + 'plasma-giga:dark': getGroupedTokens(plasma_giga__dark[0]), +}; + +const StoryDemo = ({ context }) => { + const groupedTokens = themes[context.globals.theme]; + const { showToast } = useToast(); + const toastData = { + view: 'default', + size: 'm', + hasClose: true, + fade: false, + position: 'bottom', + offset: 0, + timeout: 3000, + role: 'alert', + } as ShowToastArgs; + + const copyToClipboard = async (value: string, opacity?: string | null) => { + try { + await navigator.clipboard.writeText(value + (opacity || '')); + + showToast({ + ...toastData, + text: 'Скопировано', + }); + } catch (err) { + showToast({ + ...toastData, + text: 'Ошибка при копировании текста', + }); + } + }; + + return ( + <> + {Object.entries(groupedTokens).map(([category, value]) => ( + <CategoryContainer> + <Category>{category}</Category> + <Accordion view="clear" size="s" stretching="filled" defaultActiveEventKey={[0]}> + {Object.entries(value).map(([subcategory, value2], index) => ( + <StyledAccordionItem + key={subcategory} + eventKey={index} + type="arrow" + title={ + <AccordionInfo> + <Subcategory>{subcategory}/</Subcategory> + <ColumnTitle className="color"> + <ColorCircle disableShadow /> + Color + </ColumnTitle> + <ColumnTitle>Opacity</ColumnTitle> + </AccordionInfo> + } + > + <TokenInfoWrapper> + {Object.entries(value2).map(([token, { value: value3, opacity }]) => ( + <AccordionInfo key={token}> + <TokenInfo className="copy" onClick={() => copyToClipboard(token)}> + {token} + </TokenInfo> + <TokenInfo + className="color copy" + onClick={() => copyToClipboard(value3, opacity?.alpha)} + > + <ColorCircle background={value3} /> + <div> + {value3.includes('gradient') ? 'Градиент' : value3} + {opacity && <OpacityPart>{opacity.alpha}</OpacityPart>} + </div> + </TokenInfo> + {opacity && ( + <TokenInfo className="opacity">{opacity.parsedAlpha}</TokenInfo> + )} + </AccordionInfo> + ))} + </TokenInfoWrapper> + </StyledAccordionItem> + ))} + </Accordion> + </CategoryContainer> + ))} + </> + ); +}; + +export const Default: StoryObj = { + render: (_, context) => ( + <ToastProvider> + <StoryDemo context={context} /> + </ToastProvider> + ), +}; diff --git a/packages/plasma-giga/src/components/Tokens/Tokens.styles.ts b/packages/plasma-giga/src/components/Tokens/Tokens.styles.ts new file mode 100644 index 0000000000..4f1172c7e9 --- /dev/null +++ b/packages/plasma-giga/src/components/Tokens/Tokens.styles.ts @@ -0,0 +1,130 @@ +import styled from 'styled-components'; + +import { H2 } from '../Typography'; +import { AccordionItem } from '../Accordion'; + +export const CategoryContainer = styled.div` + margin-bottom: 1.875rem; +`; + +export const Category = styled(H2)` + margin: 0 0 1.125rem 1.5rem; +`; + +export const AccordionInfo = styled.div` + display: grid; + grid-template-columns: 18rem 7.938rem 3.813rem; + grid-column-gap: 1.5rem; + + font-family: var(--plasma-typo-body-m-font-family); + font-size: var(--plasma-typo-body-m-font-size); + font-style: var(--plasma-typo-body-m-font-style); + font-weight: var(--plasma-typo-body-m-font-weight); + letter-spacing: var(--plasma-typo-body-m-letter-spacing); + line-height: var(--plasma-typo-body-m-line-height); +`; + +export const Subcategory = styled.div` + color: var(--text-secondary); +`; + +export const ColumnTitle = styled.div` + color: var(--text-tertiary); + transition: opacity 0.2s; + + &.color { + display: flex; + align-items: center; + gap: 0.5rem; + } +`; + +export const StyledAccordionItem = styled(AccordionItem)` + --plasma-accordion-item-padding: 0; + --plasma-accordion-item-padding-vertical: 0; + + border-bottom: unset; + width: max-content; + + div > div > div > svg { + color: var(--text-secondary); + } + + .accordion-item-body { + margin-bottom: 1.125rem; + padding-top: 0.125rem; + transition: margin-bottom 0.2s, padding-top 0.2s; + } + + [aria-expanded] { + margin-bottom: 1rem; + } + + [aria-expanded='false'] { + ${AccordionInfo} ${ColumnTitle} { + opacity: 0; + } + } + + [aria-expanded='false'] + div > .accordion-item-body { + margin: 0; + padding: 0; + } +`; + +export const TokenInfoWrapper = styled.div` + display: flex; + flex-direction: column; + gap: 0.75rem; + margin-top: -0.125rem; +`; + +export const OpacityPart = styled.span` + color: var(--text-secondary); + padding-left: 0.125rem; +`; + +export const TokenInfo = styled.div` + color: var(--text-paragraph); + + cursor: default; + + &.copy { + cursor: copy; + } + + &.color { + display: flex; + align-items: center; + gap: 0.5rem; + } + + &.opacity { + text-align: right; + } + + &:not(.opacity):hover { + color: var(--text-paragraph-hover); + + ${OpacityPart} { + color: var(--text-paragraph-hover); + } + } + + &:not(.opacity):active { + color: var(--text-paragraph-active); + + ${OpacityPart} { + color: var(--text-secondary-active); + } + } +`; + +export const ColorCircle = styled.div<{ background?: string; disableShadow?: boolean }>` + width: 1.25rem; + height: 1.25rem; + border-radius: 50%; + + background: ${(props) => props.background}; + box-shadow: ${(props) => (props.disableShadow ? 'none' : 'inset 0px 0px 0px 1px rgba(8, 8, 8, 0.12)')}; +`; diff --git a/packages/plasma-giga/src/components/Toolbar/Toolbar.config.ts b/packages/plasma-giga/src/components/Toolbar/Toolbar.config.ts new file mode 100644 index 0000000000..89581b0d6b --- /dev/null +++ b/packages/plasma-giga/src/components/Toolbar/Toolbar.config.ts @@ -0,0 +1,57 @@ +import { css, toolbarTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + view: { + default: css` + /* TODO: заменить значение box-shadow на var(--shadow-down-soft-s). https://github.com/salute-developers/plasma/issues/1131 */ + ${toolbarTokens.boxShadow}: 0px 4px 14px -4px rgba(8, 8, 8, 0.08), 0px 1px 4px -1px rgba(0, 0, 0, 0.04); + ${toolbarTokens.background}: var(--surface-solid-card-brightness); + + ${toolbarTokens.dividerColor}: var(--surface-transparent-tertiary); + `, + }, + size: { + xs: css` + ${toolbarTokens.size}: 2.5rem; + ${toolbarTokens.padding}: 0.25rem; + ${toolbarTokens.borderRadius}: 0.75rem; + + ${toolbarTokens.dividerSize}: 1.25rem; + ${toolbarTokens.dividerOffset}: 0.5rem; + ${toolbarTokens.dividerBorderRadius}: 0.0625rem; + `, + s: css` + ${toolbarTokens.size}: 3rem; + ${toolbarTokens.padding}: 0.25rem; + ${toolbarTokens.borderRadius}: 0.875rem; + + ${toolbarTokens.dividerSize}: 1.5rem; + ${toolbarTokens.dividerOffset}: 0.5rem; + ${toolbarTokens.dividerBorderRadius}: 0.0625rem; + `, + m: css` + ${toolbarTokens.size}: 3.75rem; + ${toolbarTokens.padding}: 0.375rem; + ${toolbarTokens.borderRadius}: 1rem; + + ${toolbarTokens.dividerSize}: 1.75rem; + ${toolbarTokens.dividerOffset}: 0.625rem; + ${toolbarTokens.dividerBorderRadius}: 0.0625rem; + `, + l: css` + ${toolbarTokens.size}: 4.5rem; + ${toolbarTokens.padding}: 0.5rem; + ${toolbarTokens.borderRadius}: 1.25rem; + + ${toolbarTokens.dividerSize}: 2rem; + ${toolbarTokens.dividerOffset}: 0.75rem; + ${toolbarTokens.dividerBorderRadius}: 0.0625rem; + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Toolbar/Toolbar.stories.tsx b/packages/plasma-giga/src/components/Toolbar/Toolbar.stories.tsx new file mode 100644 index 0000000000..05725e822f --- /dev/null +++ b/packages/plasma-giga/src/components/Toolbar/Toolbar.stories.tsx @@ -0,0 +1,63 @@ +import React from 'react'; +import type { ComponentProps } from 'react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; +import type { StoryObj, Meta } from '@storybook/react'; +import { IconEdit } from '@salutejs/plasma-icons'; + +import { Button } from '../Button'; + +import { Toolbar, ToolbarDivider } from './Toolbar'; + +const orientations: Array<string> = ['vertical', 'horizontal']; +const size: Array<string> = ['xs', 's', 'm', 'l']; + +const ToolbarWrapper = (props: ComponentProps<typeof Toolbar>) => { + return ( + <Toolbar {...props}> + <Button square size={props.size} view="clear" contentLeft={<IconEdit />} /> + <Button square size={props.size} view="clear" contentLeft={<IconEdit />} /> + <Button square size={props.size} view="clear" contentLeft={<IconEdit />} /> + <ToolbarDivider /> + <Button square size={props.size} view="clear" contentLeft={<IconEdit />} /> + <Button square size={props.size} view="clear" contentLeft={<IconEdit />} /> + </Toolbar> + ); +}; + +const meta: Meta<typeof Toolbar> = { + title: 'Overlay/Toolbar', + component: ToolbarWrapper, + decorators: [InSpacingDecorator], + argTypes: { + orientation: { + options: orientations, + control: { + type: 'select', + }, + }, + hasShadow: { + control: { + type: 'boolean', + }, + }, + size: { + options: size, + control: { + type: 'select', + }, + }, + }, + args: { + orientation: 'vertical', + hasShadow: true, + size: 'm', + }, +}; + +export default meta; + +type Story = StoryObj<typeof Toolbar>; + +export const Default: Story = { + args: {}, +}; diff --git a/packages/plasma-giga/src/components/Toolbar/Toolbar.tsx b/packages/plasma-giga/src/components/Toolbar/Toolbar.tsx new file mode 100644 index 0000000000..2b815e517e --- /dev/null +++ b/packages/plasma-giga/src/components/Toolbar/Toolbar.tsx @@ -0,0 +1,18 @@ +import { + toolbarConfig, + component, + mergeConfig, + toolbarDividerConfig, +} from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Toolbar.config'; + +const mergedConfig = mergeConfig(toolbarConfig, config); + +/** + * Компонент Toolbar. + */ +export const Toolbar = component(mergedConfig); + +const mergedDividerConfig = mergeConfig(toolbarDividerConfig); +export const ToolbarDivider = component(mergedDividerConfig); diff --git a/packages/plasma-giga/src/components/Toolbar/index.ts b/packages/plasma-giga/src/components/Toolbar/index.ts new file mode 100644 index 0000000000..8babf05c6c --- /dev/null +++ b/packages/plasma-giga/src/components/Toolbar/index.ts @@ -0,0 +1,3 @@ +export { Toolbar, ToolbarDivider } from './Toolbar'; +export { toolbarTokens } from '@salutejs/plasma-new-hope/styled-components'; +export type { ToolbarProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Tooltip/Tooltip.config.ts b/packages/plasma-giga/src/components/Tooltip/Tooltip.config.ts new file mode 100644 index 0000000000..2ca59cef4c --- /dev/null +++ b/packages/plasma-giga/src/components/Tooltip/Tooltip.config.ts @@ -0,0 +1,70 @@ +import { css, tooltipTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const config = { + defaults: { + view: 'default', + size: 'm', + }, + variations: { + size: { + s: css` + ${tooltipTokens.paddingTop}: 0.5rem; + ${tooltipTokens.paddingRight}: 0.75rem; + ${tooltipTokens.paddingBottom}: 0.5rem; + ${tooltipTokens.paddingLeft}: 0.75rem; + + ${tooltipTokens.minHeight}: 2rem; + ${tooltipTokens.borderRadius}: 0.5rem; + + ${tooltipTokens.textFontFamily}: var(--plasma-typo-body-xs-font-family); + ${tooltipTokens.textFontSize}: var(--plasma-typo-body-xs-font-size); + ${tooltipTokens.textFontStyle}: var(--plasma-typo-body-xs-font-style); + ${tooltipTokens.textFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${tooltipTokens.textFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${tooltipTokens.textFontLineHeight}: var(--plasma-typo-body-xs-line-height); + + ${tooltipTokens.contentLeftMargin}: 0.25rem; + + ${tooltipTokens.arrowMaskWidth}: 1rem; + ${tooltipTokens.arrowMaskHeight}: 1rem; + ${tooltipTokens.arrowMaskImage}: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMCw5Ljg1bDE2LDBjLTQuNDEsMCAtOCwyLjY5IC04LDZjMCwtMy4zMSAtMy41OSwtNiAtOCwtNnoiIGZpbGw9IiMxNzE3MTciIGZpbGwtcnVsZT0iZXZlbm9kZCIgaWQ9IlRhaWwiLz4KPC9zdmc+"); + ${tooltipTokens.arrowHeight}: 0.375rem; + ${tooltipTokens.arrowEdgeMargin}: 0.5625rem; + ${tooltipTokens.arrowBackground}: var(--surface-solid-card-brightness); + `, + m: css` + ${tooltipTokens.paddingTop}: 0.6875rem; + ${tooltipTokens.paddingRight}: 0.875rem; + ${tooltipTokens.paddingBottom}: 0.6875rem; + ${tooltipTokens.paddingLeft}: 0.875rem; + + ${tooltipTokens.minHeight}: 2.5rem; + ${tooltipTokens.borderRadius}: 0.625rem; + + ${tooltipTokens.textFontFamily}: var(--plasma-typo-body-s-font-family); + ${tooltipTokens.textFontSize}: var(--plasma-typo-body-s-font-size); + ${tooltipTokens.textFontStyle}: var(--plasma-typo-body-s-font-style); + ${tooltipTokens.textFontWeight}: var(--plasma-typo-body-s-font-weight); + ${tooltipTokens.textFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${tooltipTokens.textFontLineHeight}: var(--plasma-typo-body-s-line-height); + + ${tooltipTokens.contentLeftMargin}: 0.375rem; + + ${tooltipTokens.arrowMaskWidth}: 1.25rem; + ${tooltipTokens.arrowMaskHeight}: 1.25rem; + ${tooltipTokens.arrowMaskImage}: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMC4xNywxMS44M2wyMCwwYy01LjUyLDAgLTEwLDMuNTkgLTEwLDhjMCwtNC40MSAtNC40OCwtOCAtMTAsLTh6IiBmaWxsPSIjMTcxNzE3IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGlkPSJUYWlsIi8+Cjwvc3ZnPg=="); + ${tooltipTokens.arrowHeight}: 0.5rem; + ${tooltipTokens.arrowEdgeMargin}: 0.625rem; + ${tooltipTokens.arrowBackground}: var(--surface-solid-card-brightness); + `, + }, + view: { + // TODO заменить тень на токен https://github.com/salute-developers/plasma/issues/1131 + default: css` + ${tooltipTokens.backgroundColor}: var(--surface-solid-card-brightness); + ${tooltipTokens.boxShadow}: 0px 4px 12px 0px rgba(0, 0, 0, 0.16),0px 1px 4px 0px rgba(0, 0, 0, 0.08); + ${tooltipTokens.color}: var(--text-primary); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Tooltip/Tooltip.stories.tsx b/packages/plasma-giga/src/components/Tooltip/Tooltip.stories.tsx new file mode 100644 index 0000000000..81fb1fa827 --- /dev/null +++ b/packages/plasma-giga/src/components/Tooltip/Tooltip.stories.tsx @@ -0,0 +1,163 @@ +import React, { useState } from 'react'; +import styled from 'styled-components'; +import { IconDisclosureRight } from '@salutejs/plasma-icons'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; + +import { Button } from '../Button/Button'; + +import { Tooltip } from '.'; +import type { TooltipProps } from '.'; + +const placements: Array<string> = [ + 'top', + 'top-start', + 'top-end', + + 'bottom', + 'bottom-start', + 'bottom-end', + + 'left', + 'left-start', + 'left-end', + + 'right', + 'right-start', + 'right-end', + + 'auto', +]; + +const disabledProps = [ + 'target', + 'children', + 'text', + 'opened', + 'isOpen', + 'isVisible', + 'offset', + 'frame', + 'view', + 'zIndex', + 'minWidth', + 'maxWidth', + 'contentLeft', + 'onDismiss', +]; +const meta: Meta<TooltipProps> = { + title: 'Overlay/Tooltip', + decorators: [InSpacingDecorator], + component: Tooltip, +}; + +export default meta; + +const StyledGrid = styled.div` + display: grid; + grid-template-columns: repeat(3, max-content); + grid-gap: 1rem 3.5rem; + padding: 3.5rem; +`; + +const StoryDefault = (props: Pick<TooltipProps, 'hasArrow' | 'size' | 'usePortal'>) => { + return ( + <StyledGrid> + <Tooltip + target={<Tooltip target={<Button>Btn</Button>} placement="left" opened text="left" {...props} />} + placement="top-start" + opened + text="top-start" + view="default" + {...props} + /> + <Tooltip target={<Button>Btn</Button>} placement="top" opened text="top" {...props} /> + <Tooltip + target={<Tooltip target={<Button>Btn</Button>} placement="right" opened text="right" {...props} />} + placement="top-end" + opened + text="top-end" + {...props} + /> + <Tooltip target={<Button>Btn</Button>} placement="bottom-start" opened text="bottom-start" {...props} /> + <Tooltip target={<Button>Btn</Button>} placement="bottom" opened text="bottom" {...props} /> + <Tooltip target={<Button>Btn</Button>} placement="bottom-end" opened text="bottom-end" {...props} /> + </StyledGrid> + ); +}; + +export const Default: StoryObj<TooltipProps> = { + argTypes: { + size: { + options: ['m', 's'], + control: { + type: 'select', + }, + }, + ...disableProps([...disabledProps, 'placement']), + }, + args: { + maxWidth: 10, + minWidth: 3, + hasArrow: true, + usePortal: false, + animated: true, + size: 'm', + }, + render: (args) => <StoryDefault {...args} />, +}; + +const StyledRow = styled.div` + display: flex; + width: 150vw; + height: 150vh; + padding: 10rem; +`; + +const StoryLive = (args: TooltipProps) => { + const [isOpen, setIsOpen] = useState(false); + + return ( + <> + <StyledRow> + <Tooltip + target={<Button onClick={() => setIsOpen(!isOpen)}>Show tooltip</Button>} + contentLeft={<IconDisclosureRight size="xs" />} + {...args} + id="example-tooltip-firstname" + text="Tooltip text" + opened={isOpen} + /> + </StyledRow> + </> + ); +}; + +export const Live: StoryObj<TooltipProps> = { + argTypes: { + placement: { + options: placements, + control: { + type: 'select', + }, + mapping: placements, + }, + size: { + options: ['m', 's'], + control: { + type: 'select', + }, + }, + ...disableProps(disabledProps), + }, + args: { + placement: 'bottom', + maxWidth: 10, + minWidth: 3, + hasArrow: true, + usePortal: false, + animated: true, + size: 'm', + }, + render: (args) => <StoryLive {...args} />, +}; diff --git a/packages/plasma-giga/src/components/Tooltip/Tooltip.tsx b/packages/plasma-giga/src/components/Tooltip/Tooltip.tsx new file mode 100644 index 0000000000..1c20045539 --- /dev/null +++ b/packages/plasma-giga/src/components/Tooltip/Tooltip.tsx @@ -0,0 +1,10 @@ +import { ForwardRefExoticComponent, RefAttributes } from 'react'; +import { TooltipProps, tooltipConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './Tooltip.config'; + +const mergedConfig = mergeConfig(tooltipConfig, config); + +export const Tooltip = component(mergedConfig) as ForwardRefExoticComponent< + TooltipProps & RefAttributes<HTMLDivElement> +>; diff --git a/packages/plasma-giga/src/components/Tooltip/index.ts b/packages/plasma-giga/src/components/Tooltip/index.ts new file mode 100644 index 0000000000..63373a54c1 --- /dev/null +++ b/packages/plasma-giga/src/components/Tooltip/index.ts @@ -0,0 +1,2 @@ +export { Tooltip } from './Tooltip'; +export type { TooltipProps } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/components/Typography/Body.config.ts b/packages/plasma-giga/src/components/Typography/Body.config.ts new file mode 100644 index 0000000000..927c4ccfc8 --- /dev/null +++ b/packages/plasma-giga/src/components/Typography/Body.config.ts @@ -0,0 +1,96 @@ +import { css, typographyTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const configL = { + defaults: { + size: 'l', + }, + variations: { + size: { + l: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-body-l-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-body-l-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-body-l-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-body-l-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-body-l-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-body-l-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-body-l-line-height); + `, + }, + }, +}; + +export const configM = { + defaults: { + size: 'm', + }, + variations: { + size: { + m: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-body-m-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-body-m-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-body-m-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-body-m-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-body-m-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-body-m-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-body-m-line-height); + `, + }, + }, +}; + +export const configS = { + defaults: { + size: 's', + }, + variations: { + size: { + s: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-body-s-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-body-s-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-body-s-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-body-s-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-body-s-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-body-s-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-body-s-line-height); + `, + }, + }, +}; + +export const configXS = { + defaults: { + size: 'xs', + }, + variations: { + size: { + xs: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-body-xs-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-body-xs-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-body-xs-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-body-xs-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-body-xs-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-body-xs-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-body-xs-line-height); + `, + }, + }, +}; + +export const configXXS = { + defaults: { + size: 'xxs', + }, + variations: { + size: { + xxs: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-body-xxs-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-body-xxs-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-body-xxs-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-body-xxs-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-body-xxs-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-body-xxs-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-body-xxs-line-height); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Typography/Dspl.config.ts b/packages/plasma-giga/src/components/Typography/Dspl.config.ts new file mode 100644 index 0000000000..36552bf940 --- /dev/null +++ b/packages/plasma-giga/src/components/Typography/Dspl.config.ts @@ -0,0 +1,58 @@ +import { css, typographyTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const configL = { + defaults: { + size: 'l', + }, + variations: { + size: { + l: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-dspl-l-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-dspl-l-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-dspl-l-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-dspl-l-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-dspl-l-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-dspl-l-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-dspl-l-line-height); + `, + }, + }, +}; + +export const configM = { + defaults: { + size: 'm', + }, + variations: { + size: { + m: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-dspl-m-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-dspl-m-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-dspl-m-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-dspl-m-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-dspl-m-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-dspl-m-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-dspl-m-line-height); + `, + }, + }, +}; + +export const configS = { + defaults: { + size: 's', + }, + variations: { + size: { + s: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-dspl-s-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-dspl-s-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-dspl-s-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-dspl-s-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-dspl-s-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-dspl-s-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-dspl-s-line-height); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Typography/Heading.config.ts b/packages/plasma-giga/src/components/Typography/Heading.config.ts new file mode 100644 index 0000000000..3c1ebef743 --- /dev/null +++ b/packages/plasma-giga/src/components/Typography/Heading.config.ts @@ -0,0 +1,92 @@ +import { css, typographyTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const configH1 = { + defaults: { + size: 'h1', + }, + variations: { + size: { + h1: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-h1-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-h1-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-h1-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-h1-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-h1-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-h1-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-h1-line-height); + `, + }, + }, +}; +export const configH2 = { + defaults: { + size: 'h2', + }, + variations: { + size: { + h2: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-h2-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-h2-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-h2-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-h2-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-h2-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-h2-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-h2-line-height); + `, + }, + }, +}; +export const configH3 = { + defaults: { + size: 'h3', + }, + variations: { + size: { + h3: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-h3-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-h3-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-h3-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-h3-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-h3-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-h3-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-h3-line-height); + `, + }, + }, +}; +export const configH4 = { + defaults: { + size: 'h4', + }, + variations: { + size: { + h4: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-h4-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-h4-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-h4-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-h4-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-h4-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-h4-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-h4-line-height); + `, + }, + }, +}; +export const configH5 = { + defaults: { + size: 'h5', + }, + variations: { + size: { + h5: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-h5-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-h5-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-h5-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-h5-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-h5-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-h5-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-h5-line-height); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Typography/Text.config.ts b/packages/plasma-giga/src/components/Typography/Text.config.ts new file mode 100644 index 0000000000..8f92d5646e --- /dev/null +++ b/packages/plasma-giga/src/components/Typography/Text.config.ts @@ -0,0 +1,77 @@ +import { css, typographyTokens } from '@salutejs/plasma-new-hope/styled-components'; + +export const configL = { + defaults: { + size: 'l', + }, + variations: { + size: { + l: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-text-l-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-text-l-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-text-l-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-text-l-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-text-l-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-text-l-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-text-l-line-height); + `, + }, + }, +}; + +export const configM = { + defaults: { + size: 'm', + }, + variations: { + size: { + m: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-text-m-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-text-m-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-text-m-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-text-m-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-text-m-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-text-m-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-text-m-line-height); + `, + }, + }, +}; + +export const configS = { + defaults: { + size: 's', + }, + variations: { + size: { + s: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-text-s-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-text-s-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-text-s-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-text-s-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-text-s-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-text-s-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-text-s-line-height); + `, + }, + }, +}; + +export const configXS = { + defaults: { + size: 'xs', + }, + variations: { + size: { + xs: css` + ${typographyTokens.typoFontFamily}: var(--plasma-typo-text-xs-font-family); + ${typographyTokens.typoFontSize}: var(--plasma-typo-text-xs-font-size); + ${typographyTokens.typoFontStyle}: var(--plasma-typo-text-xs-font-style); + ${typographyTokens.typoFontWeight}: var(--plasma-typo-text-xs-font-weight); + ${typographyTokens.typoFontWeightBold}: var(--plasma-typo-text-xs-bold-font-weight); + ${typographyTokens.typoFontLetterSpacing}: var(--plasma-typo-text-xs-letter-spacing); + ${typographyTokens.typoFontLineHeight}: var(--plasma-typo-text-xs-line-height); + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/Typography/Typography.stories.tsx b/packages/plasma-giga/src/components/Typography/Typography.stories.tsx new file mode 100644 index 0000000000..944dcfabc6 --- /dev/null +++ b/packages/plasma-giga/src/components/Typography/Typography.stories.tsx @@ -0,0 +1,137 @@ +import React from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator, disableProps } from '@salutejs/plasma-sb-utils'; + +import { + DsplL, + DsplM, + DsplS, + H1, + H2, + H3, + H4, + H5, + BodyL, + BodyM, + BodyS, + BodyXS, + BodyXXS, + TextL, + TextM, + TextS, + TextXS, +} from '.'; + +const meta: Meta = { + title: 'Data Display/Typography', + component: DsplL, + argTypes: { + ...disableProps(['size']), + color: { + control: { + type: 'color', + }, + }, + }, + decorators: [InSpacingDecorator], +}; + +export default meta; + +type Story = StoryObj; + +export const Dspl: Story = { + render: (props) => ( + <> + <DsplL bold={false} {...props}> + DsplL + </DsplL> + <DsplL {...props}>DsplL Bold</DsplL> + <DsplM bold={false} {...props}> + DsplM + </DsplM> + <DsplM {...props}>DsplM Bold</DsplM> + <DsplS bold={false} {...props}> + DsplS + </DsplS> + <DsplS {...props}>DsplS Bold</DsplS> + </> + ), +}; + +export const H: Story = { + render: (props) => ( + <> + <H1 bold={false} {...props}> + H1 + </H1> + <H1 {...props}>H1 Bold</H1> + <H2 bold={false} {...props}> + H2 + </H2> + <H2 {...props}>H2 Bold</H2> + <H3 bold={false} {...props}> + H3 + </H3> + <H3 {...props}>H3 Bold</H3> + <H4 bold={false} {...props}> + H4 + </H4> + <H4 {...props}>H4 Bold</H4> + <H5 bold={false} {...props}> + H5 + </H5> + <H5 {...props}>H5 Bold</H5> + </> + ), +}; + +export const Body: Story = { + render: (props) => ( + <> + <BodyL {...props}>BodyL</BodyL> + <BodyL bold {...props}> + BodyL Bold + </BodyL> + <BodyM {...props}>BodyM</BodyM> + <BodyM bold {...props}> + BodyM Bold + </BodyM> + <BodyS {...props}>BodyS</BodyS> + <BodyS bold {...props}> + BodyS Bold + </BodyS> + <BodyXS {...props}>BodyXS</BodyXS> + <BodyXS bold {...props}> + BodyXS Bold + </BodyXS> + <BodyXXS {...props}>BodyXXS</BodyXXS> + <BodyXXS bold {...props}> + BodyXXS Bold + </BodyXXS> + </> + ), +}; + +export const Text: Story = { + render: (props) => ( + <> + <TextL {...props}>TextL</TextL> + <TextL bold {...props}> + TextL Bold + </TextL> + <TextM {...props}>TextM</TextM> + <TextM bold {...props}> + TextM Bold + </TextM> + <TextS {...props}>TextS</TextS> + <TextS bold {...props}> + TextS Bold + </TextS> + <TextXS {...props}>TextXS</TextXS> + <TextXS bold {...props}> + TextXS Bold + </TextXS> + </> + ), +}; diff --git a/packages/plasma-giga/src/components/Typography/Typography.tsx b/packages/plasma-giga/src/components/Typography/Typography.tsx new file mode 100644 index 0000000000..1f099f6194 --- /dev/null +++ b/packages/plasma-giga/src/components/Typography/Typography.tsx @@ -0,0 +1,106 @@ +import { + bodyConfig, + dsplConfig, + headingConfig, + textConfig, + component, + mergeConfig, +} from '@salutejs/plasma-new-hope/styled-components'; + +import { + configL as bodyConfigLCustom, + configM as bodyConfigMCustom, + configS as bodyConfigSCustom, + configXS as bodyConfigXSCustom, + configXXS as bodyConfigXXSCustom, +} from './Body.config'; +import { + configL as dsplConfigLCustom, + configM as dsplConfigMCustom, + configS as dsplConfigSCustom, +} from './Dspl.config'; +import { + configH1 as headingConfigH1Custom, + configH2 as headingConfigH2Custom, + configH3 as headingConfigH3Custom, + configH4 as headingConfigH4Custom, + configH5 as headingConfigH5Custom, +} from './Heading.config'; +import { + configL as textConfigLCustom, + configM as textConfigMCustom, + configS as textConfigSCustom, + configXS as textConfigXSCustom, +} from './Text.config'; + +const bodyMConfig = mergeConfig(bodyConfig, bodyConfigMCustom); +const BodyMComponent = component(bodyMConfig); + +const bodyLConfig = mergeConfig(bodyConfig, bodyConfigLCustom); +const BodyLComponent = component(bodyLConfig); + +const bodySConfig = mergeConfig(bodyConfig, bodyConfigSCustom); +const BodySComponent = component(bodySConfig); + +const bodyXSConfig = mergeConfig(bodyConfig, bodyConfigXSCustom); +const BodyXSComponent = component(bodyXSConfig); + +const bodyXXSConfig = mergeConfig(bodyConfig, bodyConfigXXSCustom); +const BodyXXSComponent = component(bodyXXSConfig); + +const dsplMConfig = mergeConfig(dsplConfig, dsplConfigMCustom); +const DsplMComponent = component(dsplMConfig); + +const dsplLConfig = mergeConfig(dsplConfig, dsplConfigLCustom); +const DsplLComponent = component(dsplLConfig); + +const dsplSConfig = mergeConfig(dsplConfig, dsplConfigSCustom); +const DsplSComponent = component(dsplSConfig); + +const heading1Config = mergeConfig(headingConfig, headingConfigH1Custom); +const Heading1Component = component(heading1Config); + +const heading2Config = mergeConfig(headingConfig, headingConfigH2Custom); +const Heading2Component = component(heading2Config); + +const heading3Config = mergeConfig(headingConfig, headingConfigH3Custom); +const Heading3Component = component(heading3Config); + +const heading4Config = mergeConfig(headingConfig, headingConfigH4Custom); +const Heading4Component = component(heading4Config); + +const heading5Config = mergeConfig(headingConfig, headingConfigH5Custom); +const Heading5Component = component(heading5Config); + +const textMConfig = mergeConfig(textConfig, textConfigMCustom); +const TextMComponent = component(textMConfig); + +const textLConfig = mergeConfig(textConfig, textConfigLCustom); +const TextLComponent = component(textLConfig); + +const textSConfig = mergeConfig(textConfig, textConfigSCustom); +const TextSComponent = component(textSConfig); + +const textXSConfig = mergeConfig(textConfig, textConfigXSCustom); +const TextXSComponent = component(textXSConfig); + +export const BodyM = BodyMComponent; +export const BodyL = BodyLComponent; +export const BodyS = BodySComponent; +export const BodyXS = BodyXSComponent; +export const BodyXXS = BodyXXSComponent; + +export const DsplM = DsplMComponent; +export const DsplL = DsplLComponent; +export const DsplS = DsplSComponent; + +export const H1 = Heading1Component; +export const H2 = Heading2Component; +export const H3 = Heading3Component; +export const H4 = Heading4Component; +export const H5 = Heading5Component; + +export const TextM = TextMComponent; +export const TextL = TextLComponent; +export const TextS = TextSComponent; +export const TextXS = TextXSComponent; diff --git a/packages/plasma-giga/src/components/Typography/index.ts b/packages/plasma-giga/src/components/Typography/index.ts new file mode 100644 index 0000000000..5d3a07ca0b --- /dev/null +++ b/packages/plasma-giga/src/components/Typography/index.ts @@ -0,0 +1,19 @@ +export { + BodyL, + BodyM, + BodyS, + BodyXS, + BodyXXS, + DsplL, + DsplM, + DsplS, + H1, + H2, + H3, + H4, + H5, + TextL, + TextM, + TextS, + TextXS, +} from './Typography'; diff --git a/packages/plasma-giga/src/components/ViewContainer/ViewContainer.config.ts b/packages/plasma-giga/src/components/ViewContainer/ViewContainer.config.ts new file mode 100644 index 0000000000..dff29f0013 --- /dev/null +++ b/packages/plasma-giga/src/components/ViewContainer/ViewContainer.config.ts @@ -0,0 +1,15 @@ +import { css } from '@salutejs/plasma-new-hope/styled-components'; +import { viewContainer } from '@salutejs/plasma-themes/tokens/plasma_giga'; + +export const config = { + variations: { + view: { + onDark: css` + ${viewContainer.dark} + `, + onLight: css` + ${viewContainer.light} + `, + }, + }, +}; diff --git a/packages/plasma-giga/src/components/ViewContainer/ViewContainer.stories.tsx b/packages/plasma-giga/src/components/ViewContainer/ViewContainer.stories.tsx new file mode 100644 index 0000000000..2b97225fd8 --- /dev/null +++ b/packages/plasma-giga/src/components/ViewContainer/ViewContainer.stories.tsx @@ -0,0 +1,67 @@ +import React, { ComponentProps } from 'react'; +import type { StoryObj, Meta } from '@storybook/react'; +import { InSpacingDecorator } from '@salutejs/plasma-sb-utils'; + +import { Button } from '../Button/Button'; +import { TextField } from '../TextField/TextField'; +import { Checkbox } from '../Checkbox/Checkbox'; + +import { ViewContainer } from './ViewContainer'; + +type StoryViewProps = ComponentProps<typeof ViewContainer>; + +const meta: Meta<StoryViewProps> = { + title: 'Data Display/ViewContainer', + decorators: [InSpacingDecorator], +}; + +export default meta; + +type Story = StoryObj<StoryViewProps>; + +const ViewExample = ({ view }: StoryViewProps) => { + const style = view + ? { + background: view === 'onDark' ? '#1a1a1a' : '#ededed', + color: view === 'onDark' ? 'white' : 'black', + } + : undefined; + + return ( + <> + <h4>view: {view ?? 'default'}</h4> + <div> + <ViewContainer + view={view} + style={{ + ...style, + padding: '1rem', + borderRadius: '1rem', + display: 'flex', + flexDirection: 'column', + gap: '1rem', + }} + > + <h3 style={{ margin: 0 }}>Inside ViewContainer</h3> + <Button text="default Button" /> + <Checkbox checked label="Label" /> + <TextField value="Example Value" label="Label" labelPlacement="inner" /> + </ViewContainer> + </div> + </> + ); +}; + +export const Default: Story = { + render: () => { + return ( + <> + <ViewExample /> + <br /> + <ViewExample view="onDark" /> + <br /> + <ViewExample view="onLight" /> + </> + ); + }, +}; diff --git a/packages/plasma-giga/src/components/ViewContainer/ViewContainer.ts b/packages/plasma-giga/src/components/ViewContainer/ViewContainer.ts new file mode 100644 index 0000000000..62c65c2742 --- /dev/null +++ b/packages/plasma-giga/src/components/ViewContainer/ViewContainer.ts @@ -0,0 +1,7 @@ +import { viewContainerConfig, component, mergeConfig } from '@salutejs/plasma-new-hope/styled-components'; + +import { config } from './ViewContainer.config'; + +const mergedConfig = mergeConfig(viewContainerConfig, config); + +export const ViewContainer = component(mergedConfig); diff --git a/packages/plasma-giga/src/components/ViewContainer/index.ts b/packages/plasma-giga/src/components/ViewContainer/index.ts new file mode 100644 index 0000000000..3788330cf0 --- /dev/null +++ b/packages/plasma-giga/src/components/ViewContainer/index.ts @@ -0,0 +1 @@ +export { ViewContainer } from './ViewContainer'; diff --git a/packages/plasma-giga/src/helpers/index.ts b/packages/plasma-giga/src/helpers/index.ts new file mode 100644 index 0000000000..9e8bb696cd --- /dev/null +++ b/packages/plasma-giga/src/helpers/index.ts @@ -0,0 +1 @@ +export { IconPlaceholder, InSpacingDecorator, disableProps, getGroupedTokens } from '@salutejs/plasma-sb-utils'; diff --git a/packages/plasma-giga/src/index.ts b/packages/plasma-giga/src/index.ts new file mode 100644 index 0000000000..8eb7749252 --- /dev/null +++ b/packages/plasma-giga/src/index.ts @@ -0,0 +1,63 @@ +export * from './components/Avatar'; +export * from './components/AvatarGroup'; +export * from './components/Badge'; +export * from './components/Button'; +export * from './components/ButtonGroup'; +export * from './components/Breadcrumbs'; +export * from './components/Divider'; +export * from './components/Drawer'; +export * from './components/Grid'; +export * from './components/Calendar'; +export * from './components/Checkbox'; +export * from './components/Chip'; +export * from './components/ChipGroup'; +export * from './components/Cell'; +export * from './components/Counter'; +export * from './components/Combobox'; +export * from './components/DatePicker'; +export * from './components/Dropdown'; +export * from './components/IconButton'; +export * from './components/Image'; +export * from './components/Indicator'; +export * from './components/Link'; +export * from './components/Mask'; +export * from './components/Modal'; +export * from './components/Overlay'; +export * from './components/Popover'; +export * from './components/Popup'; +export * from './components/Portal'; +export * from './components/Price'; +export * from './components/Progress'; +export * from './components/Pagination'; +export * from './components/Range'; +export * from './components/Radiobox'; +export * from './components/Segment'; +export * from './components/Sheet'; +export * from './components/Spinner'; +export * from './components/Slider'; +export * from './components/SSRProvider'; +export * from './components/Steps'; +export * from './components/Switch'; +export * from './components/Tabs'; +export * from './components/TextArea'; +export * from './components/TextField'; +export * from './components/TextFieldGroup'; +export * from './components/Toast'; +export * from './components/Toolbar'; +export * from './components/Tooltip'; +export * from './components/Typography'; +export * from './components/Notification'; +export * from './components/ButtonBase'; +export * from './components/Skeleton'; +export * from './components/Accordion'; +export * from './components/Select'; +export * from './components/Autocomplete'; +export * from './components/EmptyState'; +export * from './components/Attach'; +export * from './components/ViewContainer'; +export * from './components/NumberInput'; +export * from './components/Dropzone'; +export * from './components/Rating'; + +export * from './mixins'; +export * from './tokens'; diff --git a/packages/plasma-giga/src/mixins/index.ts b/packages/plasma-giga/src/mixins/index.ts new file mode 100644 index 0000000000..9a1663fa48 --- /dev/null +++ b/packages/plasma-giga/src/mixins/index.ts @@ -0,0 +1 @@ +export { addFocus, mediaQuery } from '@salutejs/plasma-new-hope/styled-components'; diff --git a/packages/plasma-giga/src/tokens/index.ts b/packages/plasma-giga/src/tokens/index.ts new file mode 100644 index 0000000000..3449bafbaa --- /dev/null +++ b/packages/plasma-giga/src/tokens/index.ts @@ -0,0 +1,38 @@ +export { + dsplL, + dsplLBold, + dsplM, + dsplMBold, + dsplS, + dsplSBold, + h1, + h1Bold, + h2, + h2Bold, + h3, + h3Bold, + h4, + h4Bold, + h5, + h5Bold, + bodyL, + bodyLBold, + bodyM, + bodyMBold, + bodyS, + bodySBold, + bodyXS, + bodyXSBold, + bodyXXS, + bodyXXSBold, + textL, + textLBold, + textM, + textMBold, + textS, + textSBold, + textXS, + textXSBold, +} from '@salutejs/plasma-themes/tokens'; + +export * from '@salutejs/plasma-themes/tokens/plasma_giga'; diff --git a/packages/plasma-giga/styled-components/package.json b/packages/plasma-giga/styled-components/package.json new file mode 100644 index 0000000000..0e8061e06b --- /dev/null +++ b/packages/plasma-giga/styled-components/package.json @@ -0,0 +1,5 @@ +{ + "module": "es/index.js", + "main": "cjs/index.js", + "types": "../types/index.d.ts" +} diff --git a/packages/plasma-giga/tsconfig.json b/packages/plasma-giga/tsconfig.json new file mode 100644 index 0000000000..b81f4d6b8d --- /dev/null +++ b/packages/plasma-giga/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "target": "ES5", + "module": "CommonJS", + "lib": ["dom", "dom.iterable", "esnext"], + "jsx": "react", + "declaration": true, + "sourceMap": true, + "importHelpers": false, + + /* Strict Type-Checking Options */ + "strict": true, + "noImplicitAny": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "strictBindCallApply": true, + "strictPropertyInitialization": true, + "noImplicitThis": true, + "alwaysStrict": true, + "isolatedModules": true, + + /* Additional Checks */ + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + + /* Module Resolution Options */ + "moduleResolution": "node", + "esModuleInterop": true, + + /* Advanced Options */ + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": ".", + "outDir": "./", + "rootDir": "./src", + "paths": { + "react": ["./node_modules/@types/react"] + } + }, + "include": ["./src"], + "exclude": ["./src/helpers", "./src/**/*.stories.tsx", "./src/**/*.component-test.tsx", "./src/**/*.perftest.tsx"] +}