From 919a464b6a6073d7d2050658d6b6a15c295d2d2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 04:19:45 +0000 Subject: [PATCH 01/15] build(deps-dev): bump vite from 4.5.3 to 4.5.6 Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.5.3 to 4.5.6. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v4.5.6/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v4.5.6/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- apps/web/package.json | 2 +- package-lock.json | 36 +++++++++++++++++----------------- packages/core-lib/package.json | 2 +- packages/mirinae/package.json | 2 +- packages/utils/package.json | 2 +- 5 files changed, 22 insertions(+), 22 deletions(-) diff --git a/apps/web/package.json b/apps/web/package.json index 45e11c8888..3370d7f46e 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -112,7 +112,7 @@ "postcss-config-custom": "*", "rollup-plugin-visualizer": "^5.9.0", "tsconfig": "*", - "vite": "^5.4.0", + "vite": "^4.5.6", "vite-plugin-stylelint": "^3.3.3", "vite-plugin-vue-type-imports": "^0.2.4", "vitest": "^0.34.5", diff --git a/package-lock.json b/package-lock.json index 62e5804b65..909fae4c31 100644 --- a/package-lock.json +++ b/package-lock.json @@ -260,7 +260,7 @@ "postcss-config-custom": "*", "rollup-plugin-visualizer": "^5.9.0", "tsconfig": "*", - "vite": "^5.4.0", + "vite": "^4.5.6", "vite-plugin-stylelint": "^3.3.3", "vite-plugin-vue-type-imports": "^0.2.4", "vitest": "^0.34.5", @@ -33894,10 +33894,11 @@ } }, "node_modules/vite": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", - "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.6.tgz", + "integrity": "sha512-ElBNuVvJKslxcfY2gMmae5IjaKGqCYGicCNZ+8R56sAznobeE3pI9ctzI17cBS/6OJh5YuQNMSN4BP4dRjugBg==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", @@ -35349,7 +35350,7 @@ "tsc-alias": "^1.6.11", "tsc-watch": "^6.0.0", "tsconfig": "*", - "vite": "^4.5.3" + "vite": "^4.5.6" } }, "packages/core-lib/node_modules/@types/node": { @@ -35366,7 +35367,7 @@ "@typescript-eslint/parser": "^5.41.0", "eslint": "8.22.0", "eslint-config-airbnb": "^19.0.4", - "eslint-config-turbo": "latest", + "eslint-config-turbo": "*", "eslint-import-resolver-typescript": "^2.7.1", "eslint-plugin-import": "^2.26.0", "eslint-plugin-mdx": "^1.17.1", @@ -35463,7 +35464,7 @@ "tsc-watch": "^6.0.0", "tsconfig": "*", "typescript": "^4.8.2", - "vite": "^5.4.0", + "vite": "^4.5.6", "vite-plugin-stylelint": "^3.3.3", "vitest": "^0.26.3", "vue-router": "^3.6.5", @@ -36376,7 +36377,7 @@ "tsc-alias": "^1.6.11", "tsc-watch": "^6.0.0", "tsconfig": "*", - "vite": "^4.5.3" + "vite": "^4.5.6" } }, "packages/utils/node_modules/@types/node": { @@ -37938,7 +37939,7 @@ "tsc-alias": "^1.6.11", "tsc-watch": "^6.0.0", "tsconfig": "*", - "vite": "^4.5.3" + "vite": "^4.5.6" }, "dependencies": { "@types/node": { @@ -38008,7 +38009,7 @@ "v-click-outside": "^3.0.1", "v-tooltip": "^2.0.3", "velocity-animate": "^1.5.2", - "vite": "^5.4.0", + "vite": "^4.5.6", "vite-plugin-stylelint": "^3.3.3", "vitest": "^0.26.3", "vue": "2.7.16", @@ -38358,8 +38359,7 @@ } }, "vite": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz", + "version": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz", "integrity": "sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==", "dev": true, "requires": { @@ -38396,7 +38396,7 @@ "tsc-alias": "^1.6.11", "tsc-watch": "^6.0.0", "tsconfig": "*", - "vite": "^4.5.3" + "vite": "^4.5.6" }, "dependencies": { "@types/node": { @@ -48221,7 +48221,7 @@ "@typescript-eslint/parser": "^5.41.0", "eslint": "8.22.0", "eslint-config-airbnb": "^19.0.4", - "eslint-config-turbo": "latest", + "eslint-config-turbo": "*", "eslint-import-resolver-typescript": "^2.7.1", "eslint-plugin-import": "^2.26.0", "eslint-plugin-mdx": "^1.17.1", @@ -60918,9 +60918,9 @@ } }, "vite": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", - "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.6.tgz", + "integrity": "sha512-ElBNuVvJKslxcfY2gMmae5IjaKGqCYGicCNZ+8R56sAznobeE3pI9ctzI17cBS/6OJh5YuQNMSN4BP4dRjugBg==", "dev": true, "requires": { "esbuild": "^0.18.10", @@ -61616,7 +61616,7 @@ "uuid": "^8.3.2", "v-click-outside": "^3.0.1", "v-tooltip": "^2.0.3", - "vite": "^5.4.0", + "vite": "^4.5.6", "vite-plugin-stylelint": "^3.3.3", "vite-plugin-vue-type-imports": "^0.2.4", "vitest": "^0.34.5", diff --git a/packages/core-lib/package.json b/packages/core-lib/package.json index 71448a1c37..b1fd3c84f4 100644 --- a/packages/core-lib/package.json +++ b/packages/core-lib/package.json @@ -35,7 +35,7 @@ "tsc-alias": "^1.6.11", "tsc-watch": "^6.0.0", "tsconfig": "*", - "vite": "^4.5.3" + "vite": "^4.5.6" }, "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/mirinae/package.json b/packages/mirinae/package.json index c056a44123..9d28309a57 100644 --- a/packages/mirinae/package.json +++ b/packages/mirinae/package.json @@ -122,7 +122,7 @@ "tsc-watch": "^6.0.0", "tsconfig": "*", "typescript": "^4.8.2", - "vite": "^5.4.0", + "vite": "^4.5.6", "vite-plugin-stylelint": "^3.3.3", "vitest": "^0.26.3", "vue-router": "^3.6.5", diff --git a/packages/utils/package.json b/packages/utils/package.json index 972f5a6122..997bf28e65 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -34,7 +34,7 @@ "tsc-alias": "^1.6.11", "tsc-watch": "^6.0.0", "tsconfig": "*", - "vite": "^4.5.3" + "vite": "^4.5.6" }, "main": "dist/index.js", "types": "dist/index.d.ts", From 5bebb426408f0333beefda8689e52015ade91038 Mon Sep 17 00:00:00 2001 From: Wanjin Noh Date: Thu, 23 Jan 2025 13:27:50 +0900 Subject: [PATCH 02/15] build: update package-lock.json Signed-off-by: Wanjin Noh --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 909fae4c31..e5729840e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35367,7 +35367,7 @@ "@typescript-eslint/parser": "^5.41.0", "eslint": "8.22.0", "eslint-config-airbnb": "^19.0.4", - "eslint-config-turbo": "*", + "eslint-config-turbo": "latest", "eslint-import-resolver-typescript": "^2.7.1", "eslint-plugin-import": "^2.26.0", "eslint-plugin-mdx": "^1.17.1", @@ -48221,7 +48221,7 @@ "@typescript-eslint/parser": "^5.41.0", "eslint": "8.22.0", "eslint-config-airbnb": "^19.0.4", - "eslint-config-turbo": "*", + "eslint-config-turbo": "latest", "eslint-import-resolver-typescript": "^2.7.1", "eslint-plugin-import": "^2.26.0", "eslint-plugin-mdx": "^1.17.1", From 05e1d12bdfd83b091d41a5c0e2feab7c004b39b0 Mon Sep 17 00:00:00 2001 From: sulmo Date: Mon, 20 Jan 2025 18:05:37 +0900 Subject: [PATCH 03/15] refactor: create mrinae-foundation package for separation of concerns refactor: restructure styles and update imports - Moved style files to a new package directory - Updated import paths for colors, screens, and fonts - Added mirinae-foundation as a dependency in package.json Signed-off-by: sulmo refactor(tailwind): simplify config by extending default settings - Replaced custom Tailwind configuration with an extended default config - Removed redundant theme, variants, and plugins definitions - Updated content paths for style processing Signed-off-by: sulmo --- apps/web/tailwind.config.cjs | 2 +- packages/mirinae-foundation/colors.cjs | 181 ++++++++++++++++++ .../font-size.cjs | 0 packages/mirinae-foundation/package.json | 4 + .../styles => mirinae-foundation}/screens.cjs | 0 .../web-fonts.cjs | 0 packages/mirinae/package.json | 1 + .../typography/PTypography.stories.ts | 2 +- packages/mirinae/src/index.ts | 6 +- .../vertical-layout/PVerticalLayout.vue | 3 +- .../navigation/breadcrumbs/PBreadcrumbs.vue | 2 +- .../breadcrumbs/modules/BreadcrumbsItem.vue | 2 +- .../tabs/ballon-tab/PBalloonTab.vue | 3 +- packages/mirinae/src/styles/colors.cjs | 178 +---------------- packages/mirinae/tailwind.config.cjs | 125 +----------- packages/postcss-config-custom/package.json | 3 +- .../postcss-config-custom/tailwind.config.cjs | 127 ++++++++++++ 17 files changed, 334 insertions(+), 305 deletions(-) create mode 100644 packages/mirinae-foundation/colors.cjs rename packages/{mirinae/src/styles => mirinae-foundation}/font-size.cjs (100%) create mode 100644 packages/mirinae-foundation/package.json rename packages/{mirinae/src/styles => mirinae-foundation}/screens.cjs (100%) rename packages/{mirinae/src/styles => mirinae-foundation}/web-fonts.cjs (100%) create mode 100644 packages/postcss-config-custom/tailwind.config.cjs diff --git a/apps/web/tailwind.config.cjs b/apps/web/tailwind.config.cjs index cc29acadc8..bc0cb4d1b7 100644 --- a/apps/web/tailwind.config.cjs +++ b/apps/web/tailwind.config.cjs @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-var-requires */ -const spaceoneTailwindConfig = require('@cloudforet/mirinae/tailwind.config.cjs'); +const spaceoneTailwindConfig = require('postcss-config-custom/tailwind.config.cjs'); module.exports = { content: [ diff --git a/packages/mirinae-foundation/colors.cjs b/packages/mirinae-foundation/colors.cjs new file mode 100644 index 0000000000..978f29a622 --- /dev/null +++ b/packages/mirinae-foundation/colors.cjs @@ -0,0 +1,181 @@ +// const { colors } = require('tailwindcss/defaultTheme'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { kebabCase, forEach } = require('lodash'); + +const palette = { + black: '#000000', + white: '#FFFFFF', + pointViolet: '#7545FF', + gray: { + 100: '#F7F7F7', + 150: '#EDEDEF', + 200: '#DDDDDF', + 300: '#C2C2C6', + 400: '#A7A9B2', + 500: '#898995', + 600: '#6B6E7B', + 700: '#515364', + 800: '#383B4C', + 900: '#232533', + }, + red: { + 100: '#FFF0F0', + 200: '#FFC1C1', + 300: '#FF9292', + 400: '#FF6A6A', + 500: '#EA4646', + 600: '#CE2C2C', + 700: '#AD1B1B', + 800: '#881010', + 900: '#660A0A', + }, + coral: { + 100: '#FFF0ED', + 200: '#FFD4C8', + 300: '#FFB5A0', + 400: '#FF9476', + 500: '#E8704D', + 600: '#CA4F28', + 700: '#A6320B', + 800: '#7E2200', + 900: '#591900', + }, + yellow: { + 100: '#FFFAE6', + 200: '#FFF3A7', + 300: '#FFE968', + 400: '#FFDD2F', + 500: '#FFCE02', + 600: '#D9AE00', + 700: '#AB8900', + 800: '#7B6200', + 900: '#4D3D00', + }, + green: { + 100: '#F9FCE8', + 200: '#E8F9B8', + 300: '#CDF18A', + 400: '#ACE564', + 500: '#87D247', + 600: '#60B731', + 700: '#50911C', + 800: '#38670E', + 900: '#234006', + }, + blue: { + 100: '#F3F7FC', + 200: '#E0F2FF', + 300: '#B4DFFF', + 400: '#86C8FF', + 500: '#49A7F7', + 600: '#007EE5', + 700: '#0062B8', + 800: '#004687', + 900: '#002D59', + }, + violet: { + 100: '#F8F8FC', + 150: '#F0EFFD', + 200: '#E1E0FA', + 300: '#B7AFED', + 400: '#897CD6', + 500: '#7D5DD2', + 600: '#6638B6', + 700: '#48248C', + 800: '#341470', + 900: '#2C0F66', + }, + indigo: { + 100: '#EBF3FF', + 200: '#C5DEFF', + 300: '#9FC0FC', + 400: '#7F9CF5', + 500: '#5F77E2', + 600: '#4651C8', + 700: '#3933A9', + 800: '#382486', + 900: '#331A66', + }, + peacock: { + 100: '#E8FCF9', + 200: '#BBF8EF', + 300: '#90F0E5', + 400: '#6CE4D7', + 500: '#4FD1C5', + 600: '#37B6AE', + 700: '#259490', + 800: '#186F6E', + 900: '#0F4D4D', + }, +}; +const colorSet = { + transparent: 'transparent', + black: palette.black, + white: palette.white, + pointViolet: palette.pointViolet, + gray: { + ...palette.gray, + default: palette.gray[500], + dark: palette.gray[900], + }, + red: { + ...palette.red, + default: palette.red[500], + }, + coral: { + ...palette.coral, + default: palette.coral[500], + }, + yellow: { + ...palette.yellow, + default: palette.yellow[500], + }, + green: { + ...palette.green, + default: palette.green[600], + }, + blue: { + ...palette.blue, + default: palette.blue[600], + }, + violet: { + ...palette.violet, + default: palette.violet[600], + }, + peacock: { + ...palette.peacock, + default: palette.peacock[600], + }, + indigo: { + ...palette.indigo, + default: palette.indigo[500], + }, +}; + + +const semanticColors = { + primary: palette.violet[600], + primaryDark: palette.violet[800], + primary1: palette.violet[400], + primary2: palette.violet[300], + primary3: palette.violet[200], + primary4: palette.violet[100], + secondary: palette.blue[600], + secondaryDark: palette.blue[800], + secondary1: palette.blue[500], + secondary2: palette.blue[100], + alert: palette.red[500], + safe: palette.green[600], +}; + +const kebabColors = {}; +forEach(semanticColors, (d, k) => { kebabColors[kebabCase(k)] = d; }); +forEach(colorSet, (d, k) => { kebabColors[kebabCase(k)] = d; }); + + +module.exports = { + palette, + semanticColors, + colorSet, + kebabColors, +}; diff --git a/packages/mirinae/src/styles/font-size.cjs b/packages/mirinae-foundation/font-size.cjs similarity index 100% rename from packages/mirinae/src/styles/font-size.cjs rename to packages/mirinae-foundation/font-size.cjs diff --git a/packages/mirinae-foundation/package.json b/packages/mirinae-foundation/package.json new file mode 100644 index 0000000000..582faa9142 --- /dev/null +++ b/packages/mirinae-foundation/package.json @@ -0,0 +1,4 @@ +{ + "name": "mirinae-foundation", + "private": true +} diff --git a/packages/mirinae/src/styles/screens.cjs b/packages/mirinae-foundation/screens.cjs similarity index 100% rename from packages/mirinae/src/styles/screens.cjs rename to packages/mirinae-foundation/screens.cjs diff --git a/packages/mirinae/src/styles/web-fonts.cjs b/packages/mirinae-foundation/web-fonts.cjs similarity index 100% rename from packages/mirinae/src/styles/web-fonts.cjs rename to packages/mirinae-foundation/web-fonts.cjs diff --git a/packages/mirinae/package.json b/packages/mirinae/package.json index 9d28309a57..9bb8383655 100644 --- a/packages/mirinae/package.json +++ b/packages/mirinae/package.json @@ -115,6 +115,7 @@ "concurrently": "^7.6.0", "eslint-config-custom": "*", "postcss-config-custom": "*", + "mirinae-foundation": "*", "resolve-url-loader": "^3.1.5", "rollup-plugin-copy": "^3.4.0", "ts-loader": "^8.4.0", diff --git a/packages/mirinae/src/foundation/typography/PTypography.stories.ts b/packages/mirinae/src/foundation/typography/PTypography.stories.ts index f2738627f4..368093fb96 100644 --- a/packages/mirinae/src/foundation/typography/PTypography.stories.ts +++ b/packages/mirinae/src/foundation/typography/PTypography.stories.ts @@ -1,8 +1,8 @@ import type { Meta, StoryObj } from '@storybook/vue'; +import { semanticFontSize, lineHeight, letterSpacing } from 'mirinae-foundation/font-size.cjs'; import { getTypographyParameters } from '@/foundation/typography/stroy-helper'; -import { semanticFontSize, lineHeight, letterSpacing } from '@/styles/font-size.cjs'; const meta : Meta = { diff --git a/packages/mirinae/src/index.ts b/packages/mirinae/src/index.ts index 8896b07678..32412881cc 100644 --- a/packages/mirinae/src/index.ts +++ b/packages/mirinae/src/index.ts @@ -14,10 +14,10 @@ export default mirinaeOptions; export { messages } from './translations'; /* Styles */ -export { default as colors } from './styles/colors.cjs'; -export { default as screens } from './styles/screens.cjs'; +export { default as colors } from 'mirinae-foundation/colors.cjs'; +export { default as screens } from 'mirinae-foundation/screens.cjs'; export { default as styleVariables } from './styles/variables.cjs'; -export { default as fonts } from './styles/web-fonts.cjs'; +export { default as fonts } from 'mirinae-foundation/web-fonts.cjs'; /* Components */ export * from './components'; diff --git a/packages/mirinae/src/layouts/vertical-layout/PVerticalLayout.vue b/packages/mirinae/src/layouts/vertical-layout/PVerticalLayout.vue index c831844c26..36ee889845 100644 --- a/packages/mirinae/src/layouts/vertical-layout/PVerticalLayout.vue +++ b/packages/mirinae/src/layouts/vertical-layout/PVerticalLayout.vue @@ -3,10 +3,11 @@ import { reactive, computed, onMounted, onUnmounted, onBeforeMount, ref, } from 'vue'; +import screens from 'mirinae-foundation/screens.cjs'; + import PTooltip from '@/data-display/tooltips/PTooltip.vue'; import PI from '@/foundation/icons/PI.vue'; -import screens from '@/styles/screens.cjs'; const MOBILE_WIDTH = '312'; diff --git a/packages/mirinae/src/navigation/breadcrumbs/PBreadcrumbs.vue b/packages/mirinae/src/navigation/breadcrumbs/PBreadcrumbs.vue index 24bda9fe15..88424f1ed4 100644 --- a/packages/mirinae/src/navigation/breadcrumbs/PBreadcrumbs.vue +++ b/packages/mirinae/src/navigation/breadcrumbs/PBreadcrumbs.vue @@ -4,13 +4,13 @@ import { } from 'vue'; import { useWindowSize } from '@vueuse/core'; +import screens from 'mirinae-foundation/screens.cjs'; import type { MenuItem } from '@/controls/context-menu/type'; import BreadcrumbsEllipsisItem from '@/navigation/breadcrumbs/modules/BreadcrumbsEllipsisItem.vue'; import BreadcrumbsItem from '@/navigation/breadcrumbs/modules/BreadcrumbsItem.vue'; import type { Route } from '@/navigation/breadcrumbs/type'; -import screens from '@/styles/screens.cjs'; interface Props { routes: Route[]; diff --git a/packages/mirinae/src/navigation/breadcrumbs/modules/BreadcrumbsItem.vue b/packages/mirinae/src/navigation/breadcrumbs/modules/BreadcrumbsItem.vue index b56f65deb1..3b270b3b28 100644 --- a/packages/mirinae/src/navigation/breadcrumbs/modules/BreadcrumbsItem.vue +++ b/packages/mirinae/src/navigation/breadcrumbs/modules/BreadcrumbsItem.vue @@ -2,13 +2,13 @@ import { computed, reactive } from 'vue'; import { useWindowSize } from '@vueuse/core'; +import screens from 'mirinae-foundation/screens.cjs'; import type { Location } from 'vue-router'; import PCopyButton from '@/controls/buttons/copy-button/PCopyButton.vue'; import PI from '@/foundation/icons/PI.vue'; import type { Route } from '@/navigation/breadcrumbs/type'; -import screens from '@/styles/screens.cjs'; interface Props { route: Route; diff --git a/packages/mirinae/src/navigation/tabs/ballon-tab/PBalloonTab.vue b/packages/mirinae/src/navigation/tabs/ballon-tab/PBalloonTab.vue index da794cd3b1..cc10562b05 100644 --- a/packages/mirinae/src/navigation/tabs/ballon-tab/PBalloonTab.vue +++ b/packages/mirinae/src/navigation/tabs/ballon-tab/PBalloonTab.vue @@ -46,6 +46,8 @@ import { } from 'vue'; +import screens from 'mirinae-foundation/screens.cjs'; + import { useTab } from '@/hooks/use-tab/use-tab'; import { BALLOON_TAB_POSITION, BALLOON_TAB_SIZE, BALLOON_TAB_STYLE_TYPE, @@ -53,7 +55,6 @@ import { import type { BalloonTabProps } from '@/navigation/tabs/ballon-tab/type'; import type { TabItem } from '@/navigation/tabs/tab/type'; -import screens from '@/styles/screens.cjs'; export default { diff --git a/packages/mirinae/src/styles/colors.cjs b/packages/mirinae/src/styles/colors.cjs index 8f3f1e5b25..c53babfa9d 100644 --- a/packages/mirinae/src/styles/colors.cjs +++ b/packages/mirinae/src/styles/colors.cjs @@ -1,184 +1,8 @@ // const { colors } = require('tailwindcss/defaultTheme'); // eslint-disable-next-line @typescript-eslint/no-var-requires -const { kebabCase, forEach } = require('lodash'); - -const palette = { - black: '#000000', - white: '#FFFFFF', - pointViolet: '#7545FF', - gray: { - 100: '#F7F7F7', - 150: '#EDEDEF', - 200: '#DDDDDF', - 300: '#C2C2C6', - 400: '#A7A9B2', - 500: '#898995', - 600: '#6B6E7B', - 700: '#515364', - 800: '#383B4C', - 900: '#232533', - }, - red: { - 100: '#FFF0F0', - 200: '#FFC1C1', - 300: '#FF9292', - 400: '#FF6A6A', - 500: '#EA4646', - 600: '#CE2C2C', - 700: '#AD1B1B', - 800: '#881010', - 900: '#660A0A', - }, - coral: { - 100: '#FFF0ED', - 200: '#FFD4C8', - 300: '#FFB5A0', - 400: '#FF9476', - 500: '#E8704D', - 600: '#CA4F28', - 700: '#A6320B', - 800: '#7E2200', - 900: '#591900', - }, - yellow: { - 100: '#FFFAE6', - 200: '#FFF3A7', - 300: '#FFE968', - 400: '#FFDD2F', - 500: '#FFCE02', - 600: '#D9AE00', - 700: '#AB8900', - 800: '#7B6200', - 900: '#4D3D00', - }, - green: { - 100: '#F9FCE8', - 200: '#E8F9B8', - 300: '#CDF18A', - 400: '#ACE564', - 500: '#87D247', - 600: '#60B731', - 700: '#50911C', - 800: '#38670E', - 900: '#234006', - }, - blue: { - 100: '#F3F7FC', - 200: '#E0F2FF', - 300: '#B4DFFF', - 400: '#86C8FF', - 500: '#49A7F7', - 600: '#007EE5', - 700: '#0062B8', - 800: '#004687', - 900: '#002D59', - }, - violet: { - 100: '#F8F8FC', - 150: '#F0EFFD', - 200: '#E1E0FA', - 300: '#B7AFED', - 400: '#897CD6', - 500: '#7D5DD2', - 600: '#6638B6', - 700: '#48248C', - 800: '#341470', - 900: '#2C0F66', - }, - indigo: { - 100: '#EBF3FF', - 200: '#C5DEFF', - 300: '#9FC0FC', - 400: '#7F9CF5', - 500: '#5F77E2', - 600: '#4651C8', - 700: '#3933A9', - 800: '#382486', - 900: '#331A66', - }, - peacock: { - 100: '#E8FCF9', - 200: '#BBF8EF', - 300: '#90F0E5', - 400: '#6CE4D7', - 500: '#4FD1C5', - 600: '#37B6AE', - 700: '#259490', - 800: '#186F6E', - 900: '#0F4D4D', - }, -}; -const colorSet = { - transparent: 'transparent', - black: palette.black, - white: palette.white, - pointViolet: palette.pointViolet, - gray: { - ...palette.gray, - default: palette.gray[500], - dark: palette.gray[900], - }, - red: { - ...palette.red, - default: palette.red[500], - }, - coral: { - ...palette.coral, - default: palette.coral[500], - }, - yellow: { - ...palette.yellow, - default: palette.yellow[500], - }, - green: { - ...palette.green, - default: palette.green[600], - }, - blue: { - ...palette.blue, - default: palette.blue[600], - }, - violet: { - ...palette.violet, - default: palette.violet[600], - }, - peacock: { - ...palette.peacock, - default: palette.peacock[600], - }, - indigo: { - ...palette.indigo, - default: palette.indigo[500], - }, -}; - - -const semanticColors = { - primary: palette.violet[600], - primaryDark: palette.violet[800], - primary1: palette.violet[400], - primary2: palette.violet[300], - primary3: palette.violet[200], - primary4: palette.violet[100], - secondary: palette.blue[600], - secondaryDark: palette.blue[800], - secondary1: palette.blue[500], - secondary2: palette.blue[100], - alert: palette.red[500], - safe: palette.green[600], -}; - -const kebabColors = {}; -forEach(semanticColors, (d, k) => { kebabColors[kebabCase(k)] = d; }); -forEach(colorSet, (d, k) => { kebabColors[kebabCase(k)] = d; }); - +const { palette, semanticColors, colorSet } = require('mirinae-foundation/colors.cjs'); module.exports = { - /* color sets */ - tailwindColors: { - ...semanticColors, - ...kebabColors, - }, palette, semanticColors, diff --git a/packages/mirinae/tailwind.config.cjs b/packages/mirinae/tailwind.config.cjs index 27ece52d4c..ad58089b0b 100644 --- a/packages/mirinae/tailwind.config.cjs +++ b/packages/mirinae/tailwind.config.cjs @@ -1,122 +1,11 @@ -const _ = require('lodash'); -const defaultTheme = require('tailwindcss/defaultTheme'); -const plugin = require('tailwindcss/plugin'); -const colors = require('./src/styles/colors.cjs').tailwindColors; -const screens = require('./src/styles/screens.cjs'); -const semanticFont = require('./src/styles/font-size.cjs'); +const defaultConfig = require('postcss-config-custom/tailwind.config.cjs'); -const rawSize = Array(32) - .fill('') - .map((value, idx) => [`${idx}`, `${idx * 0.25}rem`]); -const size = _.fromPairs(rawSize); -const rawPercent = [ - '1/2', -]; - -const percent = _.fromPairs(rawPercent.map((value) => [value, `${eval(value) * 100}%`])); module.exports = { - theme: { - borderRadius: { - DEFAULT: '0.25rem', - none: '0', - '2xs': '0.063rem', // 1px - xs: '0.125rem', // 2px - sm: '0.188rem', // 3px - md: '0.25rem', // 4px - default: '0.25rem', // 4px - lg: '0.375rem', // 6px - xl: '0.5rem', // 8px - '2xl': '0.75rem', // 12px - full: '9999px', - }, - colors, - spacing: { - ...defaultTheme.spacing, - px: '1px', - ...size, - }, - minWidth: (theme) => ({ - ...defaultTheme.minWidth, - ...theme('spacing'), - ...percent, - 'full': '100%', - '2xs': theme('screens.2xs.min'), - xs: theme('screens.xs.min'), - sm: theme('screens.sm.min'), - md: theme('screens.md.min'), - lg: theme('screens.lg.min'), - xl: theme('screens.xl.min'), - '2xl': theme('screens.2xl.min'), - '3xl': theme('screens.3xl.min'), - }), - maxWidth: (theme, args) => ({ - ...defaultTheme.maxWidth(theme, args), - ...theme('spacing'), - ...percent, - mobile: theme('screens.mobile.max'), - tablet: theme('screens.tablet.max'), - laptop: theme('screens.laptop.max'), - desktop: theme('screens.desktop.max'), - }), - minHeight: (theme) => ({ - ...defaultTheme.minHeight, - ...theme('spacing'), - ...percent, - }), - maxHeight: (theme) => ({ - ...defaultTheme.maxHeight, - ...theme('spacing'), - ...percent, - }), - fontFamily: { - sans: ['Noto Sans'], - serif: ['Roboto'], - }, - screens: { - '2xs': '375px' , - xs: '478px' , - sm: '576px' , - md: '768px' , - lg: '1024px' , - xl: '1440px' , - '2xl': '1920px' , - '3xl': '2560px' , - mobile: { max:`${screens.mobile.max}px`}, - tablet: { max:`${screens.tablet.max}px`}, - laptop: { max:`${screens.laptop.max}px`}, - desktop: { max:`${screens.desktop.max}px`}, - }, - fontSize: { - ...defaultTheme.fontSize, - 'display-2xl': semanticFont.semanticFontSize["display-2xl"], - 'display-xl': semanticFont.semanticFontSize["display-xl"], - 'display-lg': semanticFont.semanticFontSize["display-lg"], - 'display-md': semanticFont.semanticFontSize["display-md"], - 'display-sm': semanticFont.semanticFontSize["display-sm"], - 'label-xl': semanticFont.semanticFontSize["label-xl"], - 'label-lg': semanticFont.semanticFontSize["label-lg"], - 'label-md': semanticFont.semanticFontSize["label-md"], - 'label-sm': semanticFont.semanticFontSize["label-sm"], - 'label-xs': semanticFont.semanticFontSize["label-xs"], - 'paragraph-lg': semanticFont.semanticFontSize["paragraph-lg"], - 'paragraph-md': semanticFont.semanticFontSize["paragraph-md"], - 'paragraph-sm': semanticFont.semanticFontSize["paragraph-sm"], - 'code-lg': semanticFont.semanticFontSize["code-lg"], - 'code-md': semanticFont.semanticFontSize["code-md"], - }, - }, - variants: ['responsive', 'important', 'hover'], - plugins: [ - plugin(({ addVariant }) => { - addVariant('important', ({ container }) => { - container.walkRules((rule) => { - rule.selector = `.\\!${rule.selector.slice(1)}`; - rule.walkDecls((decl) => { - decl.important = true; - }); - }); - }); - }), + content: [ + './src/**/*.{js,ts,jsx,tsx,vue}', ], -}; + theme: defaultConfig.theme, + variants: defaultConfig.variants, + plugins: defaultConfig.plugins, +} diff --git a/packages/postcss-config-custom/package.json b/packages/postcss-config-custom/package.json index 1e2de6d019..f76d3e81b2 100644 --- a/packages/postcss-config-custom/package.json +++ b/packages/postcss-config-custom/package.json @@ -15,6 +15,7 @@ "postcss-nested": "^4.2.3", "postcss-preset-env": "6.7.0", "postcss-simple-vars": "^5.0.2", - "tailwindcss": "^3.4.15" + "tailwindcss": "^3.4.15", + "mirinae-foundation": "*" } } diff --git a/packages/postcss-config-custom/tailwind.config.cjs b/packages/postcss-config-custom/tailwind.config.cjs new file mode 100644 index 0000000000..39c7bc9311 --- /dev/null +++ b/packages/postcss-config-custom/tailwind.config.cjs @@ -0,0 +1,127 @@ +const _ = require('lodash'); +const defaultTheme = require('tailwindcss/defaultTheme'); +const plugin = require('tailwindcss/plugin'); +const colors = require('mirinae-foundation/colors.cjs'); +const screens = require('mirinae-foundation/screens.cjs'); +const semanticFont = require('mirinae-foundation/font-size.cjs'); + +const tailwindColors = { + ...colors.semanticColors, + ...colors.kebabColors, +} + +const rawSize = Array(32) + .fill('') + .map((value, idx) => [`${idx}`, `${idx * 0.25}rem`]); +const size = _.fromPairs(rawSize); + +const rawPercent = [ + '1/2', +]; + +const percent = _.fromPairs(rawPercent.map((value) => [value, `${eval(value) * 100}%`])); +module.exports = { + theme: { + borderRadius: { + DEFAULT: '0.25rem', + none: '0', + '2xs': '0.063rem', // 1px + xs: '0.125rem', // 2px + sm: '0.188rem', // 3px + md: '0.25rem', // 4px + default: '0.25rem', // 4px + lg: '0.375rem', // 6px + xl: '0.5rem', // 8px + '2xl': '0.75rem', // 12px + full: '9999px', + }, + colors: tailwindColors, + spacing: { + ...defaultTheme.spacing, + px: '1px', + ...size, + }, + minWidth: (theme) => ({ + ...defaultTheme.minWidth, + ...theme('spacing'), + ...percent, + 'full': '100%', + '2xs': theme('screens.2xs.min'), + xs: theme('screens.xs.min'), + sm: theme('screens.sm.min'), + md: theme('screens.md.min'), + lg: theme('screens.lg.min'), + xl: theme('screens.xl.min'), + '2xl': theme('screens.2xl.min'), + '3xl': theme('screens.3xl.min'), + }), + maxWidth: (theme, args) => ({ + ...defaultTheme.maxWidth(theme, args), + ...theme('spacing'), + ...percent, + mobile: theme('screens.mobile.max'), + tablet: theme('screens.tablet.max'), + laptop: theme('screens.laptop.max'), + desktop: theme('screens.desktop.max'), + }), + minHeight: (theme) => ({ + ...defaultTheme.minHeight, + ...theme('spacing'), + ...percent, + }), + maxHeight: (theme) => ({ + ...defaultTheme.maxHeight, + ...theme('spacing'), + ...percent, + }), + fontFamily: { + sans: ['Noto Sans'], + serif: ['Roboto'], + }, + screens: { + '2xs': '375px' , + xs: '478px' , + sm: '576px' , + md: '768px' , + lg: '1024px' , + xl: '1440px' , + '2xl': '1920px' , + '3xl': '2560px' , + mobile: { max:`${screens.mobile.max}px`}, + tablet: { max:`${screens.tablet.max}px`}, + laptop: { max:`${screens.laptop.max}px`}, + desktop: { max:`${screens.desktop.max}px`}, + }, + fontSize: { + ...defaultTheme.fontSize, + 'display-2xl': semanticFont.semanticFontSize["display-2xl"], + 'display-xl': semanticFont.semanticFontSize["display-xl"], + 'display-lg': semanticFont.semanticFontSize["display-lg"], + 'display-md': semanticFont.semanticFontSize["display-md"], + 'display-sm': semanticFont.semanticFontSize["display-sm"], + 'label-xl': semanticFont.semanticFontSize["label-xl"], + 'label-lg': semanticFont.semanticFontSize["label-lg"], + 'label-md': semanticFont.semanticFontSize["label-md"], + 'label-sm': semanticFont.semanticFontSize["label-sm"], + 'label-xs': semanticFont.semanticFontSize["label-xs"], + 'paragraph-lg': semanticFont.semanticFontSize["paragraph-lg"], + 'paragraph-md': semanticFont.semanticFontSize["paragraph-md"], + 'paragraph-sm': semanticFont.semanticFontSize["paragraph-sm"], + 'code-lg': semanticFont.semanticFontSize["code-lg"], + 'code-md': semanticFont.semanticFontSize["code-md"], + }, + }, + variants: ['responsive', 'important', 'hover'], + plugins: [ + plugin(({ addVariant }) => { + addVariant('important', ({ container }) => { + container.walkRules((rule) => { + rule.selector = `.\\!${rule.selector.slice(1)}`; + rule.walkDecls((decl) => { + decl.important = true; + }); + }); + }); + }), + ], +}; From d7f47d1e960f22897dd737fd2773827e1e5747b9 Mon Sep 17 00:00:00 2001 From: sulmo Date: Mon, 20 Jan 2025 18:32:19 +0900 Subject: [PATCH 04/15] refactor: create storybook-config-custom package for separation of concerns Signed-off-by: sulmo --- .dockerignore | 2 +- .../.eslintignore | 0 .../.eslintrc.js | 0 .../.gitignore | 0 .../.storybook/CloudforetTheme.js | 0 apps/mirinae-storybook/.storybook/main.ts | 13 +++++ .../.storybook/manager.js | 0 .../.storybook/preview.js | 5 +- apps/mirinae-storybook/package.json | 21 +++++++ .../postcss.config.js | 0 .../public/favicon.ico | Bin .../public/images/SpaceONE_logoTypeA.svg | 0 .../public/images/icons/icon-128x128.png | Bin .../public/images/icons/icon-144x144.png | Bin .../public/images/icons/icon-152x152.png | Bin .../public/images/icons/icon-192x192.png | Bin .../public/images/icons/icon-256x256.png | Bin .../public/images/icons/icon-512x512.png | Bin .../public/manifest.json | 0 .../tailwind.config.js | 2 +- .../tsconfig.json | 0 .../vite.config.js | 16 ++--- .../storybook-config-custom/index.js | 55 +++++++----------- .../storybook-config-custom}/package.json | 19 ++---- turbo.json | 2 +- 25 files changed, 75 insertions(+), 60 deletions(-) rename apps/{storybook => mirinae-storybook}/.eslintignore (100%) rename apps/{storybook => mirinae-storybook}/.eslintrc.js (100%) rename apps/{storybook => mirinae-storybook}/.gitignore (100%) rename apps/{storybook => mirinae-storybook}/.storybook/CloudforetTheme.js (100%) create mode 100644 apps/mirinae-storybook/.storybook/main.ts rename apps/{storybook => mirinae-storybook}/.storybook/manager.js (100%) rename apps/{storybook => mirinae-storybook}/.storybook/preview.js (95%) create mode 100644 apps/mirinae-storybook/package.json rename apps/{storybook => mirinae-storybook}/postcss.config.js (100%) rename apps/{storybook => mirinae-storybook}/public/favicon.ico (100%) rename apps/{storybook => mirinae-storybook}/public/images/SpaceONE_logoTypeA.svg (100%) rename apps/{storybook => mirinae-storybook}/public/images/icons/icon-128x128.png (100%) rename apps/{storybook => mirinae-storybook}/public/images/icons/icon-144x144.png (100%) rename apps/{storybook => mirinae-storybook}/public/images/icons/icon-152x152.png (100%) rename apps/{storybook => mirinae-storybook}/public/images/icons/icon-192x192.png (100%) rename apps/{storybook => mirinae-storybook}/public/images/icons/icon-256x256.png (100%) rename apps/{storybook => mirinae-storybook}/public/images/icons/icon-512x512.png (100%) rename apps/{storybook => mirinae-storybook}/public/manifest.json (100%) rename apps/{storybook => mirinae-storybook}/tailwind.config.js (78%) rename apps/{storybook => mirinae-storybook}/tsconfig.json (100%) rename apps/{storybook => mirinae-storybook}/vite.config.js (71%) rename apps/storybook/.storybook/main.ts => packages/storybook-config-custom/index.js (56%) rename {apps/storybook => packages/storybook-config-custom}/package.json (74%) diff --git a/.dockerignore b/.dockerignore index c82182d565..89e52b0cea 100644 --- a/.dockerignore +++ b/.dockerignore @@ -18,7 +18,7 @@ deploy # Output out **/dist -apps/storybook/.out +apps/mirinae-storybook/.out packages/mirinae/css packages/mirinae/types diff --git a/apps/storybook/.eslintignore b/apps/mirinae-storybook/.eslintignore similarity index 100% rename from apps/storybook/.eslintignore rename to apps/mirinae-storybook/.eslintignore diff --git a/apps/storybook/.eslintrc.js b/apps/mirinae-storybook/.eslintrc.js similarity index 100% rename from apps/storybook/.eslintrc.js rename to apps/mirinae-storybook/.eslintrc.js diff --git a/apps/storybook/.gitignore b/apps/mirinae-storybook/.gitignore similarity index 100% rename from apps/storybook/.gitignore rename to apps/mirinae-storybook/.gitignore diff --git a/apps/storybook/.storybook/CloudforetTheme.js b/apps/mirinae-storybook/.storybook/CloudforetTheme.js similarity index 100% rename from apps/storybook/.storybook/CloudforetTheme.js rename to apps/mirinae-storybook/.storybook/CloudforetTheme.js diff --git a/apps/mirinae-storybook/.storybook/main.ts b/apps/mirinae-storybook/.storybook/main.ts new file mode 100644 index 0000000000..28b280ad3e --- /dev/null +++ b/apps/mirinae-storybook/.storybook/main.ts @@ -0,0 +1,13 @@ +import type { StorybookConfig } from "@storybook/vue-vite"; +import { mainConfig } from "storybook-config-custom"; + +/** @type { import('@storybook/vue-vite').StorybookConfig } */ +const config: StorybookConfig = { + ...mainConfig, + stories: [ + '../../../packages/mirinae/src/**/*.mdx', + '../../../packages/mirinae/src/**/*.stories.@(js|jsx|ts|tsx)', + ], +}; + +export default config; diff --git a/apps/storybook/.storybook/manager.js b/apps/mirinae-storybook/.storybook/manager.js similarity index 100% rename from apps/storybook/.storybook/manager.js rename to apps/mirinae-storybook/.storybook/manager.js diff --git a/apps/storybook/.storybook/preview.js b/apps/mirinae-storybook/.storybook/preview.js similarity index 95% rename from apps/storybook/.storybook/preview.js rename to apps/mirinae-storybook/.storybook/preview.js index b1f3df29f1..0a78c80a44 100644 --- a/apps/storybook/.storybook/preview.js +++ b/apps/mirinae-storybook/.storybook/preview.js @@ -12,8 +12,9 @@ import VueRouter from 'vue-router'; import SvgIcon from 'vue-svgicon'; import webFontLoader from 'webfontloader'; -import screens from '@/styles/screens.cjs'; -import { fontUrls, webFonts } from '@/styles/web-fonts.cjs'; +import screens from 'mirinae-foundation/screens.cjs'; + +import { fontUrls, webFonts } from 'mirinae-foundation/web-fonts.cjs'; import SpaceOneTheme from './CloudforetTheme'; diff --git a/apps/mirinae-storybook/package.json b/apps/mirinae-storybook/package.json new file mode 100644 index 0000000000..4ec271dd3e --- /dev/null +++ b/apps/mirinae-storybook/package.json @@ -0,0 +1,21 @@ +{ + "name": "mirinae-storybook", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "dev": "storybook dev -p 6006", + "build": "storybook build" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "eslint-config-custom": "*", + "postcss-config-custom": "*", + "mirinae-foundation": "*", + "tsconfig": "*", + "storybook-config-custom": "*", + "@storybook/theming": "^7.6.10" + } +} diff --git a/apps/storybook/postcss.config.js b/apps/mirinae-storybook/postcss.config.js similarity index 100% rename from apps/storybook/postcss.config.js rename to apps/mirinae-storybook/postcss.config.js diff --git a/apps/storybook/public/favicon.ico b/apps/mirinae-storybook/public/favicon.ico similarity index 100% rename from apps/storybook/public/favicon.ico rename to apps/mirinae-storybook/public/favicon.ico diff --git a/apps/storybook/public/images/SpaceONE_logoTypeA.svg b/apps/mirinae-storybook/public/images/SpaceONE_logoTypeA.svg similarity index 100% rename from apps/storybook/public/images/SpaceONE_logoTypeA.svg rename to apps/mirinae-storybook/public/images/SpaceONE_logoTypeA.svg diff --git a/apps/storybook/public/images/icons/icon-128x128.png b/apps/mirinae-storybook/public/images/icons/icon-128x128.png similarity index 100% rename from apps/storybook/public/images/icons/icon-128x128.png rename to apps/mirinae-storybook/public/images/icons/icon-128x128.png diff --git a/apps/storybook/public/images/icons/icon-144x144.png b/apps/mirinae-storybook/public/images/icons/icon-144x144.png similarity index 100% rename from apps/storybook/public/images/icons/icon-144x144.png rename to apps/mirinae-storybook/public/images/icons/icon-144x144.png diff --git a/apps/storybook/public/images/icons/icon-152x152.png b/apps/mirinae-storybook/public/images/icons/icon-152x152.png similarity index 100% rename from apps/storybook/public/images/icons/icon-152x152.png rename to apps/mirinae-storybook/public/images/icons/icon-152x152.png diff --git a/apps/storybook/public/images/icons/icon-192x192.png b/apps/mirinae-storybook/public/images/icons/icon-192x192.png similarity index 100% rename from apps/storybook/public/images/icons/icon-192x192.png rename to apps/mirinae-storybook/public/images/icons/icon-192x192.png diff --git a/apps/storybook/public/images/icons/icon-256x256.png b/apps/mirinae-storybook/public/images/icons/icon-256x256.png similarity index 100% rename from apps/storybook/public/images/icons/icon-256x256.png rename to apps/mirinae-storybook/public/images/icons/icon-256x256.png diff --git a/apps/storybook/public/images/icons/icon-512x512.png b/apps/mirinae-storybook/public/images/icons/icon-512x512.png similarity index 100% rename from apps/storybook/public/images/icons/icon-512x512.png rename to apps/mirinae-storybook/public/images/icons/icon-512x512.png diff --git a/apps/storybook/public/manifest.json b/apps/mirinae-storybook/public/manifest.json similarity index 100% rename from apps/storybook/public/manifest.json rename to apps/mirinae-storybook/public/manifest.json diff --git a/apps/storybook/tailwind.config.js b/apps/mirinae-storybook/tailwind.config.js similarity index 78% rename from apps/storybook/tailwind.config.js rename to apps/mirinae-storybook/tailwind.config.js index bd0032c88f..ef022275fe 100644 --- a/apps/storybook/tailwind.config.js +++ b/apps/mirinae-storybook/tailwind.config.js @@ -1,5 +1,5 @@ // eslint-disable-next-line @typescript-eslint/no-var-requires -const tailwindConfig = require('../../packages/mirinae/tailwind.config.cjs'); +const tailwindConfig = require('postcss-config-custom/tailwind.config.cjs'); module.exports = { content: [ diff --git a/apps/storybook/tsconfig.json b/apps/mirinae-storybook/tsconfig.json similarity index 100% rename from apps/storybook/tsconfig.json rename to apps/mirinae-storybook/tsconfig.json diff --git a/apps/storybook/vite.config.js b/apps/mirinae-storybook/vite.config.js similarity index 71% rename from apps/storybook/vite.config.js rename to apps/mirinae-storybook/vite.config.js index 87cad1edc4..b16af4ef78 100644 --- a/apps/storybook/vite.config.js +++ b/apps/mirinae-storybook/vite.config.js @@ -1,8 +1,10 @@ -import { defineConfig } from 'vite'; -import vue from '@vitejs/plugin-vue2'; -import commonjs from '@rollup/plugin-commonjs'; import path from 'path'; +import commonjs from '@rollup/plugin-commonjs'; +import vue from '@vitejs/plugin-vue2'; +import { defineConfig } from 'vite'; + + export default defineConfig({ plugins: [vue()], resolve: { @@ -12,9 +14,9 @@ export default defineConfig({ }, }, optimizeDeps: { - include: ['@/styles/colors.cjs', '@/styles/web-fonts.cjs', '@/styles/screens.cjs', '@/styles/variables.cjs', '@/styles/font-size.cjs', '@/index'], + include: ['@/styles/colors.cjs', 'mirinae-foundation/web-fonts.cjs', 'mirinae-foundation/screens.cjs', '@/styles/variables.cjs', '@/index'], }, rollupInputOptions: { - plugins: [commonjs()] - } -}); \ No newline at end of file + plugins: [commonjs()], + }, +}); diff --git a/apps/storybook/.storybook/main.ts b/packages/storybook-config-custom/index.js similarity index 56% rename from apps/storybook/.storybook/main.ts rename to packages/storybook-config-custom/index.js index 4877590e57..00e71c01be 100644 --- a/apps/storybook/.storybook/main.ts +++ b/packages/storybook-config-custom/index.js @@ -1,32 +1,24 @@ -import { join, dirname } from "path"; -import type { StorybookConfig } from "@storybook/vue-vite"; +import { dirname, join } from 'path'; function getAbsolutePath(value) { - return dirname(require.resolve(join(value, "package.json"))); + return dirname(require.resolve(join(value, 'package.json'))); } - -/** @type { import('@storybook/vue-vite').StorybookConfig } */ -const config: StorybookConfig = { - staticDirs: ['../public'], - stories: [ - '../../../packages/mirinae/src/**/*.mdx', - '../../../packages/mirinae/src/**/*.stories.@(js|jsx|ts|tsx)', - ], - addons: [ - getAbsolutePath("@storybook/addon-links"), - getAbsolutePath("@storybook/addon-essentials"), - getAbsolutePath("@storybook/addon-interactions"), - getAbsolutePath("@storybook/addon-designs"), - getAbsolutePath("@storybook/addon-storysource"), - getAbsolutePath("@storybook/addon-a11y"), - getAbsolutePath("@storybook/addon-mdx-gfm"), - ], - framework: { - name: getAbsolutePath("@storybook/vue-vite") as "@storybook/vue-vite", - options: {}, - }, - previewHead: (head) => { - return ` +export const mainConfig = { + staticDirs: ['../public'], + addons: [ + getAbsolutePath('@storybook/addon-links'), + getAbsolutePath('@storybook/addon-essentials'), + getAbsolutePath('@storybook/addon-interactions'), + getAbsolutePath('@storybook/addon-designs'), + getAbsolutePath('@storybook/addon-storysource'), + getAbsolutePath('@storybook/addon-a11y'), + getAbsolutePath('@storybook/addon-mdx-gfm'), + ], + framework: { + name: getAbsolutePath('@storybook/vue-vite'), + options: {}, + }, + previewHead: (head) => ` ${head} @@ -41,10 +33,8 @@ const config: StorybookConfig = { padding-bottom: 8px !important; } - ` - }, - previewBody: (body) => { - return ` + `, + previewBody: (body) => ` ${body} - ` - } + `, }; - -export default config; \ No newline at end of file diff --git a/apps/storybook/package.json b/packages/storybook-config-custom/package.json similarity index 74% rename from apps/storybook/package.json rename to packages/storybook-config-custom/package.json index 54365eee3f..b1fbf51e26 100644 --- a/apps/storybook/package.json +++ b/packages/storybook-config-custom/package.json @@ -1,31 +1,22 @@ { - "name": "storybook", + "name": "storybook-config-custom", "version": "1.0.0", - "description": "", + "private": true, + "type": "module", "main": "index.js", - "scripts": { - "dev": "storybook dev -p 6006", - "build": "storybook build" - }, - "keywords": [], - "author": "", - "license": "ISC", "devDependencies": { "@rollup/plugin-commonjs": "^26.0.1", "@storybook/addon-a11y": "^7.6.10", "@storybook/addon-designs": "^7.0.9", - "@storybook/addon-docs": "^7.6.10", "@storybook/addon-essentials": "^7.6.10", "@storybook/addon-interactions": "^7.6.10", "@storybook/addon-links": "^7.6.10", "@storybook/addon-mdx-gfm": "^7.6.10", "@storybook/addon-storysource": "^7.6.10", - "@storybook/blocks": "^7.6.10", - "@storybook/manager-api": "^7.6.10", - "@storybook/test": "^7.6.10", - "@storybook/theming": "^7.6.10", "@storybook/vue": "^7.6.10", "@storybook/vue-vite": "^7.6.10", + "@storybook/blocks": "^7.6.10", + "@storybook/manager-api": "^7.6.10", "@vitejs/plugin-vue2": "^2.3.1", "eslint-config-custom": "*", "postcss-config-custom": "*", diff --git a/turbo.json b/turbo.json index f1f08582d8..db226647b6 100644 --- a/turbo.json +++ b/turbo.json @@ -32,7 +32,7 @@ ], "cache": true }, - "storybook#build": { + "mirinae-storybook#build": { "outputs": ["./.storybook-static/**"], "inputs": [ "../../packages/mirinae/src/**", "../../packages/mirinae/postcss.config.js", "../../packages/mirinae/tailwind.config.js", "../../packages/mirinae/package.json", From 54e3cdab870acaabb429c802de0317b212d6e992 Mon Sep 17 00:00:00 2001 From: sulmo Date: Mon, 20 Jan 2025 18:53:13 +0900 Subject: [PATCH 05/15] feat(web-storybook): create storybook setup Signed-off-by: sulmo --- .dockerignore | 3 +- apps/web-storybook/.eslintrc.js | 52 + apps/web-storybook/.gitignore | 3 + .../.storybook/CloudforetTheme.js | 32 + apps/web-storybook/.storybook/main.ts | 18 + apps/web-storybook/.storybook/manager.js | 9 + apps/web-storybook/.storybook/preview.js | 104 + apps/web-storybook/package.json | 25 + apps/web-storybook/postcss.config.js | 19 + apps/web-storybook/public/favicon.ico | Bin 0 -> 13488 bytes .../public/images/SpaceONE_logoTypeA.svg | 10 + .../public/images/icons/icon-128x128.png | Bin 0 -> 16909 bytes .../public/images/icons/icon-144x144.png | Bin 0 -> 18669 bytes .../public/images/icons/icon-152x152.png | Bin 0 -> 18157 bytes .../public/images/icons/icon-192x192.png | Bin 0 -> 22011 bytes .../public/images/icons/icon-256x256.png | Bin 0 -> 27373 bytes .../public/images/icons/icon-512x512.png | Bin 0 -> 55471 bytes apps/web-storybook/public/manifest.json | 32 + apps/web-storybook/tailwind.config.js | 11 + apps/web-storybook/tsconfig.json | 22 + apps/web-storybook/vite.config.js | 25 + .../badge/auto-sync-state/AutoSyncState.mdx | 20 + .../auto-sync-state/AutoSyncState.stories.ts | 48 + .../{ => auto-sync-state}/AutoSyncState.vue | 0 .../badge/auto-sync-state/constant.ts | 12 + .../badge/auto-sync-state/story-helper.ts | 55 + .../components/badge/auto-sync-state/type.ts | 6 + .../common/components/marks/GNBNewIcon.vue | 39 - .../components/ServiceAccountAutoSync.vue | 2 +- .../pages/ServiceAccountPage.vue | 2 +- .../components/ServiceAccountAutoSync.vue | 2 +- .../pages/ServiceAccountPage.vue | 2 +- package-lock.json | 5986 +++++------------ turbo.json | 10 + 34 files changed, 2381 insertions(+), 4168 deletions(-) create mode 100755 apps/web-storybook/.eslintrc.js create mode 100755 apps/web-storybook/.gitignore create mode 100644 apps/web-storybook/.storybook/CloudforetTheme.js create mode 100644 apps/web-storybook/.storybook/main.ts create mode 100644 apps/web-storybook/.storybook/manager.js create mode 100644 apps/web-storybook/.storybook/preview.js create mode 100644 apps/web-storybook/package.json create mode 100644 apps/web-storybook/postcss.config.js create mode 100644 apps/web-storybook/public/favicon.ico create mode 100644 apps/web-storybook/public/images/SpaceONE_logoTypeA.svg create mode 100644 apps/web-storybook/public/images/icons/icon-128x128.png create mode 100644 apps/web-storybook/public/images/icons/icon-144x144.png create mode 100644 apps/web-storybook/public/images/icons/icon-152x152.png create mode 100644 apps/web-storybook/public/images/icons/icon-192x192.png create mode 100644 apps/web-storybook/public/images/icons/icon-256x256.png create mode 100644 apps/web-storybook/public/images/icons/icon-512x512.png create mode 100644 apps/web-storybook/public/manifest.json create mode 100644 apps/web-storybook/tailwind.config.js create mode 100644 apps/web-storybook/tsconfig.json create mode 100644 apps/web-storybook/vite.config.js create mode 100644 apps/web/src/common/components/badge/auto-sync-state/AutoSyncState.mdx create mode 100644 apps/web/src/common/components/badge/auto-sync-state/AutoSyncState.stories.ts rename apps/web/src/common/components/badge/{ => auto-sync-state}/AutoSyncState.vue (100%) create mode 100644 apps/web/src/common/components/badge/auto-sync-state/constant.ts create mode 100644 apps/web/src/common/components/badge/auto-sync-state/story-helper.ts create mode 100644 apps/web/src/common/components/badge/auto-sync-state/type.ts delete mode 100644 apps/web/src/common/components/marks/GNBNewIcon.vue diff --git a/.dockerignore b/.dockerignore index 89e52b0cea..4d2a1b0f17 100644 --- a/.dockerignore +++ b/.dockerignore @@ -19,6 +19,7 @@ deploy out **/dist apps/mirinae-storybook/.out +apps/web-storybook/.out packages/mirinae/css packages/mirinae/types @@ -55,4 +56,4 @@ VERSION .idea *.swp *.bak -**/.DS_Store \ No newline at end of file +**/.DS_Store diff --git a/apps/web-storybook/.eslintrc.js b/apps/web-storybook/.eslintrc.js new file mode 100755 index 0000000000..d6a43deefb --- /dev/null +++ b/apps/web-storybook/.eslintrc.js @@ -0,0 +1,52 @@ +module.exports = { + root: false, + extends: ['custom'], + rules: { + // eslint-plugin-import rules + 'import/order': [ + 'error', + { + groups: ['builtin', 'external', 'internal', 'index'], + pathGroups: [ + { + pattern: 'vue', + group: 'builtin', + }, + { + pattern: '@vue/test-utils', + group: 'builtin', + }, + { + pattern: 'vue/types/**', + group: 'builtin', + }, + { + pattern: '@/translations/**', + group: 'internal', + position: 'after', + }, + { + pattern: '@/styles/**', + group: 'internal', + position: 'after', + }, + ], + pathGroupsExcludedImportTypes: ['@vue/test-utils'], + alphabetize: { + order: 'asc', + caseInsensitive: true, + }, + 'newlines-between': 'always', + }, + ], + }, + ignorePatterns: ['**/node_modules/**'], + settings: { + 'import/parsers': { + '@typescript-eslint/parser': ['.ts'], + }, + 'import/resolver': { + typescript: {}, + }, + }, +}; diff --git a/apps/web-storybook/.gitignore b/apps/web-storybook/.gitignore new file mode 100755 index 0000000000..7a7f1e3c25 --- /dev/null +++ b/apps/web-storybook/.gitignore @@ -0,0 +1,3 @@ +# Transpiled code +.out +storybook-static diff --git a/apps/web-storybook/.storybook/CloudforetTheme.js b/apps/web-storybook/.storybook/CloudforetTheme.js new file mode 100644 index 0000000000..8928636775 --- /dev/null +++ b/apps/web-storybook/.storybook/CloudforetTheme.js @@ -0,0 +1,32 @@ +import { create } from '@storybook/theming/create'; + +export default create({ + base: 'light', + colorPrimary: '#6638B6', + colorSecondary: 'rgba(102, 56, 182, 0.9)', + + // UI + appBg: 'white', + appContentBg: 'white', + appBorderColor: 'silver', + appBorderRadius: 4, + + // Text colors + textColor: 'black', + textInverseColor: 'rgba(255,255,255,0.9)', + + // Toolbar default and active colors + barTextColor: 'silver', + barSelectedColor: '#6638B6', + barBg: 'white', + + // Form colors + inputBg: 'white', + inputBorder: 'silver', + inputTextColor: 'black', + inputBorderRadius: 4, + + brandTitle: 'Console Design System', + brandUrl: 'https://github.com/cloudforet-io/mirinae', + brandImage: './images/SpaceONE_logoTypeA.svg', +}); diff --git a/apps/web-storybook/.storybook/main.ts b/apps/web-storybook/.storybook/main.ts new file mode 100644 index 0000000000..f062a60ff4 --- /dev/null +++ b/apps/web-storybook/.storybook/main.ts @@ -0,0 +1,18 @@ +import { join, dirname } from "path"; +import type { StorybookConfig } from "@storybook/vue-vite"; +import { mainConfig } from "storybook-config-custom"; + +function getAbsolutePath(value) { + return dirname(require.resolve(join(value, "package.json"))); +} + +/** @type { import('@storybook/vue-vite').StorybookConfig } */ +const config: StorybookConfig = { + ...mainConfig, + stories: [ + '../../web/src/common/**/*.mdx', + '../../web/src/common/**/*.stories.@(js|jsx|ts|tsx)', + ], +}; + +export default config; diff --git a/apps/web-storybook/.storybook/manager.js b/apps/web-storybook/.storybook/manager.js new file mode 100644 index 0000000000..8a7acfbc3e --- /dev/null +++ b/apps/web-storybook/.storybook/manager.js @@ -0,0 +1,9 @@ +import { addons } from '@storybook/manager-api'; + +import SpaceOneTheme from './CloudforetTheme'; + +// window.STORYBOOK_GA_ID = 'UA-159327743-4'; + +addons.setConfig({ + theme: SpaceOneTheme +}); \ No newline at end of file diff --git a/apps/web-storybook/.storybook/preview.js b/apps/web-storybook/.storybook/preview.js new file mode 100644 index 0000000000..44303d65af --- /dev/null +++ b/apps/web-storybook/.storybook/preview.js @@ -0,0 +1,104 @@ +import Vue from 'vue'; + + +import { i18n } from '@/translations'; +import VTooltip from 'v-tooltip'; +import velocity from 'velocity-animate'; +import Fragment from 'vue-fragment'; +import VueI18n from 'vue-i18n'; +import Notifications from 'vue-notification'; +import VueRouter from 'vue-router'; +import webFontLoader from 'webfontloader'; + +import screens from 'mirinae-foundation/screens.cjs'; + +import { fontUrls, webFonts } from 'mirinae-foundation/web-fonts.cjs'; + +import SpaceOneTheme from './CloudforetTheme'; +import SpaceDesignSystem from '@cloudforet/mirinae'; + +import '@/styles/style.pcss'; +import '@cloudforet/mirinae/css/light-style.css'; +import '@cloudforet/mirinae/dist/style.css'; + +Vue.use(VueRouter); +Vue.use(VueI18n); +Vue.use(Notifications, { velocity }); + +Vue.use(Fragment.Plugin); +Vue.use(VTooltip, { defaultClass: 'p-tooltip', defaultBoundariesElement: document.body }); +Vue.use(SpaceDesignSystem, { vueI18n: i18n }); + +Vue.prototype.toJSON = function () { + return this; +}; + +webFontLoader.load({ + google: { + families: webFonts, + urls: fontUrls, + }, +}); + +const viewports = {}; +Object.keys(screens).forEach((k) => { + const v = screens[k]; + viewports[k] = { + name: k, + styles: { + width: v.min || v.max, + height: '100%', + }, + }; +}); + +const preview = { + parameters : { + controls: { expanded: true }, + layout: 'centered', + docs: { + extractComponentDescription: (component, { notes }) => { + if (notes) { + return typeof notes === 'string' ? notes : notes.markdown || notes.text; + } + return null; + }, + theme: SpaceOneTheme, + }, + viewport: { + viewports, + }, + options: { + storySort: (a, b) => a.title === b.title ? 0 : a.id.localeCompare(b.id, undefined, { numeric: true }), + }, + actions: { argTypesRegex: '^on.*' }, + }, + decorators: [ + (story, { globals: { locale } }) => { + i18n.locale = locale; + return { + components: { story }, + i18n, + router: new VueRouter(), + template: '', + }; + }, + ], + globalTypes: { + locale: { + name: 'locale', + description: 'Internationalization locale', + defaultValue: 'en', + toolbar: { + icon: 'globe', + items: [ + { value: 'en', right: 'πŸ‡ΊπŸ‡Έ', title: 'English' }, + { value: 'ko', right: 'πŸ‡°πŸ‡·', title: 'ν•œκ΅­μ–΄' }, + { value: 'jp', right: 'πŸ‡―πŸ‡΅', title: 'ζ—₯本θͺž' }, + ], + }, + }, + } +}; + +export default preview; diff --git a/apps/web-storybook/package.json b/apps/web-storybook/package.json new file mode 100644 index 0000000000..13ccbcbaef --- /dev/null +++ b/apps/web-storybook/package.json @@ -0,0 +1,25 @@ +{ + "name": "web-storybook", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "dev": "storybook dev -p 6006", + "build": "storybook build" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "eslint-config-custom": "*", + "postcss-config-custom": "*", + "mirinae-foundation": "*", + "tsconfig": "*", + "storybook-config-custom": "*", + "@cloudforet/core-lib": "*", + "@cloudforet/language-pack": "*", + "@cloudforet/mirinae": "*", + "@cloudforet/utils": "*", + "@storybook/theming": "^7.6.10" + } +} diff --git a/apps/web-storybook/postcss.config.js b/apps/web-storybook/postcss.config.js new file mode 100644 index 0000000000..70866dcd7c --- /dev/null +++ b/apps/web-storybook/postcss.config.js @@ -0,0 +1,19 @@ +/* eslint-disable global-require, @typescript-eslint/no-var-requires */ +const path = require('path'); + +const getPostcssConfig = require('postcss-config-custom'); + +module.exports = getPostcssConfig({ + tailwindcssOptions: { + config: path.resolve(__dirname, 'tailwind.config.js'), + }, + postcssEasyImportOptions: { + path: ['../../packages/mirinae/src', 'node_modules'], + }, + postcssSimpleVarsOptions: { + variables() { + return require('../../packages/mirinae/src/styles/variables.cjs'); + }, + }, + disablePostcssImport: true, +}); diff --git a/apps/web-storybook/public/favicon.ico b/apps/web-storybook/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..828616b59b3113ae8f91d89fa2a805221d7b7f4b GIT binary patch literal 13488 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 eo)q3b^8W$HhQgePVVVE{0000 + + + + + + + + + diff --git a/apps/web-storybook/public/images/icons/icon-128x128.png b/apps/web-storybook/public/images/icons/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..f257cab3d3803e05ff056e08e3a418a33f37b8df GIT binary patch literal 16909 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 VPvlF`-#=`Skx&q?68#eR{{X+j*=7I$ literal 0 HcmV?d00001 diff --git a/apps/web-storybook/public/images/icons/icon-144x144.png b/apps/web-storybook/public/images/icons/icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..b4986fa79fbbc22a94b14b3f486cdc07f84da8d2 GIT binary patch literal 18669 zcmbTd1yo(ZvL=kX1$TEnxVr~;mxCN!f(Lg3K|_LjaDuzLy99R#?(Y02_uhB^H#2W$ z-Wt|Ai!IgF)z#J2RbSVRR8^KmMIuCkfPg@imy=Ql|BwIsLx6*TfQ%QPVFlkHI?L&~ zLO?Jp{QW@|2q%?5K)~MHXzIG@Dk%z>J2|idEu73OS-l*b!PF2CLZV*IKyy1wH*zye zD;q~)%JbGvN^%|A{0y!@=} zJX`=y9%gb506RY$fRBxxlLf#o0N@ee<|Y5vA0@aq7YmSpx|Gbn`U2kxQ(C*ZISa6{ zd3t)XdUCQlxmdBW^YepwaIkT3uz)F8Tt7Ry0liopU8(+qgOsJKxr>dnn~jqr`CpDe zGbeX9VM?&1{~UsY^S{|Ty8cT|V1==H0iD^{Spk2C^bbM{^MBJhySv!`qjL*$HcNX; z2TMmcS1>L6ziFMVo!p#Ut)2citpEM`f9L?LS|z1__wirK;^6S_E?nKDJ;1~GmqPwa zYFEwA&X#QImab0jF6Nff9$+!4{*K03K+?q$=;q|2>EvYp9}}heA0m@;fJaSEuLLx= zar`?7hX2&WQVQs1DNM-$-~g}y_*po(HQ6}@xVZ&5`IrFw0sz22NtK)|Y(Ss?S5hu8 zg#bJM|3C^h8VjHs@c&9|VJ-l2a&Z8Hhiu~jw6bJ#cC?}-|FJAlWWg^S1BjK$2H56A+t0Pu0}@mN@bxIljm{~xv_AZOzW zp5@Q~T1pz0pZ;}aZ$thM^AP}=|6LZsl;(f!!P0{AUyp76D}DTTdj3~?Pisps)Bl5& z{IhpgCy<*b(8W^R3aq>Th8?o~@5FZndi-C6|8Gs^Kc)I#h5w)I_Ww=zf2qdY8t7#%ZQ!hUV|3!Or{jL(UbZ(V81ZB~2K$4^kg+`q#})2+hr+A|q)lr>zya zA|t2qxoI1U@lRk?tAoguq5^Lkn5){)Z+s@72U7_^9v}~^hCtd!KM`ck`z)WcW~(fp z5e@%1m!14ax8T+wn=a(8#9^e=Z^U>I1`Bi7Lv%%)M~gz*Z2=d%K9w&gku_VX5I#YW z(|GiV`qXDWmW;4|B=YGGgXzh&4o1*{-fc+qC+L{EQS@&hV1G~^%J!J zy;-b{PMR5m)Yfq}dz2zU6Ov)*dB527)hVrweCDwSBVos2el8d4{(W~$njMdL@%MnI zvaXmchFW$+^l*X;_S)Ff$2eyC1B?K#{kb8lY@Ij+i)#gRKiICewSB7SSf=V_ZVnd~ zh%x652mruPZJzG>P6kP&*$fv{mQ;nQr13B+TO`|oPMVHfMYm^!1@!^*83FWXoThS7 z`Bnt|oY#cVm38hCiTd;Nt4K)ELdNemFPPa=Hh`P2WBxY_97rL^Rci!s^O!jELY(T8 zHRv0%gvgCD=xFGU=nir{X&?#=DeP+3t(Znlu)M5Xt@O{Tu?dGbrJnQo$3OkqhQ;)Z zklCcya>M%6p%_BVFJrO#!=5UJUn;)hl5_epgG`Bpcv@#aLXbY6pv<#Yj*x%s>ct@` zUR>`vRZ)z^ep{d0{Rz?a@e{Xq7eu`1Moi)!6-r+s6WXxKO)-AV70WoYbrbcTu5OZM z&R&rU>Biv>#P^t?=+@yRty>6w#&}UTL&x2|aSdGBayi6T?FB_II+v5#O&o|@+vlF} zgopZ#nwG4=f!S9>mH^YMH(Y||y`k5YY!xm%L<-ZsP$B=9#XeFyIea!pVfetrxqW<-^`fwuKV!aE!w^<1@;gZS~aY9t_a}}Bh z1-d#BCe@9hgM0%USrBqUiKw{}d(0IuJI{Huo8k}D+L=_b!$jExP}8Y87Hsc)9{ORk zbLi(vy71%6PNh;(IeAY95FoYwIIKQj4bPF>kfQ`)1e0Yvi72eE;^}ncRAyd{D?xl_ zyhtf!d^wnw{{-7uQDN0}@vDvy8sM!i;&jp(-@`#ydBUH)#ETM>;d6PPj%m#4)n>Sp z4pAw#c@JC7Z)VcsQ=yBg7sosA_4)JQX9)b3?r}O=6CMYBwNdWDwva;Ghj#Ik3dvg} zNmZk18DI(L9$}}BtQL;uCK9k~Etxg8%xf$%EMZdGlGP(Z8wL-}OW4M|r%IQL3yVDl zQk9#gf*qp%`OkzbY$@cje(47^UC#x-38h3lRn;`Z4^spU6%Jnn8}1TI zoind{uiLlpj|@fG{pb9*uk}(Kh6fYfsytme$r_AtUB|$)w%W`iw3LO@-k{E^<5s=h4lNY$E(7IH zVv6YO^2|}fEII&n3`xw&xw7z^-RU0olamUiZ+%`85$(9u$*x4SWTz)oyNWleZCp^7 zcGs$&xG4dECUc~9CI@iRMbOpUMcx&%S~UqfA3yK7g&}Z$uR8{1mMsRUrG|kJ+I`ri zvTT%yK9@kL?l2`9WG5C|$BpBth#O}2=0v=s%$f(DdebS>jd>8RNN4)Od&7_JpRT)i z2)2^$(NH{|9zQkxIUr3v(~8S(E?x#))qUYg5L&C=?NCH%*(`I;uygQoVanIUs{xTlKw)j<%bSMKf9>0^UEn(y`eyk7@td z=D_Rpt=LK3c`j;;FiC?ji)M!eBJ7=&j?v zd5OD)6f-+12!uSZihnD976^w5kpa2>UTjRnO>I1Wsfs%P;T*yWlj89fn2)#Se>a%9 zLLv}2ZeynXHYz`Rkm!Kue}r|1?j zAS0)TqE(#|1^-9p-8i?>)(m)j^`3G4Q|P~6Z-gTwqE_An*o8j4Ps6CTcd`Jx%LY4R zerK&CNzY<~H?sKH&4*OK$Mv~;ga_0U0$Q{~ezfi%mg2LT!Qr2xkX$BzAdog@X`2UL zpi#oHpt_K9yEXaU$s$(HN)m;C>F4}VBe`N7e^;%igJ$+VF^@)sjneZpSxUKqeq!H! zCQ!G$R`p9@+A;y2J;?BqCKxn76#`dUcrmtI3z>4gwv}Ps~R zsD|^yzn9b8d)z{~?NCz-RuZp9Ja#O0;aEK2*A$&WtrR)TYxu`<`R8_nnrSMoR|Fh6 z+dA~6234&vf>=CAuboQ=>>o5|nVRI7DPo?#oWzp#m+=(EVt}ffj)>bsU;KU&mbLHR zRfj-@4F0*uWI#4&?mldU0~vCVpIx-;_=k_%Ks{6=5z~ckJ|m7pte~cI&l1M%+y(BXE5clSX;m_fm8{PB14SFuAwQ*i(s0F zadFCisSrjdnvGKwpa}mr0yXX}_%zrlEMm4F-PSOTN{DLenYz?jn|kN<&^yal)yO}t z^`&QTyxw=amGW%tS4Q%u;mb*qr>}PLzaYDzdCTQ=UsvE+fe)dEit@zdlt1X5omH6b zJ9&Qe$LI`XcDg^o-w=^j*A1fBM&4P{K`4|fV|jLZVK#>~-0edyR#ybAOz6Ut26N6v z15osdLT-o>h9!}eQRA3CHJQyB@NtgY5M6+vopR}S@m3zk?KH5ovsjfUzqLkN#2glj zLl9!XSUcQYC&#JKRW7a#FW#>}Rx$&eRlD#&}ifClvjjtG~pdYyZLHu&ml z?I0fB=I$}*fti$DWRVMG1#39~%Jby@icij-OlJcS(1R9g9Ms62bVCzt$0ZdPsvKRB zRI|~f(T14j`Nt)2VVC&Mu2GienjP)Gb1J$bHU0h3`LGzWjrz4W$+|iNL)M)12M=P< zW&%4YZ{gW7pcFx{(rQy7!Sf)|tRx7?>>yGufYigOhN_Y&Pnqs1t>F^xFAp4PHSjtK z<=eHy3UlcC(}gGe2r$ZKGyepA`T|0g+#IU`??F`HaEvZfXCNazob%{m&IkiD*P}BX z{k=V6fow%)yqiac#6S#SYIdyqYeB;bITk=D6MTST-DF6Gkiaa`c{+tw&aXQLW$|Zjh3~BQ zZv&*6_(~BSc77%lhZw`KhD?3?tin`z^3mSriwuB1#qkwSR*A6>u&czP9aAX4CK4yE zoKS9{Pb>{tt7QI+cN;BS5-*r7LO~0W&!qd}%|H3(K~<>RuY8j1L4tiq+&UYY$M|yi zN?^0*2D&p0j~Q|I__CE!SGiu(66?ci63sLi z&L~(yFa$Lf%g_!*4t@AD2&BDO-x2h=bwc4;hAu6;ccl~y<)-3>I=I)eu(U14%Kw!H zTEunyG^EgH!wfWy`qy&>KvEa@O^`O<2Uojx27Y z8rOljDbYnivE2I06m4Auyw@uXvmC8!rXw-)pz1Wx z0QVtQd7T&s71?OA^k{3zf@^RxAf~pv`Fj6ukbc#U^xQo4llhTR ztwl2-yml0x?JV*h<-^Rfd(V>Jl)KTU1M>EDAx|yRhZSU6Q)uU36fmH#Bi(D|Hv|Vq zb$Ro&WRGa@GT#rGHy8L1S2-%4q-~d9*O3ZTROaHiMxlnm2-o|IvG(In7W!tf$Q1CuUj@_EaKcPg<5SHCQXNhk zq}!PQsai*+ZDUH?yQDFA{+$Wv`)8;=Y*2>3D76R!AP#G^HTQOVlRfClsDd@vNW>(| z(KT8>Nvq{^g7b{TmkzY3XF)LgSh;!R8Dj49ZsFFp2Jh)t+x0k_|kM@25by7L*)zC?gp_7j3o*h%Wh zQV?epKz-Gp!3f8q%^%6Qi9gvUV<2!89^Kn18xw*tlf~oa%c@c-+B$m`_wLI=BvRIM z{<|0Y4YawkbsdQfnhpE{ztL^PGRD*iVMn(t6}U3-fYGU=a(H`!YEAp2yv$B-%9$Yv zd%ML^P+rIKIM~urNYi^&-gqK&cLev)Y~#S$EM!&#M2-|2Yc_1f*+GjNN`z~m970(? z$n3h*_RRN5s?cOkw0uBD5*;bcw%tn~+G|a~*b_rG99E}+z^afyR_6Xj(dtjj(03zSaa~xH*c-kS0eAXS6*11bgj* z^OOD8ea{*n4Xh<;9;A=NGnMrIMAtMf%`?@Q46rvz5vfow2!}8!O@XC3r9kP-Eg4H?-Rt8+%1dE4vQHd0?Fu_`o>LmEUYWVr^6PgF z7P~$=Td?a8Z*afF2KMe4TMDU_QT>8MsTO>n<3}GtGk?;%C`P@|m^iEiDkQMF8}E7- zuK0f;$>pWCCY(Xc<9o`%;0PbJ&}MfFn*2GtyxY6~;Q&&2Kp?LeiMBRssdUp>-`OIS zJ$2V~ed3OrbV(259`b!*7JW9+dT{j&}GR~wP1y6qzlReSPMESa$ zDh*X=xFSJy^VCJd#z z=;%-OqhqxZ&4nn`)7_?j=rN<)AV#{y7M2jN&W?OvD)8Oy*sk(G6Uz=_HC_~o*l71d zYUSn0EB#ctB0!z)u`JgZLQCN;nXsgSKec?YQ-6irbQL>oWFr{|oKoX&Gw@``D#TOM zTAyF1zGd2cbvsrp3aNk)K@VV0*DAelrzxaE_A{x-Mn~X&L%7%hyNi#8 zD_AY}z2UMVA|$N};Uh9O_*Mx$BdxV)QDe#45d$OW=v5PPCVKDgUAB&NZa@zqd5re@#=XI53Nt(_FE7DyP1c)sFGn>rb=;(SShps4lNRROPB)fkh56cT(h6MgU_1rC6_q{v!Yi>>vkkM)X`kDX;bk2O;_15J#g5F}!qiul5-8)1q+llq9fbngKYGOgrGTp=nt z?3h>P=lhw@+s`0gWi8wVJtWn-z-H5`h=QNmzZ%i8t+}sovc9-j?oIZ5<95WfHeI{y zw2~ZoM$V+383}*^=fPLbnl9fpFS=G{KQ+Rd#op#SMdX2ZaZ`?x=(Lo{a?bUAt9_ci z<&Ur-gL|9z1iI!WGXB`FG%X?igm0T;bpRI^@nuC2mNG-3t%^Y-$)I2ul)qEF$SbEa z?~!6{$JC$Fx0^SV(z^y3!2n@wKarM@GuX!tr?KHUPzq7B zw5%O3IL!ydXqhHGN@BA`K10>R3r$CmM$eHwnH2V6Oc|c<%!|?#>YN}r3021!5fT0L zdj+E^utF@5v7+^%oGt>MA`WpH6Kp?g+PKrofp8R1NzU*_C|3)`rOuqUFW-ypDT^6B zuUGwus#=*N+FdDCyJiV34yKz|pHK6VclweUk-)i+b>%D}WKGBw;%Sv4&yQ6~qBMr~ zqPDw~MzE`#s&&=I%L$w;uXU9Fp%{`3$NKVykapBIJyM@8<}qcnMRm4EZe_^N_jZJK zapJ_IDnMO3+h;Evj!|SqAE``?4IA~*Xw}!u8#jArl0Mf=R)On&;}5x@weo|UktGpb z)+}3jl*!wU4*liFE90O%dipd)AvKLH@!uAjK%WEg5D{pOhbp53P1!14?q58pw^J*L z@YakosIXx5*`WaF<@3Hvd7Zt*+z^}yFn_|Qt^N4eKnu=N{^Z_UT_me0o8RnGHdK_# z%Mn>u+q^u&+mvJzxSD;ScbPbSh*wBTlF4pG;4JM84(#4Uf zyl&+L9m5;3^_h`mxUU+*WF1|G*quC&J)z zRes7JJ|HD9gb}=&H^)$q+u4DhD1G{2@-a4tJ_r8bMvF(Uu8CV0kYiq5#sD!j=tR&%lN|ehYbLW#$^mFFQiJHhc+c-!%tiEFzsb z+9pO)+^^xlKEO#cT8uaxgY*!D*BXZhc|t(!a9#}FjKMJ%#8YN( zWH1Ro9x)@4>DsG0&swqVxxjkNu@N_kmG34;yFvI!8(_f0w5`13i0HgR@U==;3u?Vj zA0|=$&t?Vo=cFAUIVpFHIv%g>kJJ(diRg*^#?)wM4m;H9Zcs#-suKBD)=PIS)}(rHx}r%Cu}*-rj(y!>hN@dkYZqeS~R zHsgJfc0w-lcaNX7c|%>_b7kqYOSApf;-&lrOQ`axj|J&NR?P(Y!?Z_aEVgf{&oktF zc1obI@(O3ZF5zAq;(S1y;rdZ39C=M$7cmY*OAP2E$5&j3)bd$b)&RPreiT~pmjyt` zf^5^Km;KJ}^ygGGC4wx%DXeWij$a*)vHyfOyA_cTJIp~j>tL=f-E#8$6-G)Oq(aa_ z&dJODX9JJybnpkx4(mg~$1k5hVkY1>VNny?$BDdVdilw$+R+APn#^Bs#*9)8>L0xt zay@W|$Bgn*E@NctSUs?purJ#i{SGYbZ>xk?l3PfMlmJ8TbY&uolXKUCXz?1@u<2To zkwE?L&Y;w#hKj7E{_EY7ZBBZkq)1Uy;tz4)l*H;`x-e+ zvTa1zIP<=SsWanN#v-bqW~HlT1aW$F`;WhGk@CZPzJKem-EtK?6y)N3itxp>fPX}= zT)gl>0b?yAjRRIP)^W8JBt1cyEH*`T0vXnJcbv~Ha|q`fJ|4WKgtd*n$Y>0w0jTQ1 zND4+muIDY^8Cev~?*p20=~Xqhwyv^0vck$+@?z!-#p+_#(Yd;E(V{HqHL$(z!`2wu z2|eGBsnd?Vg(*uERJFiq3jss5@#~=v69GFr$hm_>UF9GEJ-3=31Ay;p2$|hhQ#2a| zA2(iD(4DM(atI6xEcIg%dYCB5#N&oxS{DqQB&lut%=kj_G+Y72AkNb|u%^STRKlWC zA@H@7RIz0it7?%u3cg7_>ci)wtXuG=M%FHCD645oD-a;qJ1?!@f~4f zb)9jt*7oV_q=J*~O46!-;qESM7Dh3;m>B}(e zYJie$<+9x$yedBj$wuxkM$&u>1D}d+w-yikGm|Qp_d&h;^{4KppI}}i{jW;4(6e|l z>&bL#*kB1OGAN1Sm_;(z(g~-~YN^8x*=w%sUoO~6!Xk_UPFie77%fSk*`(Dv}yxq^S zzeVvQMofl&U?Dp{7J)3H0$B!}K3eu}$Q|xM$Bk^8PvZD?G(n~Rycdv1ke6$8cM!HR zusntAo!ecXIevO1;O*@rqetVk)0eMf zLPXwO5NWhOi*9pFCzEJHF$~>~)^{u)^dB z4=|9~u^U8vNx-eXr2;VXFRYd#i)}5jM6o`}h_g?d?(jdY%GIg4%_8LJj+$`~IkA9h z)}_~%>b$i*jXY1E8sV%Rkf!Djz`4M{9>Cl)b;hMoE)luOFhcq zC`ZVeJ{x_;>vbW>G<1G!s*AY;blUE!(5^_mKub?v_@-fv&aW(`d@dtURtS3dD&d)e z_e7Bl^&vC3lo3DN^tx2Q|LK8xqQ%2GkNlmqzXCPpWkWi9`xcIYAfDpY$IR)`XY;ON zegkWl_Fbm19kQp7mNDG1%2AJ-Zt`pp^`3M*{*y4T4EOIRuj3LDq1WTvUED=_l5g?` z3J~1$`~|oK;_)r;T2MFG&!eWM?5da|iGP`hLQ-<~ zKSHbffP!?Q%(?W4d-W_ZJk((3N{`0T#^%7SF8P|GeY+KR zcm~m1;ZrSXYQt>Qn2ra%p3jivI>NL=STbBxp4^#~bfhyK95kFaAXX16-}V7=R|@zu zSpeQU8+I~Ik&>U+t@2H-ebjzam;6V9fo!RSs1#$pHbewV#f#hpJtcfM;w^-}hE}wX7eqxwe8Et_F4CNZw&l7dwC@>&NTafW9foJ3=r`pN3+?Jf zE@lrLtG_@NY=lPd5x~4UeQFG8OU_$b>+%^~^#t81_@#ARMIjMgMFFF8u7RQL;DC7<@A-_eu-VC1Gqp;Uv(*O@-A9G8H?c?x8Y+UqlfK zqW*A}5h?eIV1$>iqL=ADC^}7j_#PXQ9Tvnql}d17QBYp+yHx_zJ+6FgF}&z zHzd0~Y2?1Q$AL-SqR*ZURcEt|BH1S0gI;D!?e$8d2P1?BoJF~UbQNh-{|qZQ*SuK2Zl&Ltk#da86tQIGN|c$Z9R1R^JGq1)6yuAy7E!YFfmj)m zgMxsh6P~)x6M>?=qnsxu?bQ+O#1VM0NX*)136nT+vI2(md0~I}ta!cm8@0XOpU#oq z08A}-2>3z1jv=9NPm=WT{^4^>B)G(Akc3egtyltQa{Dk#RN#URAqR2V@uN{1QNrQP zYW`_r!uKCwY;xXLb65f00d$O4zl*&*#86{?AOXikdzJ+;GvY?nF4TWp2r&-%_VGI` zJqkq+0R=V~7A0QY*$d@VXxcmb#E^LU+Guv07b4`o;O*gHpW|jt8;imzo*k4RwD90! zQIV{KIO&1aP9c^I9hX2}7LH-+nR4+t*xqDAY#M@YqxsxgSvhh4C?MYJFwW$%a>D@z z5?a=s$@1dRA{G+BfV<5xGoHOcIEe~e^X9$1E}VQeSkbh`eK%O@Q4HvZFqp4kw5e?`(sC%%Y#BDP*L-s*=Pzre0N4w9KDvL5PP zvuBf=F4BfpC^u0KJwxgUA6+YRPg`&#k<`{17isk!3{DTClbvaUGT(Et_-e<5+77sq z=8PiOEJ2SEIM$`X{aJvaEhOr=KK`|4E1jY$;Ly$2PvU)`uleY@wRzt(CP}&~_m%t2 zj@P`%)~u?wuJwh^AYcn(D>LIx6C_Uk(Hj;0;zq7;2QpNtuj6Pv%8g($q%}vbHK%bP zTSyM0XFC{~wZr@b^_@W}kFUWR4E!jcwkuyOk?-G38T^oqu(A2A?a-z)_j@hW@kJ=& zG*}NN<@ax?Dpig|{NHVK@04Nh{f{|aqU?9ER}!cHc*P6u*KtS`P>J!Fl2*fsipku= z`oXn!*zS&G$843F#71_uBv<(vL3g%oVnIP>=J_k5NHS7s!9t0Pca?!PTvWg=1}q8L z0o?#!<|v;~NBdGOyR(22kiU4apn^7v%nt$)F3A{>Xtksvc#7`oN4$Tay@-T7S3E}J zoS#`;EUrrNSBY07`AZTGb86t^{EUw(NfE1eW;XbEJmZ+UKt}e`5qchC<@MN9#%Of3rYhqkfJCN;9yu{Lym2Y4C}_O1nPK3dz>a#BFu#5{uD668s86QckrQ35 zf#k!&Yu!@3biS80il@;≻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 P00000NkvXXu0mjfM&1q7 literal 0 HcmV?d00001 diff --git a/apps/web-storybook/public/images/icons/icon-152x152.png b/apps/web-storybook/public/images/icons/icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..db94c67316a758695ff219358b01baffcd2f55be GIT binary patch literal 18157 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 z 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 Hu0mjf0zYaW literal 0 HcmV?d00001 diff --git a/apps/web-storybook/public/images/icons/icon-192x192.png b/apps/web-storybook/public/images/icons/icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..bea361e900ba2767464caba84d6582769446147b GIT binary patch literal 22011 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 wW_#COJhf^iLSXxXdTJCMs>d$Ix74>tM}Ja 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 literal 0 HcmV?d00001 diff --git a/apps/web-storybook/public/images/icons/icon-512x512.png b/apps/web-storybook/public/images/icons/icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..44dafef0a86ad66fe9bcbfe044b9ff8688a7202d GIT binary patch literal 55471 zcmbTd1yEfY47D>7MESx+h#&Q40AZ{znK12xJ*)@y`$tP~b->2zWRM2*_an9b51(1P5tt zX9x&JxxfFAMFJ^h5D>8UR%%)G~2`dLTDHjhD zE0BYQ9mq(^#=^?O%)-sg$_`**yI4F&B@f9_p`Xrso0B28o7b6dVy)(tXdk{BsHgU3YaIpf}lm6|| z$Qb16B0vt7^q)hpbNElU_RjyBCh&wYdl)$|vof*#9nwDtO-=qo=iusO`w!-(Cd_8G zW_D)wF3w8=` z%Kq;l=>AI+GjSsqGXZio7B&_D3lD&eQ;n6Kmy?s1otuG$hnI!rpQH*PQ!8`N|CW@S zmzDj0BLypssgaA(|0l7j39mWG$<7EoWGg!(3o~X1dkb>X|4byW7|0gn1ZE7Dj{U#B zmk|?Fb^@7O*@8bff0hy@m5~qwvho0d05&Gpe~7D~z$;_#>|$hZVkRRlKn|WBCMzpb zUT$t4V=glmV}KF2F*|^R%h()XY;0-_02;F!8F6s}**Lk4{@q?2Wa9c)3I4YKr#+a0 zOu&8oKjLw*vzoJ*n;QdoxQ)yKT&5gA0FOBjE5O{$+>D3agu~pF<3G|UIaz^C(#ZC| z_WD;UQ*e()>@23-COkj@*n-Re9L6l%0Ap58R)CR_89NJDP#!LJ?!Suv4_)GwwsHoq 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 IM6N<$f~WinLjV8( literal 0 HcmV?d00001 diff --git a/apps/web-storybook/public/manifest.json b/apps/web-storybook/public/manifest.json new file mode 100644 index 0000000000..ca0c8fa2b9 --- /dev/null +++ b/apps/web-storybook/public/manifest.json @@ -0,0 +1,32 @@ +{ + "name": "SpaceONE Design System", + "short_name": "SpaceONE DS", + "icons": [{ + "src": "/images/icons/icon-128x128.png", + "sizes": "128x128", + "type": "image/png" + }, { + "src": "/images/icons/icon-144x144.png", + "sizes": "144x144", + "type": "image/png" + }, { + "src": "/images/icons/icon-152x152.png", + "sizes": "152x152", + "type": "image/png" + }, { + "src": "/images/icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, { + "src": "/images/icons/icon-256x256.png", + "sizes": "256x256", + "type": "image/png" + }, { + "src": "/images/icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + }], "start_url": ".", + "display": "standalone", + "background_color": "#ffffff", + "theme_color": "#6638B6" +} diff --git a/apps/web-storybook/tailwind.config.js b/apps/web-storybook/tailwind.config.js new file mode 100644 index 0000000000..ef022275fe --- /dev/null +++ b/apps/web-storybook/tailwind.config.js @@ -0,0 +1,11 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const tailwindConfig = require('postcss-config-custom/tailwind.config.cjs'); + +module.exports = { + content: [ + '../../packages/mirinae/src/**/*.{js,ts,jsx,tsx,vue}', + ], + theme: tailwindConfig.theme, + variants: tailwindConfig.variants, + plugins: tailwindConfig.plugins, +}; diff --git a/apps/web-storybook/tsconfig.json b/apps/web-storybook/tsconfig.json new file mode 100644 index 0000000000..8267743b8a --- /dev/null +++ b/apps/web-storybook/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "tsconfig/base.json", + "compilerOptions": { + "types": ["vitest/globals"], + "baseUrl": ".", + "paths": { + "@/*": ["../web/src/*"] + }, + "allowImportingTsExtensions": true, + "noEmit": true + }, + "include": [ + "**/*.ts", + "**/*.js", + "../web/src/common/**/*.@(ts|js|cjs|vue|mdx)" + ], + "exclude": [ + "node_modules", + "dist", + ".out" + ] +} diff --git a/apps/web-storybook/vite.config.js b/apps/web-storybook/vite.config.js new file mode 100644 index 0000000000..76e7d33f0e --- /dev/null +++ b/apps/web-storybook/vite.config.js @@ -0,0 +1,25 @@ +import path from 'path'; + +import commonjs from '@rollup/plugin-commonjs'; +import vue from '@vitejs/plugin-vue2'; +import { defineConfig } from 'vite'; + + +export default defineConfig({ + plugins: [vue()], + resolve: { + alias: { + '@': path.resolve(__dirname, '../web/src'), + '@cloudforet/core-lib': path.resolve(__dirname, '../../packages/core-lib/dist/'), + '@cloudforet/utils': path.resolve(__dirname, '../../packages/utils/dist/'), + '@cloudforet/language-pack': path.resolve(__dirname, '../../packages/language-pack/'), + 'vue/dist/vue.esm': path.resolve(__dirname, '../../node_modules/vue/dist/vue.esm.js'), + }, + }, + optimizeDeps: { + include: ['mirinae-foundation/web-fonts.cjs', 'mirinae-foundation/screens.cjs'], + }, + rollupInputOptions: { + plugins: [commonjs()], + }, +}); diff --git a/apps/web/src/common/components/badge/auto-sync-state/AutoSyncState.mdx b/apps/web/src/common/components/badge/auto-sync-state/AutoSyncState.mdx new file mode 100644 index 0000000000..8d8f4800e4 --- /dev/null +++ b/apps/web/src/common/components/badge/auto-sync-state/AutoSyncState.mdx @@ -0,0 +1,20 @@ +{/* AutoSyncState.mdx */} + +import { Canvas, Meta, Controls } from '@storybook/blocks'; + +import * as AutoSyncState from './AutoSyncState.stories'; + + + +# Auto Sync State Button + +
+
+
+ +## Playground + + + +
+
diff --git a/apps/web/src/common/components/badge/auto-sync-state/AutoSyncState.stories.ts b/apps/web/src/common/components/badge/auto-sync-state/AutoSyncState.stories.ts new file mode 100644 index 0000000000..111ba381d1 --- /dev/null +++ b/apps/web/src/common/components/badge/auto-sync-state/AutoSyncState.stories.ts @@ -0,0 +1,48 @@ +import type { ComponentProps } from 'vue-component-type-helpers'; + +import type { Meta, StoryObj } from '@storybook/vue'; + +import AutoSyncState from './AutoSyncState.vue'; +import { getAutoSyncStateArgs, getAutoSyncStateArgTypes, getAutoSyncStateParameters } from './story-helper'; + + +type PButtonPropsAndCustomArgs = ComponentProps; + +const meta : Meta = { + title: 'Console Component/Badge/Auto Sync State', + component: AutoSyncState, + argTypes: { + ...getAutoSyncStateArgTypes(), + }, + parameters: { + ...getAutoSyncStateParameters(), + }, + args: { + ...getAutoSyncStateArgs(), + }, +}; + +export default meta; +type Story = StoryObj; + + +const Template: Story = { + render: (args, { argTypes }) => ({ + props: Object.keys(argTypes), + components: { AutoSyncState }, + template: ` +
+ +
`, + }), +}; + +export const Playground: Story = { + ...Template, + decorators: [() => ({ + template: '', + })], +}; diff --git a/apps/web/src/common/components/badge/AutoSyncState.vue b/apps/web/src/common/components/badge/auto-sync-state/AutoSyncState.vue similarity index 100% rename from apps/web/src/common/components/badge/AutoSyncState.vue rename to apps/web/src/common/components/badge/auto-sync-state/AutoSyncState.vue diff --git a/apps/web/src/common/components/badge/auto-sync-state/constant.ts b/apps/web/src/common/components/badge/auto-sync-state/constant.ts new file mode 100644 index 0000000000..ef6d02c27b --- /dev/null +++ b/apps/web/src/common/components/badge/auto-sync-state/constant.ts @@ -0,0 +1,12 @@ +export const AUTO_SYNC_STATE_STYLE_TYPE = { + ENABLED: 'ENABLED', + DISABLED: 'DISABLED', +} as const; + +// 'lg' | 'md' | 'sm' | 'xs' +export const AUTO_SYNC_STATE_SIZE = { + LG: 'lg', + MD: 'md', + SM: 'sm', + XS: 'xs', +} as const; diff --git a/apps/web/src/common/components/badge/auto-sync-state/story-helper.ts b/apps/web/src/common/components/badge/auto-sync-state/story-helper.ts new file mode 100644 index 0000000000..bb5ace025f --- /dev/null +++ b/apps/web/src/common/components/badge/auto-sync-state/story-helper.ts @@ -0,0 +1,55 @@ + +import type { ArgTypes, Parameters } from '@storybook/vue'; + +import { AUTO_SYNC_STATE_SIZE, AUTO_SYNC_STATE_STYLE_TYPE } from './constant'; +import type { AutoSyncStateStyleType, AutoSyncStateSize } from './type'; + +export const getAutoSyncStateArgs = (): { + state: AutoSyncStateStyleType; + size: AutoSyncStateSize; +} => ({ + state: AUTO_SYNC_STATE_STYLE_TYPE.ENABLED, + size: AUTO_SYNC_STATE_SIZE.MD, +}); + +export const getAutoSyncStateParameters = (): Parameters => ({ + design: { + type: 'figma', + url: '', + }, +}); + +export const getAutoSyncStateArgTypes = (): ArgTypes => ({ + state: { + name: 'state', + type: { name: 'string' }, + description: 'AutoSyncState state', + table: { + type: { + summary: 'string', + }, + category: 'props', + defaultValue: { + summary: AUTO_SYNC_STATE_STYLE_TYPE.ENABLED, + }, + }, + control: 'select', + options: Object.values(AUTO_SYNC_STATE_STYLE_TYPE), + }, + size: { + name: 'size', + type: { name: 'string' }, + description: 'AutoSyncState size', + table: { + type: { + summary: 'string', + }, + category: 'props', + defaultValue: { + summary: 'md', + }, + }, + control: 'select', + options: ['md', 'sm', 'lg'], + }, +}); diff --git a/apps/web/src/common/components/badge/auto-sync-state/type.ts b/apps/web/src/common/components/badge/auto-sync-state/type.ts new file mode 100644 index 0000000000..053625d503 --- /dev/null +++ b/apps/web/src/common/components/badge/auto-sync-state/type.ts @@ -0,0 +1,6 @@ +import type { AUTO_SYNC_STATE_STYLE_TYPE, AUTO_SYNC_STATE_SIZE } from '@/common/components/badge/auto-sync-state/constant'; + + +export type AutoSyncStateStyleType = typeof AUTO_SYNC_STATE_STYLE_TYPE[keyof typeof AUTO_SYNC_STATE_STYLE_TYPE]; + +export type AutoSyncStateSize = typeof AUTO_SYNC_STATE_SIZE[keyof typeof AUTO_SYNC_STATE_SIZE]; diff --git a/apps/web/src/common/components/marks/GNBNewIcon.vue b/apps/web/src/common/components/marks/GNBNewIcon.vue deleted file mode 100644 index 0d68413043..0000000000 --- a/apps/web/src/common/components/marks/GNBNewIcon.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - - diff --git a/apps/web/src/services/asset-inventory-v1/components/ServiceAccountAutoSync.vue b/apps/web/src/services/asset-inventory-v1/components/ServiceAccountAutoSync.vue index e2c36a2f6e..a2d8c6710d 100644 --- a/apps/web/src/services/asset-inventory-v1/components/ServiceAccountAutoSync.vue +++ b/apps/web/src/services/asset-inventory-v1/components/ServiceAccountAutoSync.vue @@ -16,7 +16,7 @@ import { i18n } from '@/translations'; import { showSuccessMessage } from '@/lib/helper/notice-alert-helper'; -import AutoSyncState from '@/common/components/badge/AutoSyncState.vue'; +import AutoSyncState from '@/common/components/badge/auto-sync-state/AutoSyncState.vue'; import ErrorHandler from '@/common/composables/error/errorHandler'; import ServiceAccountAutoSyncDetail from '@/services/asset-inventory-v1/components/ServiceAccountAutoSyncDetail.vue'; diff --git a/apps/web/src/services/asset-inventory-v1/pages/ServiceAccountPage.vue b/apps/web/src/services/asset-inventory-v1/pages/ServiceAccountPage.vue index 8ce4579a3b..a786884bf9 100644 --- a/apps/web/src/services/asset-inventory-v1/pages/ServiceAccountPage.vue +++ b/apps/web/src/services/asset-inventory-v1/pages/ServiceAccountPage.vue @@ -51,7 +51,7 @@ import { referenceFieldFormatter } from '@/lib/reference/referenceFieldFormatter import type { Reference } from '@/lib/reference/type'; import { replaceUrlQuery } from '@/lib/router-query-string'; -import AutoSyncState from '@/common/components/badge/AutoSyncState.vue'; +import AutoSyncState from '@/common/components/badge/auto-sync-state/AutoSyncState.vue'; import { useQuerySearchPropsWithSearchSchema } from '@/common/composables/dynamic-layout'; import ErrorHandler from '@/common/composables/error/errorHandler'; import { useProperRouteLocation } from '@/common/composables/proper-route-location'; diff --git a/apps/web/src/services/asset-inventory/components/ServiceAccountAutoSync.vue b/apps/web/src/services/asset-inventory/components/ServiceAccountAutoSync.vue index b2c591a558..15f50bc2be 100644 --- a/apps/web/src/services/asset-inventory/components/ServiceAccountAutoSync.vue +++ b/apps/web/src/services/asset-inventory/components/ServiceAccountAutoSync.vue @@ -16,7 +16,7 @@ import { i18n } from '@/translations'; import { showSuccessMessage } from '@/lib/helper/notice-alert-helper'; -import AutoSyncState from '@/common/components/badge/AutoSyncState.vue'; +import AutoSyncState from '@/common/components/badge/auto-sync-state/AutoSyncState.vue'; import ErrorHandler from '@/common/composables/error/errorHandler'; import ServiceAccountAutoSyncDetail from '@/services/asset-inventory/components/ServiceAccountAutoSyncDetail.vue'; diff --git a/apps/web/src/services/asset-inventory/pages/ServiceAccountPage.vue b/apps/web/src/services/asset-inventory/pages/ServiceAccountPage.vue index f677efe46d..b5cec03e0e 100644 --- a/apps/web/src/services/asset-inventory/pages/ServiceAccountPage.vue +++ b/apps/web/src/services/asset-inventory/pages/ServiceAccountPage.vue @@ -46,7 +46,7 @@ import { referenceFieldFormatter } from '@/lib/reference/referenceFieldFormatter import type { Reference } from '@/lib/reference/type'; import { replaceUrlQuery } from '@/lib/router-query-string'; -import AutoSyncState from '@/common/components/badge/AutoSyncState.vue'; +import AutoSyncState from '@/common/components/badge/auto-sync-state/AutoSyncState.vue'; import { useQuerySearchPropsWithSearchSchema } from '@/common/composables/dynamic-layout'; import ErrorHandler from '@/common/composables/error/errorHandler'; import { usePageEditableStatus } from '@/common/composables/page-editable-status'; diff --git a/package-lock.json b/package-lock.json index e5729840e7..56ea866c73 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,18 @@ "npm": ">=10.2.3" } }, + "apps/mirinae-storybook": { + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "@storybook/theming": "^7.6.10", + "eslint-config-custom": "*", + "mirinae-foundation": "*", + "postcss-config-custom": "*", + "storybook-config-custom": "*", + "tsconfig": "*" + } + }, "apps/sb-v7-vite": { "version": "1.0.0", "extraneous": true, @@ -72,37 +84,6 @@ "webpack": "^5.92.1" } }, - "apps/storybook": { - "version": "1.0.0", - "license": "ISC", - "devDependencies": { - "@rollup/plugin-commonjs": "^26.0.1", - "@storybook/addon-a11y": "^7.6.10", - "@storybook/addon-designs": "^7.0.9", - "@storybook/addon-docs": "^7.6.10", - "@storybook/addon-essentials": "^7.6.10", - "@storybook/addon-interactions": "^7.6.10", - "@storybook/addon-links": "^7.6.10", - "@storybook/addon-mdx-gfm": "^7.6.10", - "@storybook/addon-storysource": "^7.6.10", - "@storybook/blocks": "^7.6.10", - "@storybook/manager-api": "^7.6.10", - "@storybook/test": "^7.6.10", - "@storybook/theming": "^7.6.10", - "@storybook/vue": "^7.6.10", - "@storybook/vue-vite": "^7.6.10", - "@vitejs/plugin-vue2": "^2.3.1", - "eslint-config-custom": "*", - "postcss-config-custom": "*", - "storybook": "^7.6.10", - "tsconfig": "*", - "vue-component-type-helpers": "^2.0.26" - }, - "peerDependencies": { - "react": "18.3.1", - "react-dom": "18.3.1" - } - }, "apps/storybook-v7": { "version": "1.0.0", "extraneous": true, @@ -123,48 +104,6 @@ "vue": "^2.7.15" } }, - "apps/storybook/node_modules/@storybook/addon-mdx-gfm": { - "version": "7.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-mdx-gfm/-/addon-mdx-gfm-7.6.10.tgz", - "integrity": "sha512-gA1kQZJ4ZKOpi9afu7WRC1twCwZR0J1Nd7u47kNq+5coW1GH9uqGDFYHzr4mfKdD1J09/OrmfMnVjCPx9MYDtQ==", - "dev": true, - "dependencies": { - "@storybook/node-logger": "7.6.10", - "remark-gfm": "^3.0.1", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "apps/storybook/node_modules/@storybook/node-logger": { - "version": "7.6.10", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.10.tgz", - "integrity": "sha512-ZBuqrv4bjJzKXyfRGFkVIi+z6ekn6rOPoQao4KmsfLNQAUUsEdR8Baw/zMnnU417zw5dSEaZdpuwx75SCQAeOA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "apps/storybook/node_modules/storybook": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.20.tgz", - "integrity": "sha512-Wt04pPTO71pwmRmsgkyZhNo4Bvdb/1pBAMsIFb9nQLykEdzzpXjvingxFFvdOG4nIowzwgxD+CLlyRqVJqnATw==", - "dev": true, - "dependencies": { - "@storybook/cli": "7.6.20" - }, - "bin": { - "sb": "index.js", - "storybook": "index.js" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "apps/web": { "version": "2.0.0-dev302", "license": "Apache-2.0", @@ -267,6 +206,22 @@ "vue-template-compiler": "2.7.16" } }, + "apps/web-storybook": { + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "@cloudforet/core-lib": "*", + "@cloudforet/language-pack": "*", + "@cloudforet/mirinae": "*", + "@cloudforet/utils": "*", + "@storybook/theming": "^7.6.10", + "eslint-config-custom": "*", + "mirinae-foundation": "*", + "postcss-config-custom": "*", + "storybook-config-custom": "*", + "tsconfig": "*" + } + }, "apps/web/node_modules/@esbuild/android-arm": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", @@ -1343,12 +1298,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/@adobe/css-tools": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", - "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", - "dev": true - }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -4070,6 +4019,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -6342,230 +6292,6 @@ } } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz", - "integrity": "sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz", - "integrity": "sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz", - "integrity": "sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz", - "integrity": "sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz", - "integrity": "sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz", - "integrity": "sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz", - "integrity": "sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz", - "integrity": "sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz", - "integrity": "sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz", - "integrity": "sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz", - "integrity": "sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz", - "integrity": "sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz", - "integrity": "sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz", - "integrity": "sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz", - "integrity": "sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz", - "integrity": "sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true - }, "node_modules/@scena/dragscroll": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@scena/dragscroll/-/dragscroll-1.4.0.tgz", @@ -6837,6 +6563,21 @@ } } }, + "node_modules/@storybook/addon-mdx-gfm": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-mdx-gfm/-/addon-mdx-gfm-7.6.20.tgz", + "integrity": "sha512-htfiooRdIYIjdKpxFjJAT+b90iatraI7yfmgF8VmpGTPqjyjGDZccUFCaE7op9S2smLZi4zYYGd+fqA5NtykkQ==", + "dev": true, + "dependencies": { + "@storybook/node-logger": "7.6.20", + "remark-gfm": "^3.0.1", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, "node_modules/@storybook/addon-measure": { "version": "7.6.20", "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.6.20.tgz", @@ -7877,39 +7618,6 @@ "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", "dev": true }, - "node_modules/@storybook/instrumenter": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-7.6.20.tgz", - "integrity": "sha512-jqRpSEy+4rVXXgixMm7CPapZrTd4WqL0lkxLCzLC3BT6fom5MVUb6BTqWx3agYcsZR2yJjg6bR6CM44QAqknpQ==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.6.20", - "@storybook/client-logger": "7.6.20", - "@storybook/core-events": "7.6.20", - "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.6.20", - "@vitest/utils": "^0.34.6", - "util": "^0.12.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/instrumenter/node_modules/@vitest/utils": { - "version": "0.34.7", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.7.tgz", - "integrity": "sha512-ziAavQLpCYS9sLOorGrFFKmy2gnfiNU0ZJ15TsMz/K92NAPS/rp9K4z6AJQQk5Y8adCy4Iwpxy7pQumQ/psnRg==", - "dev": true, - "dependencies": { - "diff-sequences": "^29.4.3", - "loupe": "^2.3.6", - "pretty-format": "^29.5.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, "node_modules/@storybook/manager": { "version": "7.6.20", "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.20.tgz", @@ -8088,2620 +7796,1474 @@ "node": ">=14.14" } }, - "node_modules/@storybook/test": { + "node_modules/@storybook/theming": { "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-7.6.20.tgz", - "integrity": "sha512-OPySH/vi42K7t29lFrC/uaOB1S+eO62+/Gk8IX2IvWo1kQIYk59b9fLFMOGE0kX1NRbFhDqUZJxwHVnIIoLn4A==", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.20.tgz", + "integrity": "sha512-iT1pXHkSkd35JsCte6Qbanmprx5flkqtSHC6Gi6Umqoxlg9IjiLPmpHbaIXzoC06DSW93hPj5Zbi1lPlTvRC7Q==", "dev": true, "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", "@storybook/client-logger": "7.6.20", - "@storybook/core-events": "7.6.20", - "@storybook/instrumenter": "7.6.20", - "@storybook/preview-api": "7.6.20", - "@testing-library/dom": "^9.3.1", - "@testing-library/jest-dom": "^6.1.3", - "@testing-library/user-event": "14.3.0", - "@types/chai": "^4", - "@vitest/expect": "^0.34.2", - "@vitest/spy": "^0.34.1", - "chai": "^4.3.7", - "util": "^0.12.4" + "@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/test/node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], + "node_modules/@storybook/types": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.20.tgz", + "integrity": "sha512-GncdY3x0LpbhmUAAJwXYtJDUQEwfF175gsjH0/fxPkxPoV7Sef9TM41jQLJW/5+6TnZoCZP/+aJZTJtq3ni23Q==", "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" + "dependencies": { + "@storybook/channels": "7.6.20", + "@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/@storybook/test/node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], + "node_modules/@storybook/vue": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/vue/-/vue-7.6.20.tgz", + "integrity": "sha512-Q0/ce9lNoq6IrDb6uemyNRXiF2O7sUnVpjNKV5ZqIjUybZ6MU2huiE1RnUbM9bW2c+XxpQMuHwMRNVOrb4THpA==", "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, + "dependencies": { + "@storybook/client-logger": "7.6.20", + "@storybook/core-client": "7.6.20", + "@storybook/docs-tools": "7.6.20", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "7.6.20", + "@storybook/types": "7.6.20", + "ts-dedent": "^2.0.0", + "type-fest": "~2.19" + }, "engines": { - "node": ">=12" + "node": ">=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@babel/core": "*", + "babel-loader": "^7.0.0 || ^8.0.0 || ^9.0.0", + "css-loader": "*", + "vue": "^2.6.8" + }, + "peerDependenciesMeta": { + "babel-loader": { + "optional": true + } } }, - "node_modules/@storybook/test/node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], + "node_modules/@storybook/vue-vite": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/vue-vite/-/vue-vite-7.6.20.tgz", + "integrity": "sha512-GyaMvBIY8yAP3SEt/fK0O9Guq2btgCTGA3Bjk8yZ4FRWx0l1eJr94HUPsvZyrL0SRWokSmAenbMsj4WK1g542Q==", "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, + "dependencies": { + "@storybook/builder-vite": "7.6.20", + "@storybook/core-common": "7.6.20", + "@storybook/core-server": "7.6.20", + "@storybook/vue": "7.6.20", + "magic-string": "^0.30.0", + "vue-docgen-api": "^4.40.0" + }, "engines": { - "node": ">=12" + "node": ">=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0", + "vue": "^2.7.0" } }, - "node_modules/@storybook/test/node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], + "node_modules/@storybook/vue-vite/node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=12" + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" } }, - "node_modules/@storybook/test/node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], + "node_modules/@storybook/vue/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, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, "engines": { - "node": ">=12" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/test/node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], + "node_modules/@stylelint/postcss-css-in-js": { + "version": "0.37.3", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.3.tgz", + "integrity": "sha512-scLk3cSH1H9KggSniseb2KNAU5D9FWc3H7BxCSAIdtU9OWIyw0zkEZ9qEKHryRM+SExYXRKNb7tOOVNAsQ3iwg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" + "dependencies": { + "@babel/core": "^7.17.9" + }, + "peerDependencies": { + "postcss": ">=7.0.0", + "postcss-syntax": ">=0.36.2" } }, - "node_modules/@storybook/test/node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], + "node_modules/@stylelint/postcss-markdown": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", + "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", + "deprecated": "Use the original unforked package instead: postcss-markdown", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" + "dependencies": { + "remark": "^13.0.0", + "unist-util-find-all-after": "^3.0.2" + }, + "peerDependencies": { + "postcss": ">=7.0.0", + "postcss-syntax": ">=0.36.2" } }, - "node_modules/@storybook/test/node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, + "node_modules/@tanstack/match-sorter-utils": { + "version": "8.19.4", + "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.19.4.tgz", + "integrity": "sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==", + "dependencies": { + "remove-accents": "0.5.0" + }, "engines": { "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@storybook/test/node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tanstack/query-core": { + "version": "5.62.7", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.7.tgz", + "integrity": "sha512-fgpfmwatsrUal6V+8EC2cxZIQVl9xvL7qYa03gsdsCy985UTUlS4N+/3hCzwR0PclYDqisca2AqR1BVgJGpUDA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@storybook/test/node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tanstack/vue-query": { + "version": "5.62.7", + "resolved": "https://registry.npmjs.org/@tanstack/vue-query/-/vue-query-5.62.7.tgz", + "integrity": "sha512-FVSnVw2fw9BHciCbWWSfPMB3PRtGHbGf4Q1Gq7mFlieojiKZBF5Nz5AKFQLKs+IGnrVDTKqfU8ojjPfthPTYxQ==", + "dependencies": { + "@tanstack/match-sorter-utils": "^8.19.4", + "@tanstack/query-core": "5.62.7", + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "@vue/composition-api": "^1.1.2", + "vue": "^2.6.0 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } } }, - "node_modules/@storybook/test/node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tiptap/core": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.10.2.tgz", + "integrity": "sha512-jYLXbYHTi1stLla/74J8NJizDtcJ/uokhG+1gN4DMWHDujaZOrRZhW98o9gN5BYAp4zv//TVX8H+afLZwKGCKQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/pm": "^2.7.0" } }, - "node_modules/@storybook/test/node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tiptap/extension-blockquote": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.0.3.tgz", + "integrity": "sha512-rkUcFv2iL6f86DBBHoa4XdKNG2StvkJ7tfY9GoMpT46k3nxOaMTqak9/qZOo79TWxMLYtXzoxtKIkmWsbbcj4A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tiptap/extension-bold": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.0.3.tgz", + "integrity": "sha512-OGT62fMRovSSayjehumygFWTg2Qn0IDbqyMpigg/RUAsnoOI2yBZFVrdM2gk1StyoSay7gTn2MLw97IUfr7FXg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tiptap/extension-bubble-menu": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.3.tgz", + "integrity": "sha512-lPt1ELrYCuoQrQEUukqjp9xt38EwgPUwaKHI3wwt2Rbv+C6q1gmRsK1yeO/KqCNmFxNqF2p9ZF9srOnug/RZDQ==", + "dependencies": { + "tippy.js": "^6.3.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tiptap/extension-bullet-list": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.3.tgz", + "integrity": "sha512-RtaLiRvZbMTOje+FW5bn+mYogiIgNxOm065wmyLPypnTbLSeHeYkoqVSqzZeqUn+7GLnwgn1shirUe6csVE/BA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tiptap/extension-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.0.3.tgz", + "integrity": "sha512-LsVCKVxgBtkstAr1FjxN8T3OjlC76a2X8ouoZpELMp+aXbjqyanCKzt+sjjUhE4H0yLFd4v+5v6UFoCv4EILiw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tiptap/extension-code-block": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.0.3.tgz", + "integrity": "sha512-F4xMy18EwgpyY9f5Te7UuF7UwxRLptOtCq1p2c2DfxBvHDWhAjQqVqcW/sq/I/WuED7FwCnPLyyAasPiVPkLPw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tiptap/extension-color": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-color/-/extension-color-2.0.3.tgz", + "integrity": "sha512-LYj3CWahhuJOy4/bwOur+cob8eky7xx7wyyBFIYELuzLcZt9hBmZwXxinQzD7BaQv4YdT+3oqr8BhChuPNj52w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/extension-text-style": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tiptap/extension-document": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.0.3.tgz", + "integrity": "sha512-PsYeNQQBYIU9ayz1R11Kv/kKNPFNIV8tApJ9pxelXjzcAhkjncNUazPN/dyho60mzo+WpsmS3ceTj/gK3bCtWA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tiptap/extension-dropcursor": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.3.tgz", + "integrity": "sha512-McthMrfusn6PjcaynJLheZJcXto8TaIW5iVitYh8qQrDXr31MALC/5GvWuiswmQ8bAXiWPwlLDYE/OJfwtggaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tiptap/extension-floating-menu": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.3.tgz", + "integrity": "sha512-zN1vRGRvyK3pO2aHRmQSOTpl4UJraXYwKYM009n6WviYKUNm0LPGo+VD4OAtdzUhPXyccnlsTv2p6LIqFty6Bg==", + "dependencies": { + "tippy.js": "^6.3.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tiptap/extension-gapcursor": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.3.tgz", + "integrity": "sha512-6I9EzzsYOyyqDvDvxIK6Rv3EXB+fHKFj8ntHO8IXmeNJ6pkhOinuXVsW6Yo7TcDYoTj4D5I2MNFAW2rIkgassw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@testing-library/jest-dom": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.6.tgz", - "integrity": "sha512-8qpnGVincVDLEcQXWaHOf6zmlbwTKc6Us6PPu4CRnPXCzo2OGBS5cwgMMOWdxDpEz1mkbvXHpEy99M5Yvt682w==", - "dev": true, - "dependencies": { - "@adobe/css-tools": "^4.4.0", - "@babel/runtime": "^7.9.2", - "aria-query": "^5.0.0", - "chalk": "^3.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.6.3", - "lodash": "^4.17.21", - "redent": "^3.0.0" - }, - "engines": { - "node": ">=14", - "npm": ">=6", - "yarn": ">=1" + "node_modules/@tiptap/extension-hard-break": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.0.3.tgz", + "integrity": "sha512-RCln6ARn16jvKTjhkcAD5KzYXYS0xRMc0/LrHeV8TKdCd4Yd0YYHe0PU4F9gAgAfPQn7Dgt4uTVJLN11ICl8sQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "@jest/globals": ">= 28", - "@types/bun": "latest", - "@types/jest": ">= 28", - "jest": ">= 28", - "vitest": ">= 0.32" - }, - "peerDependenciesMeta": { - "@jest/globals": { - "optional": true - }, - "@types/bun": { - "optional": true - }, - "@types/jest": { - "optional": true - }, - "jest": { - "optional": true - }, - "vitest": { - "optional": true - } + "@tiptap/core": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@vitest/runner": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.2.tgz", - "integrity": "sha512-OCh437Vi8Wdbif1e0OvQcbfM3sW4s2lpmOjAE7qfLrpzJX2M7J1IQlNvEcb/fu6kaIB9n9n35wS0G2Q3en5kHg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@vitest/utils": "2.0.2", - "pathe": "^1.1.2" + "node_modules/@tiptap/extension-heading": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.0.3.tgz", + "integrity": "sha512-f0IEv5ms6aCzL80WeZ1qLCXTkRVwbpRr1qAETjg3gG4eoJN18+lZNOJYpyZy3P92C5KwF2T3Av00eFyVLIbb8Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-history": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.0.3.tgz", + "integrity": "sha512-00KHIcJ8kivn2ARI6NQYphv2LfllVCXViHGm0EhzDW6NQxCrriJKE3tKDcTFCu7LlC5doMpq9Z6KXdljc4oVeQ==", "funding": { - "url": "https://opencollective.com/vitest" + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@vitest/snapshot": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.2.tgz", - "integrity": "sha512-Yc2ewhhZhx+0f9cSUdfzPRcsM6PhIb+S43wxE7OG0kTxqgqzo8tHkXFuFlndXeDMp09G3sY/X5OAo/RfYydf1g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@vitest/pretty-format": "2.0.2", - "magic-string": "^0.30.10", - "pathe": "^1.1.2" + "node_modules/@tiptap/extension-horizontal-rule": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.3.tgz", + "integrity": "sha512-SZRUSh07b/M0kJHNKnfBwBMWrZBEm/E2LrK1NbluwT3DBhE+gvwiEdBxgB32zKHNxaDEXUJwUIPNC3JSbKvPUA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-italic": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.0.3.tgz", + "integrity": "sha512-cfS5sW0gu7qf4ihwnLtW/QMTBrBEXaT0sJl3RwkhjIBg/65ywJKE5Nz9ewnQHmDeT18hvMJJ1VIb4j4ze9jj9A==", "funding": { - "url": "https://opencollective.com/vitest" + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@vitest/ui": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-2.0.2.tgz", - "integrity": "sha512-VwxFTOC2GcNPexQlR9PFb8drWCLA+nLWTWlAS4oba1xbTJYJ8H5vY8OUFOTMb7YQXF0Vsc5IfmLpYkb2dcVgOA==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/@tiptap/extension-link": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.0.3.tgz", + "integrity": "sha512-H72tXQ5rkVCkAhFaf08fbEU7EBUCK0uocsqOF+4th9sOlrhfgyJtc8Jv5EXPDpxNgG5jixSqWBo0zKXQm9s9eg==", "dependencies": { - "@vitest/utils": "2.0.2", - "fast-glob": "^3.3.2", - "fflate": "^0.8.2", - "flatted": "^3.3.1", - "pathe": "^1.1.2", - "sirv": "^2.0.4", - "tinyrainbow": "^1.2.0" + "linkifyjs": "^4.1.0" }, "funding": { - "url": "https://opencollective.com/vitest" + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" }, "peerDependencies": { - "vitest": "2.0.2" + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/@vitest/utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.2.tgz", - "integrity": "sha512-pxCY1v7kmOCWYWjzc0zfjGTA3Wmn8PKnlPvSrsA643P1NHl1fOyXj2Q9SaNlrlFE+ivCsxM80Ov3AR82RmHCWQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@vitest/pretty-format": "2.0.2", - "estree-walker": "^3.0.3", - "loupe": "^3.1.1", - "tinyrainbow": "^1.2.0" - }, + "node_modules/@tiptap/extension-list-item": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.0.3.tgz", + "integrity": "sha512-p7cUsk0LpM1PfdAuFE8wYBNJ3gvA0UhNGR08Lo++rt9UaCeFLSN1SXRxg97c0oa5+Ski7SrCjIJ5Ynhz0viTjQ==", "funding": { - "url": "https://opencollective.com/vitest" + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=12" + "node_modules/@tiptap/extension-ordered-list": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.3.tgz", + "integrity": "sha512-ZB3MpZh/GEy1zKgw7XDQF4FIwycZWNof1k9WbDZOI063Ch4qHZowhVttH2mTCELuyvTMM/o9a8CS7qMqQB48bw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "node_modules/@tiptap/extension-paragraph": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.0.3.tgz", + "integrity": "sha512-a+tKtmj4bU3GVCH1NE8VHWnhVexxX5boTVxsHIr4yGG3UoKo1c5AO7YMaeX2W5xB5iIA+BQqOPCDPEAx34dd2A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@tiptap/core": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 16" + "node_modules/@tiptap/extension-placeholder": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.10.2.tgz", + "integrity": "sha512-QWzih69SetWYiylQzHsK29dMR8z1ParfcEw05hy3yyWqXE1DiKEot6rOGV1xenMVEA/SNGYYhQia15Bvco95TA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" } }, - "node_modules/@storybook/test/node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=6" + "node_modules/@tiptap/extension-strike": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.0.3.tgz", + "integrity": "sha512-RO4/EYe2iPD6ifDHORT8fF6O9tfdtnzxLGwZIKZXnEgtweH+MgoqevEzXYdS+54Wraq4TUQGNcsYhe49pv7Rlw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/dom-accessibility-api": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", - "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "dev": true + "node_modules/@tiptap/extension-text": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.0.3.tgz", + "integrity": "sha512-LvzChcTCcPSMNLUjZe/A9SHXWGDHtvk73fR7CBqAeNU0MxhBPEBI03GFQ6RzW3xX0CmDmjpZoDxFMB+hDEtW1A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } }, - "node_modules/@storybook/test/node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "peer": true, - "bin": { - "esbuild": "bin/esbuild" + "node_modules/@tiptap/extension-text-align": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-align/-/extension-text-align-2.0.3.tgz", + "integrity": "sha512-VlLgqncKdjMjVjbU60/ALYhFs0wUdjAyvjDXnH1OoM/HuzbILvufPMYz4DUieJIWVJOYUKHQgg4XwBWceAM2Tw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "@tiptap/core": "^2.0.0" + } + }, + "node_modules/@tiptap/extension-text-style": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-2.0.3.tgz", + "integrity": "sha512-yHIYtZVewSwfBfI6TffnsDRiOuXzytppcCsaDlsZFm8OtLG8v9ioH0ItMoOstmZZBiWJOm8iOy2yWSc4rNQEJw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "peerDependencies": { + "@tiptap/core": "^2.0.0" } }, - "node_modules/@storybook/test/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "^1.0.0" + "node_modules/@tiptap/extension-underline": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.0.3.tgz", + "integrity": "sha512-oMYa7qib/5wJjpUp79GZEe+E/iyf1oZBsgiG26IspEtVTHZmpn3+Ktud7l43y/hpTeEzFTKOF1/uVbayHtSERg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0" } }, - "node_modules/@storybook/test/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, - "optional": true, + "node_modules/@tiptap/pm": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.10.2.tgz", + "integrity": "sha512-jEgC79uvuEl51XxulutUJPSlhkoY0xQc9R/G4MQltAi+JxJ+KE/pOxgqziWNxBpgUzQqloupjod0kLhLUL4Cig==", "peer": 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" + "prosemirror-changeset": "^2.2.1", + "prosemirror-collab": "^1.3.1", + "prosemirror-commands": "^1.6.2", + "prosemirror-dropcursor": "^1.8.1", + "prosemirror-gapcursor": "^1.3.2", + "prosemirror-history": "^1.4.1", + "prosemirror-inputrules": "^1.4.0", + "prosemirror-keymap": "^1.2.2", + "prosemirror-markdown": "^1.13.1", + "prosemirror-menu": "^1.2.4", + "prosemirror-model": "^1.23.0", + "prosemirror-schema-basic": "^1.2.3", + "prosemirror-schema-list": "^1.4.1", + "prosemirror-state": "^1.4.3", + "prosemirror-tables": "^1.6.1", + "prosemirror-trailing-node": "^3.0.0", + "prosemirror-transform": "^1.10.2", + "prosemirror-view": "^1.36.0" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" } }, - "node_modules/@storybook/test/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" - ], - "peer": true, - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node_modules/@tiptap/starter-kit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.0.3.tgz", + "integrity": "sha512-t4WG4w93zTpL2VxhVyJJvl3kdLF001ZrhpOuEiZqEMBMUMbM56Uiigv1CnUQpTFrjDAh3IM8hkqzAh20TYw2iQ==", + "dependencies": { + "@tiptap/core": "^2.0.3", + "@tiptap/extension-blockquote": "^2.0.3", + "@tiptap/extension-bold": "^2.0.3", + "@tiptap/extension-bullet-list": "^2.0.3", + "@tiptap/extension-code": "^2.0.3", + "@tiptap/extension-code-block": "^2.0.3", + "@tiptap/extension-document": "^2.0.3", + "@tiptap/extension-dropcursor": "^2.0.3", + "@tiptap/extension-gapcursor": "^2.0.3", + "@tiptap/extension-hard-break": "^2.0.3", + "@tiptap/extension-heading": "^2.0.3", + "@tiptap/extension-history": "^2.0.3", + "@tiptap/extension-horizontal-rule": "^2.0.3", + "@tiptap/extension-italic": "^2.0.3", + "@tiptap/extension-list-item": "^2.0.3", + "@tiptap/extension-ordered-list": "^2.0.3", + "@tiptap/extension-paragraph": "^2.0.3", + "@tiptap/extension-strike": "^2.0.3", + "@tiptap/extension-text": "^2.0.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" } }, - "node_modules/@storybook/test/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, - "optional": true, - "peer": true, - "engines": { - "node": ">=16" + "node_modules/@tiptap/vue-2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@tiptap/vue-2/-/vue-2-2.0.3.tgz", + "integrity": "sha512-So2cl/W11Xt1MQqK47uNrddf08ruI2ScGHaBG2WZnYDtqJfwlAChRXi67fOeo/Y1vWy/69ekv5kLeQYWw9YJAg==", + "dependencies": { + "@tiptap/extension-bubble-menu": "^2.0.3", + "@tiptap/extension-floating-menu": "^2.0.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0", + "vue": "^2.6.0" } }, - "node_modules/@storybook/test/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==", + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, - "optional": true, - "peer": true, "engines": { - "node": ">=16.17.0" + "node": ">= 10" } }, - "node_modules/@storybook/test/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==", + "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, - "optional": true, - "peer": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@storybook/test/node_modules/loupe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", - "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", + "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, - "optional": true, - "peer": true, "dependencies": { - "get-func-name": "^2.0.1" + "@babel/types": "^7.0.0" } }, - "node_modules/@storybook/test/node_modules/magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "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, - "optional": true, - "peer": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@storybook/test/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==", + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@babel/types": "^7.20.7" } }, - "node_modules/@storybook/test/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==", + "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, - "optional": true, - "peer": 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" + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/@storybook/test/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==", + "node_modules/@types/bytes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/bytes/-/bytes-3.1.1.tgz", + "integrity": "sha512-lOGyCnw+2JVPKU3wIV0srU0NyALwTBJlVSx5DfMQOFuuohA8y9S8orImpuIQikZ0uIQ8gehrRjxgQC1rLRi11w==", + "dev": true + }, + "node_modules/@types/chai": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", + "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "dev": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/chai": "*" } }, - "node_modules/@storybook/test/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==", + "node_modules/@types/codemirror": { + "version": "0.0.109", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.109.tgz", + "integrity": "sha512-cSdiHeeLjvGn649lRTNeYrVCDOgDrtP+bDDSFDd1TF+i0jKGPDRozno2NOJ9lTniso+taiv4kiVS8dgM8Jm5lg==", "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/tern": "*" } }, - "node_modules/@storybook/test/node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "node_modules/@types/color": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.1.tgz", + "integrity": "sha512-oeUWVaAwI+xINDUx+3F2vJkl/vVB03VChFF/Gl3iQCdbcakjuoJyMOba+3BXRtnBhxZ7uBYqQBi9EpLnvSoztA==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "@types/color-convert": "*" + } }, - "node_modules/@storybook/test/node_modules/pathval": { + "node_modules/@types/color-convert": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.0.tgz", + "integrity": "sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ==", "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 14.16" + "dependencies": { + "@types/color-name": "*" } }, - "node_modules/@storybook/test/node_modules/rollup": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.1.tgz", - "integrity": "sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==", + "node_modules/@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "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, - "optional": true, - "peer": true, "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.18.1", - "@rollup/rollup-android-arm64": "4.18.1", - "@rollup/rollup-darwin-arm64": "4.18.1", - "@rollup/rollup-darwin-x64": "4.18.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.18.1", - "@rollup/rollup-linux-arm-musleabihf": "4.18.1", - "@rollup/rollup-linux-arm64-gnu": "4.18.1", - "@rollup/rollup-linux-arm64-musl": "4.18.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.18.1", - "@rollup/rollup-linux-riscv64-gnu": "4.18.1", - "@rollup/rollup-linux-s390x-gnu": "4.18.1", - "@rollup/rollup-linux-x64-gnu": "4.18.1", - "@rollup/rollup-linux-x64-musl": "4.18.1", - "@rollup/rollup-win32-arm64-msvc": "4.18.1", - "@rollup/rollup-win32-ia32-msvc": "4.18.1", - "@rollup/rollup-win32-x64-msvc": "4.18.1", - "fsevents": "~2.3.2" + "@types/node": "*" } }, - "node_modules/@storybook/test/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==", + "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, - "optional": true, - "peer": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "dependencies": { + "@types/node": "*" } }, - "node_modules/@storybook/test/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, - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/@types/d3": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz", + "integrity": "sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" } }, - "node_modules/@storybook/test/node_modules/tinypool": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz", - "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": "^18.0.0 || >=20.0.0" + "node_modules/@types/d3-array": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.4.tgz", + "integrity": "sha512-nwvEkG9vYOc0Ic7G7kwgviY4AQlTfYGIZ0fqB7CQHXGyYM6nO7kJh5EguSNA3jfh4rq7Sb7eMVq8isuvg2/miQ==" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.2.tgz", + "integrity": "sha512-uGC7DBh0TZrU/LY43Fd8Qr+2ja1FKmH07q2FoZFHo1eYl8aj87GhfVoY1saJVJiq24rp1+wpI6BvQJMKgQm8oA==", + "dependencies": { + "@types/d3-selection": "*" } }, - "node_modules/@storybook/test/node_modules/tinyspy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", - "integrity": "sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=14.0.0" + "node_modules/@types/d3-brush": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.2.tgz", + "integrity": "sha512-2TEm8KzUG3N7z0TrSKPmbxByBx54M+S9lHoP2J55QuLU0VSQ9mE96EJSAOVNEqd1bbynMjeTS9VHmz8/bSw8rA==", + "dependencies": { + "@types/d3-selection": "*" } }, - "node_modules/@storybook/test/node_modules/vite": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", - "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/@types/d3-chord": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.2.tgz", + "integrity": "sha512-abT/iLHD3sGZwqMTX1TYCMEulr+wBd0SzyOQnjYNLp7sngdOHYtNkMRI5v3w5thoN+BWtlHVDx2Osvq6fxhZWw==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.2.tgz", + "integrity": "sha512-k6/bGDoAGJZnZWaKzeB+9glgXCYGvh6YlluxzBREiVo8f/X2vpTEdgPy9DN7Z2i42PZOZ4JDhVdlTSTSkLDPlQ==", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.39", - "rollup": "^4.13.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "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 - } + "@types/d3-array": "*", + "@types/geojson": "*" } }, - "node_modules/@storybook/test/node_modules/vite-node": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.2.tgz", - "integrity": "sha512-w4vkSz1Wo+NIQg8pjlEn0jQbcM/0D+xVaYjhw3cvarTanLLBh54oNiRbsT8PNK5GfuST0IlVXjsNRoNlqvY/fw==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/@types/d3-delaunay": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz", + "integrity": "sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.2.tgz", + "integrity": "sha512-rxN6sHUXEZYCKV05MEh4z4WpPSqIw+aP7n9ZN6WYAAvZoEAghEK1WeVZMZcHRBwyaKflU43PCUAJNjFxCzPDjg==" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.2.tgz", + "integrity": "sha512-qmODKEDvyKWVHcWWCOVcuVcOwikLVsyc4q4EBJMREsoQnR2Qoc2cZQUyFUPgO9q4S3qdSqJKBsuefv+h0Qy+tw==", "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.5", - "pathe": "^1.1.2", - "tinyrainbow": "^1.2.0", - "vite": "^5.0.0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "@types/d3-selection": "*" } }, - "node_modules/@storybook/test/node_modules/vitest": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.2.tgz", - "integrity": "sha512-WlpZ9neRIjNBIOQwBYfBSr0+of5ZCbxT2TVGKW4Lv0c8+srCFIiRdsP7U009t8mMn821HQ4XKgkx5dVWpyoyLw==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/@types/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-76pBHCMTvPLt44wFOieouXcGXWOF0AJCceUvaFkxSZEu4VDUdv93JfpMa6VGNFs01FHfuP4a5Ou68eRG1KBfTw==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", + "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.2.tgz", + "integrity": "sha512-gllwYWozWfbep16N9fByNBDTkJW/SyhH6SGRlXloR7WdtAaBui4plTP+gbUgiEot7vGw/ZZop1yDZlgXXSuzjA==", "dependencies": { - "@ampproject/remapping": "^2.3.0", - "@vitest/expect": "2.0.2", - "@vitest/pretty-format": "^2.0.2", - "@vitest/runner": "2.0.2", - "@vitest/snapshot": "2.0.2", - "@vitest/spy": "2.0.2", - "@vitest/utils": "2.0.2", - "chai": "^5.1.1", - "debug": "^4.3.5", - "execa": "^8.0.1", - "magic-string": "^0.30.10", - "pathe": "^1.1.2", - "std-env": "^3.7.0", - "tinybench": "^2.8.0", - "tinypool": "^1.0.0", - "tinyrainbow": "^1.2.0", - "vite": "^5.0.0", - "vite-node": "2.0.2", - "why-is-node-running": "^2.2.2" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.0.2", - "@vitest/ui": "2.0.2", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } + "@types/d3-dsv": "*" } }, - "node_modules/@storybook/test/node_modules/vitest/node_modules/@vitest/expect": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.2.tgz", - "integrity": "sha512-nKAvxBYqcDugYZ4nJvnm5OR8eDJdgWjk4XM9owQKUjzW70q0icGV2HVnQOyYsp906xJaBDUXw0+9EHw2T8e0mQ==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/@types/d3-force": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.4.tgz", + "integrity": "sha512-q7xbVLrWcXvSBBEoadowIUJ7sRpS1yvgMWnzHJggFy5cUZBq2HZL5k/pBSm0GdYWS1vs5/EDwMjSKF55PDY4Aw==" + }, + "node_modules/@types/d3-format": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.1.tgz", + "integrity": "sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==" + }, + "node_modules/@types/d3-geo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.3.tgz", + "integrity": "sha512-bK9uZJS3vuDCNeeXQ4z3u0E7OeJZXjUgzFdSOtNtMCJCLvDtWDwfpRVWlyt3y8EvRzI0ccOu9xlMVirawolSCw==", "dependencies": { - "@vitest/spy": "2.0.2", - "@vitest/utils": "2.0.2", - "chai": "^5.1.1", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "@types/geojson": "*" } }, - "node_modules/@storybook/test/node_modules/vitest/node_modules/@vitest/spy": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.2.tgz", - "integrity": "sha512-MgwJ4AZtCgqyp2d7WcQVE8aNG5vQ9zu9qMPYQHjsld/QVsrvg78beNrXdO4HYkP0lDahCO3P4F27aagIag+SGQ==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-9hjRTVoZjRFR6xo8igAJyNXQyPX6Aq++Nhb5ebrUF414dv4jr2MitM2fWiOY475wa3Za7TOS2Gh9fmqEhLTt0A==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", "dependencies": { - "tinyspy": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "@types/d3-color": "*" } }, - "node_modules/@storybook/test/node_modules/vitest/node_modules/chai": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", - "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/@types/d3-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", + "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.0.tgz", + "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz", + "integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==" + }, + "node_modules/@types/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==" + }, + "node_modules/@types/d3-sankey": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/@types/d3-sankey/-/d3-sankey-0.11.2.tgz", + "integrity": "sha512-U6SrTWUERSlOhnpSrgvMX64WblX1AxX6nEjI2t3mLK2USpQrnbwYYK+AS9SwiE7wgYmOsSSKoSdr8aoKBH0HgQ==", "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=12" + "@types/d3-shape": "^1" } }, - "node_modules/@storybook/theming": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.20.tgz", - "integrity": "sha512-iT1pXHkSkd35JsCte6Qbanmprx5flkqtSHC6Gi6Umqoxlg9IjiLPmpHbaIXzoC06DSW93hPj5Zbi1lPlTvRC7Q==", - "dev": true, + "node_modules/@types/d3-sankey/node_modules/@types/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-NaIeSIBiFgSC6IGUBjZWcscUJEq7vpVu7KthHN8eieTV9d9MqkSOZLH4chq1PmcKy06PNe3axLeKmRIyxJ+PZQ==" + }, + "node_modules/@types/d3-sankey/node_modules/@types/d3-shape": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.8.tgz", + "integrity": "sha512-gqfnMz6Fd5H6GOLYixOZP/xlrMtJms9BaS+6oWxTKHNqPGZ93BkWWupQSCYm6YHqx6h9wjRupuJb90bun6ZaYg==", "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.6.20", - "@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" + "@types/d3-path": "^1" } }, - "node_modules/@storybook/types": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.20.tgz", - "integrity": "sha512-GncdY3x0LpbhmUAAJwXYtJDUQEwfF175gsjH0/fxPkxPoV7Sef9TM41jQLJW/5+6TnZoCZP/+aJZTJtq3ni23Q==", - "dev": true, + "node_modules/@types/d3-scale": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.3.tgz", + "integrity": "sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==", "dependencies": { - "@storybook/channels": "7.6.20", - "@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" + "@types/d3-time": "*" } }, - "node_modules/@storybook/vue": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/vue/-/vue-7.6.20.tgz", - "integrity": "sha512-Q0/ce9lNoq6IrDb6uemyNRXiF2O7sUnVpjNKV5ZqIjUybZ6MU2huiE1RnUbM9bW2c+XxpQMuHwMRNVOrb4THpA==", - "dev": true, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.5.tgz", + "integrity": "sha512-xCB0z3Hi8eFIqyja3vW8iV01+OHGYR2di/+e+AiOcXIOrY82lcvWW8Ke1DYE/EUVMsBl4Db9RppSBS3X1U6J0w==" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.1.tgz", + "integrity": "sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==", "dependencies": { - "@storybook/client-logger": "7.6.20", - "@storybook/core-client": "7.6.20", - "@storybook/docs-tools": "7.6.20", - "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.6.20", - "@storybook/types": "7.6.20", - "ts-dedent": "^2.0.0", - "type-fest": "~2.19" - }, - "engines": { - "node": ">=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "@babel/core": "*", - "babel-loader": "^7.0.0 || ^8.0.0 || ^9.0.0", - "css-loader": "*", - "vue": "^2.6.8" - }, - "peerDependenciesMeta": { - "babel-loader": { - "optional": true - } + "@types/d3-path": "*" } }, - "node_modules/@storybook/vue-vite": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/vue-vite/-/vue-vite-7.6.20.tgz", - "integrity": "sha512-GyaMvBIY8yAP3SEt/fK0O9Guq2btgCTGA3Bjk8yZ4FRWx0l1eJr94HUPsvZyrL0SRWokSmAenbMsj4WK1g542Q==", - "dev": true, - "dependencies": { - "@storybook/builder-vite": "7.6.20", - "@storybook/core-common": "7.6.20", - "@storybook/core-server": "7.6.20", - "@storybook/vue": "7.6.20", - "magic-string": "^0.30.0", - "vue-docgen-api": "^4.40.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0", - "vue": "^2.7.0" - } + "node_modules/@types/d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" }, - "node_modules/@storybook/vue-vite/node_modules/magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", - "dev": true, + "node_modules/@types/d3-time-format": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.0.tgz", + "integrity": "sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", + "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.3.tgz", + "integrity": "sha512-/S90Od8Id1wgQNvIA8iFv9jRhCiZcGhPd2qX0bKF/PS+y0W5CrXKgIiELd2CvG1mlQrWK/qlYh3VxicqG1ZvgA==", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "@types/d3-selection": "*" } }, - "node_modules/@storybook/vue/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/@types/d3-zoom": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.2.tgz", + "integrity": "sha512-t09DDJVBI6AkM7N8kuPsnq/3d/ehtRKBN1xSiYjjMCgbiw6HM6Ged5VhvswmhprfKyGvzeTEL/4WBaK9llWvlA==", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" } }, - "node_modules/@stylelint/postcss-css-in-js": { - "version": "0.37.3", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.3.tgz", - "integrity": "sha512-scLk3cSH1H9KggSniseb2KNAU5D9FWc3H7BxCSAIdtU9OWIyw0zkEZ9qEKHryRM+SExYXRKNb7tOOVNAsQ3iwg==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, "dependencies": { - "@babel/core": "^7.17.9" - }, - "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" + "@types/ms": "*" } }, - "node_modules/@stylelint/postcss-markdown": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", - "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", - "deprecated": "Use the original unforked package instead: postcss-markdown", + "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.2", + "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.2.tgz", + "integrity": "sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g==", + "dev": true + }, + "node_modules/@types/emscripten": { + "version": "1.39.13", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.13.tgz", + "integrity": "sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", "dev": true, + "peer": true, "dependencies": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" - }, - "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/@tanstack/match-sorter-utils": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.19.4.tgz", - "integrity": "sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==", + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "peer": true, "dependencies": { - "remove-accents": "0.5.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/@tanstack/query-core": { - "version": "5.62.7", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.7.tgz", - "integrity": "sha512-fgpfmwatsrUal6V+8EC2cxZIQVl9xvL7qYa03gsdsCy985UTUlS4N+/3hCzwR0PclYDqisca2AqR1BVgJGpUDA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } + "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/@tanstack/vue-query": { - "version": "5.62.7", - "resolved": "https://registry.npmjs.org/@tanstack/vue-query/-/vue-query-5.62.7.tgz", - "integrity": "sha512-FVSnVw2fw9BHciCbWWSfPMB3PRtGHbGf4Q1Gq7mFlieojiKZBF5Nz5AKFQLKs+IGnrVDTKqfU8ojjPfthPTYxQ==", + "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": { - "@tanstack/match-sorter-utils": "^8.19.4", - "@tanstack/query-core": "5.62.7", - "@vue/devtools-api": "^6.6.3", - "vue-demi": "^0.14.10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "@vue/composition-api": "^1.1.2", - "vue": "^2.6.0 || ^3.3.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/@testing-library/dom": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", - "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", + "node_modules/@types/express-serve-static-core": { + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, - "engines": { - "node": ">=14" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/@testing-library/dom/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/@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/@testing-library/dom/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/@types/fs-extra": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.2.tgz", + "integrity": "sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "@types/node": "*" } }, - "node_modules/@testing-library/user-event": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.3.0.tgz", - "integrity": "sha512-P02xtBBa8yMaLhK8CzJCIns8rqwnF6FxhR9zs810flHOBXUYCFjLd8Io1rQrAkQRWEmW2PGdZIEdMxf/KLsqFA==", + "node_modules/@types/geojson": { + "version": "7946.0.10", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", + "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==" + }, + "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, - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" + "dependencies": { + "@types/node": "*" } }, - "node_modules/@tiptap/core": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.10.2.tgz", - "integrity": "sha512-jYLXbYHTi1stLla/74J8NJizDtcJ/uokhG+1gN4DMWHDujaZOrRZhW98o9gN5BYAp4zv//TVX8H+afLZwKGCKQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/pm": "^2.7.0" - } + "node_modules/@types/hammerjs": { + "version": "2.0.41", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", + "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==" }, - "node_modules/@tiptap/extension-blockquote": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.0.3.tgz", - "integrity": "sha512-rkUcFv2iL6f86DBBHoa4XdKNG2StvkJ7tfY9GoMpT46k3nxOaMTqak9/qZOo79TWxMLYtXzoxtKIkmWsbbcj4A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.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/@tiptap/extension-bold": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.0.3.tgz", - "integrity": "sha512-OGT62fMRovSSayjehumygFWTg2Qn0IDbqyMpigg/RUAsnoOI2yBZFVrdM2gk1StyoSay7gTn2MLw97IUfr7FXg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true }, - "node_modules/@tiptap/extension-bubble-menu": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.0.3.tgz", - "integrity": "sha512-lPt1ELrYCuoQrQEUukqjp9xt38EwgPUwaKHI3wwt2Rbv+C6q1gmRsK1yeO/KqCNmFxNqF2p9ZF9srOnug/RZDQ==", + "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": { - "tippy.js": "^6.3.7" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/@tiptap/extension-bullet-list": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.0.3.tgz", - "integrity": "sha512-RtaLiRvZbMTOje+FW5bn+mYogiIgNxOm065wmyLPypnTbLSeHeYkoqVSqzZeqUn+7GLnwgn1shirUe6csVE/BA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" + "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/@tiptap/extension-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.0.3.tgz", - "integrity": "sha512-LsVCKVxgBtkstAr1FjxN8T3OjlC76a2X8ouoZpELMp+aXbjqyanCKzt+sjjUhE4H0yLFd4v+5v6UFoCv4EILiw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } + "node_modules/@types/js-yaml": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.1.tgz", + "integrity": "sha512-xdOvNmXmrZqqPy3kuCQ+fz6wA0xU5pji9cd1nDrflWaAWtYLLGk5ykW0H6yg5TVyehHP1pfmuuSaZkhP+kspVA==", + "dev": true }, - "node_modules/@tiptap/extension-code-block": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.0.3.tgz", - "integrity": "sha512-F4xMy18EwgpyY9f5Te7UuF7UwxRLptOtCq1p2c2DfxBvHDWhAjQqVqcW/sq/I/WuED7FwCnPLyyAasPiVPkLPw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true }, - "node_modules/@tiptap/extension-color": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-color/-/extension-color-2.0.3.tgz", - "integrity": "sha512-LYj3CWahhuJOy4/bwOur+cob8eky7xx7wyyBFIYELuzLcZt9hBmZwXxinQzD7BaQv4YdT+3oqr8BhChuPNj52w==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/extension-text-style": "^2.0.0" - } + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true }, - "node_modules/@tiptap/extension-document": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.0.3.tgz", - "integrity": "sha512-PsYeNQQBYIU9ayz1R11Kv/kKNPFNIV8tApJ9pxelXjzcAhkjncNUazPN/dyho60mzo+WpsmS3ceTj/gK3bCtWA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } + "node_modules/@types/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==" }, - "node_modules/@tiptap/extension-dropcursor": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.0.3.tgz", - "integrity": "sha512-McthMrfusn6PjcaynJLheZJcXto8TaIW5iVitYh8qQrDXr31MALC/5GvWuiswmQ8bAXiWPwlLDYE/OJfwtggaw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } + "node_modules/@types/lodash": { + "version": "4.14.192", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.192.tgz", + "integrity": "sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==", + "dev": true }, - "node_modules/@tiptap/extension-floating-menu": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.0.3.tgz", - "integrity": "sha512-zN1vRGRvyK3pO2aHRmQSOTpl4UJraXYwKYM009n6WviYKUNm0LPGo+VD4OAtdzUhPXyccnlsTv2p6LIqFty6Bg==", + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", "dependencies": { - "tippy.js": "^6.3.7" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" + "@types/linkify-it": "^5", + "@types/mdurl": "^2" } }, - "node_modules/@tiptap/extension-gapcursor": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.0.3.tgz", - "integrity": "sha512-6I9EzzsYOyyqDvDvxIK6Rv3EXB+fHKFj8ntHO8IXmeNJ6pkhOinuXVsW6Yo7TcDYoTj4D5I2MNFAW2rIkgassw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } + "node_modules/@types/markdown-it/node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==" }, - "node_modules/@tiptap/extension-hard-break": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.0.3.tgz", - "integrity": "sha512-RCln6ARn16jvKTjhkcAD5KzYXYS0xRMc0/LrHeV8TKdCd4Yd0YYHe0PU4F9gAgAfPQn7Dgt4uTVJLN11ICl8sQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" + "node_modules/@types/mdast": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz", + "integrity": "sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==", + "dev": true, + "dependencies": { + "@types/unist": "*" } }, - "node_modules/@tiptap/extension-heading": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.0.3.tgz", - "integrity": "sha512-f0IEv5ms6aCzL80WeZ1qLCXTkRVwbpRr1qAETjg3gG4eoJN18+lZNOJYpyZy3P92C5KwF2T3Av00eFyVLIbb8Q==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==" }, - "node_modules/@tiptap/extension-history": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.0.3.tgz", - "integrity": "sha512-00KHIcJ8kivn2ARI6NQYphv2LfllVCXViHGm0EhzDW6NQxCrriJKE3tKDcTFCu7LlC5doMpq9Z6KXdljc4oVeQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "dev": true }, - "node_modules/@tiptap/extension-horizontal-rule": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.0.3.tgz", - "integrity": "sha512-SZRUSh07b/M0kJHNKnfBwBMWrZBEm/E2LrK1NbluwT3DBhE+gvwiEdBxgB32zKHNxaDEXUJwUIPNC3JSbKvPUA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } + "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/@tiptap/extension-italic": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.0.3.tgz", - "integrity": "sha512-cfS5sW0gu7qf4ihwnLtW/QMTBrBEXaT0sJl3RwkhjIBg/65ywJKE5Nz9ewnQHmDeT18hvMJJ1VIb4j4ze9jj9A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } + "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/@tiptap/extension-link": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.0.3.tgz", - "integrity": "sha512-H72tXQ5rkVCkAhFaf08fbEU7EBUCK0uocsqOF+4th9sOlrhfgyJtc8Jv5EXPDpxNgG5jixSqWBo0zKXQm9s9eg==", - "dependencies": { - "linkifyjs": "^4.1.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0" - } + "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/@tiptap/extension-list-item": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.0.3.tgz", - "integrity": "sha512-p7cUsk0LpM1PfdAuFE8wYBNJ3gvA0UhNGR08Lo++rt9UaCeFLSN1SXRxg97c0oa5+Ski7SrCjIJ5Ynhz0viTjQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "dev": true }, - "node_modules/@tiptap/extension-ordered-list": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.0.3.tgz", - "integrity": "sha512-ZB3MpZh/GEy1zKgw7XDQF4FIwycZWNof1k9WbDZOI063Ch4qHZowhVttH2mTCELuyvTMM/o9a8CS7qMqQB48bw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dev": true }, - "node_modules/@tiptap/extension-paragraph": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.0.3.tgz", - "integrity": "sha512-a+tKtmj4bU3GVCH1NE8VHWnhVexxX5boTVxsHIr4yGG3UoKo1c5AO7YMaeX2W5xB5iIA+BQqOPCDPEAx34dd2A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } + "node_modules/@types/node": { + "version": "18.16.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.1.tgz", + "integrity": "sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==", + "dev": true }, - "node_modules/@tiptap/extension-placeholder": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.10.2.tgz", - "integrity": "sha512-QWzih69SetWYiylQzHsK29dMR8z1ParfcEw05hy3yyWqXE1DiKEot6rOGV1xenMVEA/SNGYYhQia15Bvco95TA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.7.0", - "@tiptap/pm": "^2.7.0" + "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/@tiptap/extension-strike": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.0.3.tgz", - "integrity": "sha512-RO4/EYe2iPD6ifDHORT8fF6O9tfdtnzxLGwZIKZXnEgtweH+MgoqevEzXYdS+54Wraq4TUQGNcsYhe49pv7Rlw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true }, - "node_modules/@tiptap/extension-text": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.0.3.tgz", - "integrity": "sha512-LvzChcTCcPSMNLUjZe/A9SHXWGDHtvk73fR7CBqAeNU0MxhBPEBI03GFQ6RzW3xX0CmDmjpZoDxFMB+hDEtW1A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } + "node_modules/@types/numeral": { + "version": "0.0.26", + "resolved": "https://registry.npmjs.org/@types/numeral/-/numeral-0.0.26.tgz", + "integrity": "sha512-DwCsRqeOWopdEsm5KLTxKVKDSDoj+pzZD1vlwu1GQJ6IF3RhjuleYlRwyRH6MJLGaf3v8wFTnC6wo3yYfz0bnA==", + "dev": true }, - "node_modules/@tiptap/extension-text-align": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text-align/-/extension-text-align-2.0.3.tgz", - "integrity": "sha512-VlLgqncKdjMjVjbU60/ALYhFs0wUdjAyvjDXnH1OoM/HuzbILvufPMYz4DUieJIWVJOYUKHQgg4XwBWceAM2Tw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } + "node_modules/@types/pako": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.4.tgz", + "integrity": "sha512-Z+5bJSm28EXBSUJEgx29ioWeEEHUh6TiMkZHDhLwjc9wVFH+ressbkmX6waUZc5R3Gobn4Qu5llGxaoflZ+yhA==" }, - "node_modules/@tiptap/extension-text-style": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-2.0.3.tgz", - "integrity": "sha512-yHIYtZVewSwfBfI6TffnsDRiOuXzytppcCsaDlsZFm8OtLG8v9ioH0ItMoOstmZZBiWJOm8iOy2yWSc4rNQEJw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true }, - "node_modules/@tiptap/extension-underline": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.0.3.tgz", - "integrity": "sha512-oMYa7qib/5wJjpUp79GZEe+E/iyf1oZBsgiG26IspEtVTHZmpn3+Ktud7l43y/hpTeEzFTKOF1/uVbayHtSERg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0" - } + "node_modules/@types/polylabel": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/polylabel/-/polylabel-1.0.5.tgz", + "integrity": "sha512-gnaNmo1OJiYNBFAZMZdqLZ3hKx2ee4ksAzqhKWBxuQ61PmhINHMcvIqsGmyCD1WFKCkwRt9NFhMSmKE6AgYY+w==" }, - "node_modules/@tiptap/pm": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.10.2.tgz", - "integrity": "sha512-jEgC79uvuEl51XxulutUJPSlhkoY0xQc9R/G4MQltAi+JxJ+KE/pOxgqziWNxBpgUzQqloupjod0kLhLUL4Cig==", - "peer": true, - "dependencies": { - "prosemirror-changeset": "^2.2.1", - "prosemirror-collab": "^1.3.1", - "prosemirror-commands": "^1.6.2", - "prosemirror-dropcursor": "^1.8.1", - "prosemirror-gapcursor": "^1.3.2", - "prosemirror-history": "^1.4.1", - "prosemirror-inputrules": "^1.4.0", - "prosemirror-keymap": "^1.2.2", - "prosemirror-markdown": "^1.13.1", - "prosemirror-menu": "^1.2.4", - "prosemirror-model": "^1.23.0", - "prosemirror-schema-basic": "^1.2.3", - "prosemirror-schema-list": "^1.4.1", - "prosemirror-state": "^1.4.3", - "prosemirror-tables": "^1.6.1", - "prosemirror-trailing-node": "^3.0.0", - "prosemirror-transform": "^1.10.2", - "prosemirror-view": "^1.36.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - } + "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/@tiptap/starter-kit": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.0.3.tgz", - "integrity": "sha512-t4WG4w93zTpL2VxhVyJJvl3kdLF001ZrhpOuEiZqEMBMUMbM56Uiigv1CnUQpTFrjDAh3IM8hkqzAh20TYw2iQ==", - "dependencies": { - "@tiptap/core": "^2.0.3", - "@tiptap/extension-blockquote": "^2.0.3", - "@tiptap/extension-bold": "^2.0.3", - "@tiptap/extension-bullet-list": "^2.0.3", - "@tiptap/extension-code": "^2.0.3", - "@tiptap/extension-code-block": "^2.0.3", - "@tiptap/extension-document": "^2.0.3", - "@tiptap/extension-dropcursor": "^2.0.3", - "@tiptap/extension-gapcursor": "^2.0.3", - "@tiptap/extension-hard-break": "^2.0.3", - "@tiptap/extension-heading": "^2.0.3", - "@tiptap/extension-history": "^2.0.3", - "@tiptap/extension-horizontal-rule": "^2.0.3", - "@tiptap/extension-italic": "^2.0.3", - "@tiptap/extension-list-item": "^2.0.3", - "@tiptap/extension-ordered-list": "^2.0.3", - "@tiptap/extension-paragraph": "^2.0.3", - "@tiptap/extension-strike": "^2.0.3", - "@tiptap/extension-text": "^2.0.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - } + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true }, - "node_modules/@tiptap/vue-2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@tiptap/vue-2/-/vue-2-2.0.3.tgz", - "integrity": "sha512-So2cl/W11Xt1MQqK47uNrddf08ruI2ScGHaBG2WZnYDtqJfwlAChRXi67fOeo/Y1vWy/69ekv5kLeQYWw9YJAg==", - "dependencies": { - "@tiptap/extension-bubble-menu": "^2.0.3", - "@tiptap/extension-floating-menu": "^2.0.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/ueberdosis" - }, - "peerDependencies": { - "@tiptap/core": "^2.0.0", - "@tiptap/pm": "^2.0.0", - "vue": "^2.6.0" - } + "node_modules/@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "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/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "node_modules/@types/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.0.tgz", + "integrity": "sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==", "dev": true, "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" } }, - "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/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "dev": true }, - "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==", + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "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": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@types/mime": "^1", + "@types/node": "*" } }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "dependencies": { - "@babel/types": "^7.20.7" + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" } }, - "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==", + "node_modules/@types/svg-arc-to-cubic-bezier": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz", + "integrity": "sha512-3h04sJhF2rjOq8zUhyomORyKdr0RUts7FAz/JajBKGpTF0JSXjaj9fjWtAqj+pU1fwsGsHzcm3Neew3t/McUXA==" + }, + "node_modules/@types/tern": { + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", + "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", "dev": true, "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "@types/estree": "*" } }, - "node_modules/@types/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-lOGyCnw+2JVPKU3wIV0srU0NyALwTBJlVSx5DfMQOFuuohA8y9S8orImpuIQikZ0uIQ8gehrRjxgQC1rLRi11w==", + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", "dev": true }, - "node_modules/@types/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", + "node_modules/@types/uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==", "dev": true }, - "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "node_modules/@types/web-bluetooth": { + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.14.tgz", + "integrity": "sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==" + }, + "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/chai": "*" + "@types/yargs-parser": "*" } }, - "node_modules/@types/codemirror": { - "version": "0.0.109", - "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.109.tgz", - "integrity": "sha512-cSdiHeeLjvGn649lRTNeYrVCDOgDrtP+bDDSFDd1TF+i0jKGPDRozno2NOJ9lTniso+taiv4kiVS8dgM8Jm5lg==", + "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/@typescript-eslint/eslint-plugin": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.41.0.tgz", + "integrity": "sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==", "dev": true, "dependencies": { - "@types/tern": "*" + "@typescript-eslint/scope-manager": "5.41.0", + "@typescript-eslint/type-utils": "5.41.0", + "@typescript-eslint/utils": "5.41.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@types/color": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.1.tgz", - "integrity": "sha512-oeUWVaAwI+xINDUx+3F2vJkl/vVB03VChFF/Gl3iQCdbcakjuoJyMOba+3BXRtnBhxZ7uBYqQBi9EpLnvSoztA==", + "node_modules/@typescript-eslint/eslint-plugin/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": { - "@types/color-convert": "*" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@types/color-convert": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/color-convert/-/color-convert-2.0.0.tgz", - "integrity": "sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ==", + "node_modules/@typescript-eslint/eslint-plugin/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": { - "@types/color-name": "*" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "node_modules/@typescript-eslint/eslint-plugin/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/@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/d3": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz", - "integrity": "sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==", - "dependencies": { - "@types/d3-array": "*", - "@types/d3-axis": "*", - "@types/d3-brush": "*", - "@types/d3-chord": "*", - "@types/d3-color": "*", - "@types/d3-contour": "*", - "@types/d3-delaunay": "*", - "@types/d3-dispatch": "*", - "@types/d3-drag": "*", - "@types/d3-dsv": "*", - "@types/d3-ease": "*", - "@types/d3-fetch": "*", - "@types/d3-force": "*", - "@types/d3-format": "*", - "@types/d3-geo": "*", - "@types/d3-hierarchy": "*", - "@types/d3-interpolate": "*", - "@types/d3-path": "*", - "@types/d3-polygon": "*", - "@types/d3-quadtree": "*", - "@types/d3-random": "*", - "@types/d3-scale": "*", - "@types/d3-scale-chromatic": "*", - "@types/d3-selection": "*", - "@types/d3-shape": "*", - "@types/d3-time": "*", - "@types/d3-time-format": "*", - "@types/d3-timer": "*", - "@types/d3-transition": "*", - "@types/d3-zoom": "*" - } - }, - "node_modules/@types/d3-array": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.4.tgz", - "integrity": "sha512-nwvEkG9vYOc0Ic7G7kwgviY4AQlTfYGIZ0fqB7CQHXGyYM6nO7kJh5EguSNA3jfh4rq7Sb7eMVq8isuvg2/miQ==" - }, - "node_modules/@types/d3-axis": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.2.tgz", - "integrity": "sha512-uGC7DBh0TZrU/LY43Fd8Qr+2ja1FKmH07q2FoZFHo1eYl8aj87GhfVoY1saJVJiq24rp1+wpI6BvQJMKgQm8oA==", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-brush": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.2.tgz", - "integrity": "sha512-2TEm8KzUG3N7z0TrSKPmbxByBx54M+S9lHoP2J55QuLU0VSQ9mE96EJSAOVNEqd1bbynMjeTS9VHmz8/bSw8rA==", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-chord": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.2.tgz", - "integrity": "sha512-abT/iLHD3sGZwqMTX1TYCMEulr+wBd0SzyOQnjYNLp7sngdOHYtNkMRI5v3w5thoN+BWtlHVDx2Osvq6fxhZWw==" - }, - "node_modules/@types/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==" - }, - "node_modules/@types/d3-contour": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.2.tgz", - "integrity": "sha512-k6/bGDoAGJZnZWaKzeB+9glgXCYGvh6YlluxzBREiVo8f/X2vpTEdgPy9DN7Z2i42PZOZ4JDhVdlTSTSkLDPlQ==", - "dependencies": { - "@types/d3-array": "*", - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-delaunay": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz", - "integrity": "sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==" - }, - "node_modules/@types/d3-dispatch": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.2.tgz", - "integrity": "sha512-rxN6sHUXEZYCKV05MEh4z4WpPSqIw+aP7n9ZN6WYAAvZoEAghEK1WeVZMZcHRBwyaKflU43PCUAJNjFxCzPDjg==" - }, - "node_modules/@types/d3-drag": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.2.tgz", - "integrity": "sha512-qmODKEDvyKWVHcWWCOVcuVcOwikLVsyc4q4EBJMREsoQnR2Qoc2cZQUyFUPgO9q4S3qdSqJKBsuefv+h0Qy+tw==", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-76pBHCMTvPLt44wFOieouXcGXWOF0AJCceUvaFkxSZEu4VDUdv93JfpMa6VGNFs01FHfuP4a5Ou68eRG1KBfTw==" - }, - "node_modules/@types/d3-ease": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", - "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==" - }, - "node_modules/@types/d3-fetch": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.2.tgz", - "integrity": "sha512-gllwYWozWfbep16N9fByNBDTkJW/SyhH6SGRlXloR7WdtAaBui4plTP+gbUgiEot7vGw/ZZop1yDZlgXXSuzjA==", - "dependencies": { - "@types/d3-dsv": "*" - } - }, - "node_modules/@types/d3-force": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.4.tgz", - "integrity": "sha512-q7xbVLrWcXvSBBEoadowIUJ7sRpS1yvgMWnzHJggFy5cUZBq2HZL5k/pBSm0GdYWS1vs5/EDwMjSKF55PDY4Aw==" - }, - "node_modules/@types/d3-format": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.1.tgz", - "integrity": "sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==" - }, - "node_modules/@types/d3-geo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.3.tgz", - "integrity": "sha512-bK9uZJS3vuDCNeeXQ4z3u0E7OeJZXjUgzFdSOtNtMCJCLvDtWDwfpRVWlyt3y8EvRzI0ccOu9xlMVirawolSCw==", - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-9hjRTVoZjRFR6xo8igAJyNXQyPX6Aq++Nhb5ebrUF414dv4jr2MitM2fWiOY475wa3Za7TOS2Gh9fmqEhLTt0A==" - }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", - "dependencies": { - "@types/d3-color": "*" - } - }, - "node_modules/@types/d3-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", - "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==" - }, - "node_modules/@types/d3-polygon": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.0.tgz", - "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==" - }, - "node_modules/@types/d3-quadtree": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz", - "integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==" - }, - "node_modules/@types/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==" - }, - "node_modules/@types/d3-sankey": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/@types/d3-sankey/-/d3-sankey-0.11.2.tgz", - "integrity": "sha512-U6SrTWUERSlOhnpSrgvMX64WblX1AxX6nEjI2t3mLK2USpQrnbwYYK+AS9SwiE7wgYmOsSSKoSdr8aoKBH0HgQ==", - "dependencies": { - "@types/d3-shape": "^1" - } - }, - "node_modules/@types/d3-sankey/node_modules/@types/d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-NaIeSIBiFgSC6IGUBjZWcscUJEq7vpVu7KthHN8eieTV9d9MqkSOZLH4chq1PmcKy06PNe3axLeKmRIyxJ+PZQ==" - }, - "node_modules/@types/d3-sankey/node_modules/@types/d3-shape": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-1.3.8.tgz", - "integrity": "sha512-gqfnMz6Fd5H6GOLYixOZP/xlrMtJms9BaS+6oWxTKHNqPGZ93BkWWupQSCYm6YHqx6h9wjRupuJb90bun6ZaYg==", - "dependencies": { - "@types/d3-path": "^1" - } - }, - "node_modules/@types/d3-scale": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.3.tgz", - "integrity": "sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==", - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==" - }, - "node_modules/@types/d3-selection": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.5.tgz", - "integrity": "sha512-xCB0z3Hi8eFIqyja3vW8iV01+OHGYR2di/+e+AiOcXIOrY82lcvWW8Ke1DYE/EUVMsBl4Db9RppSBS3X1U6J0w==" - }, - "node_modules/@types/d3-shape": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.1.tgz", - "integrity": "sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==", - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" - }, - "node_modules/@types/d3-time-format": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.0.tgz", - "integrity": "sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==" - }, - "node_modules/@types/d3-timer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", - "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==" - }, - "node_modules/@types/d3-transition": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.3.tgz", - "integrity": "sha512-/S90Od8Id1wgQNvIA8iFv9jRhCiZcGhPd2qX0bKF/PS+y0W5CrXKgIiELd2CvG1mlQrWK/qlYh3VxicqG1ZvgA==", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-zoom": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.2.tgz", - "integrity": "sha512-t09DDJVBI6AkM7N8kuPsnq/3d/ehtRKBN1xSiYjjMCgbiw6HM6Ged5VhvswmhprfKyGvzeTEL/4WBaK9llWvlA==", - "dependencies": { - "@types/d3-interpolate": "*", - "@types/d3-selection": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dev": true, - "dependencies": { - "@types/ms": "*" - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.2.tgz", - "integrity": "sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g==", - "dev": true - }, - "node_modules/@types/emscripten": { - "version": "1.39.13", - "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.13.tgz", - "integrity": "sha512-cFq+fO/isvhvmuP/+Sl4K4jtU6E23DoivtbO4r50e3odaxAiVdbfSYRDdJ4gCdxx+3aRjhphS5ZMwIH4hFy/Cw==", - "dev": true - }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "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/@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.19.5", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", - "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", - "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/fs-extra": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.2.tgz", - "integrity": "sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/geojson": { - "version": "7946.0.10", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", - "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==" - }, - "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/hammerjs": { - "version": "2.0.41", - "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", - "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==" - }, - "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.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "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/js-yaml": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.1.tgz", - "integrity": "sha512-xdOvNmXmrZqqPy3kuCQ+fz6wA0xU5pji9cd1nDrflWaAWtYLLGk5ykW0H6yg5TVyehHP1pfmuuSaZkhP+kspVA==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/linkify-it": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==" - }, - "node_modules/@types/lodash": { - "version": "4.14.192", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.192.tgz", - "integrity": "sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==", - "dev": true - }, - "node_modules/@types/markdown-it": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", - "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", - "dependencies": { - "@types/linkify-it": "^5", - "@types/mdurl": "^2" - } - }, - "node_modules/@types/markdown-it/node_modules/@types/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==" - }, - "node_modules/@types/mdast": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz", - "integrity": "sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==" - }, - "node_modules/@types/mdx": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", - "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", - "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/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true - }, - "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.16.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.1.tgz", - "integrity": "sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==", - "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.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/numeral": { - "version": "0.0.26", - "resolved": "https://registry.npmjs.org/@types/numeral/-/numeral-0.0.26.tgz", - "integrity": "sha512-DwCsRqeOWopdEsm5KLTxKVKDSDoj+pzZD1vlwu1GQJ6IF3RhjuleYlRwyRH6MJLGaf3v8wFTnC6wo3yYfz0bnA==", - "dev": true - }, - "node_modules/@types/pako": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.4.tgz", - "integrity": "sha512-Z+5bJSm28EXBSUJEgx29ioWeEEHUh6TiMkZHDhLwjc9wVFH+ressbkmX6waUZc5R3Gobn4Qu5llGxaoflZ+yhA==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/polylabel": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/polylabel/-/polylabel-1.0.5.tgz", - "integrity": "sha512-gnaNmo1OJiYNBFAZMZdqLZ3hKx2ee4ksAzqhKWBxuQ61PmhINHMcvIqsGmyCD1WFKCkwRt9NFhMSmKE6AgYY+w==" - }, - "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.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" - }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "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.2.0", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.0.tgz", - "integrity": "sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "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.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "dev": true, - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, - "node_modules/@types/svg-arc-to-cubic-bezier": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@types/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz", - "integrity": "sha512-3h04sJhF2rjOq8zUhyomORyKdr0RUts7FAz/JajBKGpTF0JSXjaj9fjWtAqj+pU1fwsGsHzcm3Neew3t/McUXA==" - }, - "node_modules/@types/tern": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz", - "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" - }, - "node_modules/@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true - }, - "node_modules/@types/uuid": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==", - "dev": true - }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.14.tgz", - "integrity": "sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==" - }, - "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/@typescript-eslint/eslint-plugin": { - "version": "5.41.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.41.0.tgz", - "integrity": "sha512-DXUS22Y57/LAFSg3x7Vi6RNAuLpTXwxB9S2nIA7msBb/Zt8p7XqMwdpdc1IU7CkOQUPgAqR5fWvxuKCbneKGmA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.41.0", - "@typescript-eslint/type-utils": "5.41.0", - "@typescript-eslint/utils": "5.41.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/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/@typescript-eslint/eslint-plugin/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/@typescript-eslint/eslint-plugin/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/@typescript-eslint/parser": { - "version": "5.41.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.41.0.tgz", - "integrity": "sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==", + "node_modules/@typescript-eslint/parser": { + "version": "5.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.41.0.tgz", + "integrity": "sha512-HQVfix4+RL5YRWZboMD1pUfFN8MpRH4laziWkkAzyO1fvNOY/uinZcvo3QiFJVS/siNHupV8E5+xSwQZrl6PZA==", "dev": true, "dependencies": { "@typescript-eslint/scope-manager": "5.41.0", @@ -11487,20 +10049,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/pretty-format": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.2.tgz", - "integrity": "sha512-SBCyOXfGVvddRd9r2PwoVR0fonQjh9BMIcBMlSzbcNwFfGr6ZhOhvBzurjvi2F4ryut2HcqiFhNeDVGwru8tLg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, "node_modules/@vitest/runner": { "version": "0.34.5", "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.5.tgz", @@ -12485,6 +11033,7 @@ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, + "peer": true, "dependencies": { "deep-equal": "^2.0.5" } @@ -12494,6 +11043,7 @@ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", "dev": true, + "peer": true, "dependencies": { "call-bind": "^1.0.2", "es-get-iterator": "^1.1.2", @@ -15184,12 +13734,6 @@ "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", "dev": true }, - "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/cssdb": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", @@ -16256,12 +14800,6 @@ "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", "dev": true }, - "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true - }, "node_modules/dom-event-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.1.0.tgz", @@ -16634,6 +15172,7 @@ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", "dev": true, + "peer": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -16821,6 +15360,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=12" } @@ -16837,6 +15377,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=12" } @@ -16853,6 +15394,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=12" } @@ -16869,6 +15411,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=12" } @@ -16885,6 +15428,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -16901,6 +15445,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -16917,6 +15462,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -16933,6 +15479,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -16949,6 +15496,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -16965,6 +15513,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -16981,6 +15530,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -16997,6 +15547,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -17013,6 +15564,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -17029,6 +15581,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=12" } @@ -17045,6 +15598,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -17061,6 +15615,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=12" } @@ -17095,6 +15650,7 @@ "os": [ "sunos" ], + "peer": true, "engines": { "node": ">=12" } @@ -17111,6 +15667,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=12" } @@ -17127,6 +15684,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=12" } @@ -17143,6 +15701,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=12" } @@ -18420,14 +16979,6 @@ "integrity": "sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==", "dev": true }, - "node_modules/fflate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -20312,6 +18863,7 @@ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true, + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -20463,6 +19015,7 @@ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true, + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -20570,6 +19123,7 @@ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true, + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -20590,6 +19144,7 @@ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", "dev": true, + "peer": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -21986,15 +20541,6 @@ "yallist": "^3.0.2" } }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, - "bin": { - "lz-string": "bin/bin.js" - } - }, "node_modules/magic-string": { "version": "0.25.1", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", @@ -23926,6 +22472,14 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/mirinae-foundation": { + "resolved": "packages/mirinae-foundation", + "link": true + }, + "node_modules/mirinae-storybook": { + "resolved": "apps/mirinae-storybook", + "link": true + }, "node_modules/mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -28738,12 +27292,6 @@ "react": "^18.3.1" } }, - "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/react-remove-scroll": { "version": "2.5.5", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", @@ -31154,6 +29702,7 @@ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", "dev": true, + "peer": true, "dependencies": { "internal-slot": "^1.0.4" }, @@ -31168,7 +29717,24 @@ "dev": true }, "node_modules/storybook": { - "resolved": "apps/storybook", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.20.tgz", + "integrity": "sha512-Wt04pPTO71pwmRmsgkyZhNo4Bvdb/1pBAMsIFb9nQLykEdzzpXjvingxFFvdOG4nIowzwgxD+CLlyRqVJqnATw==", + "dev": true, + "dependencies": { + "@storybook/cli": "7.6.20" + }, + "bin": { + "sb": "index.js", + "storybook": "index.js" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/storybook-config-custom": { + "resolved": "packages/storybook-config-custom", "link": true }, "node_modules/stream-combiner": { @@ -32529,17 +31095,6 @@ "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" }, - "node_modules/tinyrainbow": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", - "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/tinyspy": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.1.1.tgz", @@ -34784,6 +33339,10 @@ "resolved": "apps/web", "link": true }, + "node_modules/web-storybook": { + "resolved": "apps/web-storybook", + "link": true + }, "node_modules/webfontloader": { "version": "1.6.28", "resolved": "https://registry.npmjs.org/webfontloader/-/webfontloader-1.6.28.tgz", @@ -35031,6 +33590,7 @@ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", "dev": true, + "peer": true, "dependencies": { "is-map": "^2.0.1", "is-set": "^2.0.1", @@ -35456,6 +34016,7 @@ "@vue/test-utils": "^1.3.3", "concurrently": "^7.6.0", "eslint-config-custom": "*", + "mirinae-foundation": "*", "postcss-config-custom": "*", "resolve-url-loader": "^3.1.5", "rollup-plugin-copy": "^3.4.0", @@ -35471,6 +34032,7 @@ "vue-tsc": "^1.2.0" } }, + "packages/mirinae-foundation": {}, "packages/mirinae/node_modules/@esbuild/android-arm": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", @@ -36181,6 +34743,7 @@ "version": "1.12.0-dev11", "devDependencies": { "autoprefixer": "^10.4.20", + "mirinae-foundation": "*", "postcss-comment": "^2.0.0", "postcss-conditionals": "^2.1.0", "postcss-easy-import": "^3.0.0", @@ -36344,6 +34907,33 @@ "tailwindcss": "^1.9.6" } }, + "packages/storybook-config-custom": { + "version": "1.0.0", + "devDependencies": { + "@rollup/plugin-commonjs": "^26.0.1", + "@storybook/addon-a11y": "^7.6.10", + "@storybook/addon-designs": "^7.0.9", + "@storybook/addon-essentials": "^7.6.10", + "@storybook/addon-interactions": "^7.6.10", + "@storybook/addon-links": "^7.6.10", + "@storybook/addon-mdx-gfm": "^7.6.10", + "@storybook/addon-storysource": "^7.6.10", + "@storybook/blocks": "^7.6.10", + "@storybook/manager-api": "^7.6.10", + "@storybook/vue": "^7.6.10", + "@storybook/vue-vite": "^7.6.10", + "@vitejs/plugin-vue2": "^2.3.1", + "eslint-config-custom": "*", + "postcss-config-custom": "*", + "storybook": "^7.6.10", + "tsconfig": "*", + "vue-component-type-helpers": "^2.0.26" + }, + "peerDependencies": { + "react": "18.3.1", + "react-dom": "18.3.1" + } + }, "packages/stylelint-config-custom": { "name": "@cloudforet/stylelint-config-custom", "version": "1.12.0-dev11", @@ -36388,12 +34978,6 @@ } }, "dependencies": { - "@adobe/css-tools": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", - "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", - "dev": true - }, "@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -37997,6 +36581,7 @@ "lodash": "^4.17.21", "marked": "^15.0.4", "marked-highlight": "^2.2.1", + "mirinae-foundation": "*", "postcss-config-custom": "*", "resolve-url-loader": "^3.1.5", "rollup-plugin-copy": "^3.4.0", @@ -38788,7 +37373,8 @@ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "@esbuild/linux-mips64el": { "version": "0.18.20", @@ -40112,194 +38698,66 @@ "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, - "glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - } - }, - "magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", - "dev": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.4.15" - } - }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "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 - } - } - }, - "@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" - } - }, - "@rollup/rollup-android-arm-eabi": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz", - "integrity": "sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-android-arm64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz", - "integrity": "sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-darwin-arm64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz", - "integrity": "sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-darwin-x64": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz", - "integrity": "sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz", - "integrity": "sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz", - "integrity": "sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz", - "integrity": "sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-linux-arm64-musl": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz", - "integrity": "sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz", - "integrity": "sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz", - "integrity": "sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz", - "integrity": "sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-linux-x64-gnu": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz", - "integrity": "sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-linux-x64-musl": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz", - "integrity": "sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz", - "integrity": "sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==", - "dev": true, - "optional": true, - "peer": true - }, - "@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz", - "integrity": "sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==", - "dev": true, - "optional": true, - "peer": true + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + } + }, + "magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "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 + } + } }, - "@rollup/rollup-win32-x64-msvc": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz", - "integrity": "sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==", + "@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dev": true, - "optional": true, - "peer": true + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } }, "@scena/dragscroll": { "version": "1.4.0", @@ -40496,6 +38954,17 @@ "ts-dedent": "^2.0.0" } }, + "@storybook/addon-mdx-gfm": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/addon-mdx-gfm/-/addon-mdx-gfm-7.6.20.tgz", + "integrity": "sha512-htfiooRdIYIjdKpxFjJAT+b90iatraI7yfmgF8VmpGTPqjyjGDZccUFCaE7op9S2smLZi4zYYGd+fqA5NtykkQ==", + "dev": true, + "requires": { + "@storybook/node-logger": "7.6.20", + "remark-gfm": "^3.0.1", + "ts-dedent": "^2.0.0" + } + }, "@storybook/addon-measure": { "version": "7.6.20", "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.6.20.tgz", @@ -40950,1142 +39419,473 @@ "@storybook/types": "7.6.20", "@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" - } - }, - "@storybook/components": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.20.tgz", - "integrity": "sha512-0d8u4m558R+W5V+rseF/+e9JnMciADLXTpsILrG+TBhwECk0MctIWW18bkqkujdCm8kDZr5U2iM/5kS1Noy7Ug==", - "dev": true, - "requires": { - "@radix-ui/react-select": "^1.2.2", - "@radix-ui/react-toolbar": "^1.0.4", - "@storybook/client-logger": "7.6.20", - "@storybook/csf": "^0.1.2", - "@storybook/global": "^5.0.0", - "@storybook/theming": "7.6.20", - "@storybook/types": "7.6.20", - "memoizerific": "^1.11.3", - "use-resize-observer": "^9.1.0", - "util-deprecate": "^1.0.2" - } - }, - "@storybook/core-client": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.20.tgz", - "integrity": "sha512-upQuQQinLmlOPKcT8yqXNtwIucZ4E4qegYZXH5HXRWoLAL6GQtW7sUVSIuFogdki8OXRncr/dz8OA+5yQyYS4w==", - "dev": true, - "requires": { - "@storybook/client-logger": "7.6.20", - "@storybook/preview-api": "7.6.20" - } - }, - "@storybook/core-common": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.20.tgz", - "integrity": "sha512-8H1zPWPjcmeD4HbDm4FDD0WLsfAKGVr566IZ4hG+h3iWVW57II9JW9MLBtiR2LPSd8u7o0kw64lwRGmtCO1qAw==", - "dev": true, - "requires": { - "@storybook/core-events": "7.6.20", - "@storybook/node-logger": "7.6.20", - "@storybook/types": "7.6.20", - "@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": { - "@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/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 - }, - "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" - } - }, - "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" - } - }, - "foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, - "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.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - } - }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "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 - } - } - }, - "@storybook/core-events": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.20.tgz", - "integrity": "sha512-tlVDuVbDiNkvPDFAu+0ou3xBBYbx9zUURQz4G9fAq0ScgBOs/bpzcRrFb4mLpemUViBAd47tfZKdH4MAX45KVQ==", - "dev": true, - "requires": { - "ts-dedent": "^2.0.0" - } - }, - "@storybook/core-server": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.6.20.tgz", - "integrity": "sha512-qC5BdbqqwMLTdCwMKZ1Hbc3+3AaxHYWLiJaXL9e8s8nJw89xV8c8l30QpbJOGvcDmsgY6UTtXYaJ96OsTr7MrA==", - "dev": true, - "requires": { - "@aw-web-design/x-default-browser": "1.4.126", - "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.6.20", - "@storybook/channels": "7.6.20", - "@storybook/core-common": "7.6.20", - "@storybook/core-events": "7.6.20", - "@storybook/csf": "^0.1.2", - "@storybook/csf-tools": "7.6.20", - "@storybook/docs-mdx": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/manager": "7.6.20", - "@storybook/node-logger": "7.6.20", - "@storybook/preview-api": "7.6.20", - "@storybook/telemetry": "7.6.20", - "@storybook/types": "7.6.20", - "@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", - "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": { - "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" - } - }, - "semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true - } - } - }, - "@storybook/csf": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz", - "integrity": "sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==", - "dev": true, - "requires": { - "type-fest": "^2.19.0" - }, - "dependencies": { - "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 - } - } - }, - "@storybook/csf-plugin": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.6.20.tgz", - "integrity": "sha512-dzBzq0dN+8WLDp6NxYS4G7BCe8+vDeDRBRjHmM0xb0uJ6xgQViL8SDplYVSGnk3bXE/1WmtvyRzQyTffBnaj9Q==", - "dev": true, - "requires": { - "@storybook/csf-tools": "7.6.20", - "unplugin": "^1.3.1" - } - }, - "@storybook/csf-tools": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.6.20.tgz", - "integrity": "sha512-rwcwzCsAYh/m/WYcxBiEtLpIW5OH1ingxNdF/rK9mtGWhJxXRDV8acPkFrF8rtFWIVKoOCXu5USJYmc3f2gdYQ==", - "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.20", - "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" - } - } - } - }, - "@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.20", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.20.tgz", - "integrity": "sha512-Bw2CcCKQ5xGLQgtexQsI1EGT6y5epoFzOINi0FSTGJ9Wm738nRp5LH3dLk1GZLlywIXcYwOEThb2pM+pZeRQxQ==", - "dev": true, - "requires": { - "@storybook/core-common": "7.6.20", - "@storybook/preview-api": "7.6.20", - "@storybook/types": "7.6.20", - "@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/instrumenter": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-7.6.20.tgz", - "integrity": "sha512-jqRpSEy+4rVXXgixMm7CPapZrTd4WqL0lkxLCzLC3BT6fom5MVUb6BTqWx3agYcsZR2yJjg6bR6CM44QAqknpQ==", - "dev": true, - "requires": { - "@storybook/channels": "7.6.20", - "@storybook/client-logger": "7.6.20", - "@storybook/core-events": "7.6.20", - "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.6.20", - "@vitest/utils": "^0.34.6", - "util": "^0.12.4" - }, - "dependencies": { - "@vitest/utils": { - "version": "0.34.7", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.7.tgz", - "integrity": "sha512-ziAavQLpCYS9sLOorGrFFKmy2gnfiNU0ZJ15TsMz/K92NAPS/rp9K4z6AJQQk5Y8adCy4Iwpxy7pQumQ/psnRg==", - "dev": true, - "requires": { - "diff-sequences": "^29.4.3", - "loupe": "^2.3.6", - "pretty-format": "^29.5.0" - } - } - } - }, - "@storybook/manager": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.20.tgz", - "integrity": "sha512-0Cf6WN0t7yEG2DR29tN5j+i7H/TH5EfPppg9h9/KiQSoFHk+6KLoy2p5do94acFU+Ro4+zzxvdCGbcYGKuArpg==", - "dev": true - }, - "@storybook/manager-api": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.20.tgz", - "integrity": "sha512-gOB3m8hO3gBs9cBoN57T7jU0wNKDh+hi06gLcyd2awARQlAlywnLnr3s1WH5knih6Aq+OpvGBRVKkGLOkaouCQ==", - "dev": true, - "requires": { - "@storybook/channels": "7.6.20", - "@storybook/client-logger": "7.6.20", - "@storybook/core-events": "7.6.20", - "@storybook/csf": "^0.1.2", - "@storybook/global": "^5.0.0", - "@storybook/router": "7.6.20", - "@storybook/theming": "7.6.20", - "@storybook/types": "7.6.20", - "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.20", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.20.tgz", - "integrity": "sha512-l2i4qF1bscJkOplNffcRTsgQWYR7J51ewmizj5YrTM8BK6rslWT1RntgVJWB1RgPqvx6VsCz1gyP3yW1oKxvYw==", - "dev": true - }, - "@storybook/postinstall": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.6.20.tgz", - "integrity": "sha512-AN4WPeNma2xC2/K/wP3I/GMbBUyeSGD3+86ZFFJFO1QmE/Zea6E+1aVlTd1iKHQUcNkZ9bZTrqkhPGVYx10pIw==", - "dev": true - }, - "@storybook/preview": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.6.20.tgz", - "integrity": "sha512-cxYlZ5uKbCYMHoFpgleZqqGWEnqHrk5m5fT8bYSsDsdQ+X5wPcwI/V+v8dxYAdQcMphZVIlTjo6Dno9WG8qmVA==", - "dev": true - }, - "@storybook/preview-api": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.20.tgz", - "integrity": "sha512-3ic2m9LDZEPwZk02wIhNc3n3rNvbi7VDKn52hDXfAxnL5EYm7yDICAkaWcVaTfblru2zn0EDJt7ROpthscTW5w==", - "dev": true, - "requires": { - "@storybook/channels": "7.6.20", - "@storybook/client-logger": "7.6.20", - "@storybook/core-events": "7.6.20", - "@storybook/csf": "^0.1.2", - "@storybook/global": "^5.0.0", - "@storybook/types": "7.6.20", - "@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-dom-shim": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.20.tgz", - "integrity": "sha512-SRvPDr9VWcS24ByQOVmbfZ655y5LvjXRlsF1I6Pr9YZybLfYbu3L5IicfEHT4A8lMdghzgbPFVQaJez46DTrkg==", - "dev": true, - "requires": {} - }, - "@storybook/router": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.20.tgz", - "integrity": "sha512-mCzsWe6GrH47Xb1++foL98Zdek7uM5GhaSlrI7blWVohGa0qIUYbfJngqR4ZsrXmJeeEvqowobh+jlxg3IJh+w==", - "dev": true, - "requires": { - "@storybook/client-logger": "7.6.20", - "memoizerific": "^1.11.3", - "qs": "^6.10.0" + "globby": "^11.0.2", + "jscodeshift": "^0.15.1", + "lodash": "^4.17.21", + "prettier": "^2.8.0", + "recast": "^0.23.1" } }, - "@storybook/source-loader": { + "@storybook/components": { "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-7.6.20.tgz", - "integrity": "sha512-AlOX5w95tajmZEsEcbYCtwtpKYW0xLV2hRzk2MZfc6XUXC9/n2jwhz1X4EKilwKGCWFUj/HAYbNc2XChS9juvg==", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.20.tgz", + "integrity": "sha512-0d8u4m558R+W5V+rseF/+e9JnMciADLXTpsILrG+TBhwECk0MctIWW18bkqkujdCm8kDZr5U2iM/5kS1Noy7Ug==", "dev": true, "requires": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.6.20", "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.6.20", "@storybook/types": "7.6.20", - "estraverse": "^5.2.0", - "lodash": "^4.17.21", - "prettier": "^2.8.0" + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" } }, - "@storybook/telemetry": { + "@storybook/core-client": { "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.6.20.tgz", - "integrity": "sha512-dmAOCWmOscYN6aMbhCMmszQjoycg7tUPRVy2kTaWg6qX10wtMrvEtBV29W4eMvqdsoRj5kcvoNbzRdYcWBUOHQ==", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.20.tgz", + "integrity": "sha512-upQuQQinLmlOPKcT8yqXNtwIucZ4E4qegYZXH5HXRWoLAL6GQtW7sUVSIuFogdki8OXRncr/dz8OA+5yQyYS4w==", "dev": true, "requires": { "@storybook/client-logger": "7.6.20", - "@storybook/core-common": "7.6.20", - "@storybook/csf-tools": "7.6.20", - "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": { - "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" - } - } + "@storybook/preview-api": "7.6.20" } }, - "@storybook/test": { + "@storybook/core-common": { "version": "7.6.20", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-7.6.20.tgz", - "integrity": "sha512-OPySH/vi42K7t29lFrC/uaOB1S+eO62+/Gk8IX2IvWo1kQIYk59b9fLFMOGE0kX1NRbFhDqUZJxwHVnIIoLn4A==", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.20.tgz", + "integrity": "sha512-8H1zPWPjcmeD4HbDm4FDD0WLsfAKGVr566IZ4hG+h3iWVW57II9JW9MLBtiR2LPSd8u7o0kw64lwRGmtCO1qAw==", "dev": true, "requires": { - "@storybook/client-logger": "7.6.20", "@storybook/core-events": "7.6.20", - "@storybook/instrumenter": "7.6.20", - "@storybook/preview-api": "7.6.20", - "@testing-library/dom": "^9.3.1", - "@testing-library/jest-dom": "^6.1.3", - "@testing-library/user-event": "14.3.0", - "@types/chai": "^4", - "@vitest/expect": "^0.34.2", - "@vitest/spy": "^0.34.1", - "chai": "^4.3.7", - "util": "^0.12.4" + "@storybook/node-logger": "7.6.20", + "@storybook/types": "7.6.20", + "@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": { "@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "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, - "peer": true + "optional": true }, "@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "dev": true, - "optional": true, - "peer": true - }, - "@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "dev": true, - "optional": true, - "peer": true - }, - "@testing-library/jest-dom": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.6.tgz", - "integrity": "sha512-8qpnGVincVDLEcQXWaHOf6zmlbwTKc6Us6PPu4CRnPXCzo2OGBS5cwgMMOWdxDpEz1mkbvXHpEy99M5Yvt682w==", - "dev": true, - "requires": { - "@adobe/css-tools": "^4.4.0", - "@babel/runtime": "^7.9.2", - "aria-query": "^5.0.0", - "chalk": "^3.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.6.3", - "lodash": "^4.17.21", - "redent": "^3.0.0" - } - }, - "@vitest/runner": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.0.2.tgz", - "integrity": "sha512-OCh437Vi8Wdbif1e0OvQcbfM3sW4s2lpmOjAE7qfLrpzJX2M7J1IQlNvEcb/fu6kaIB9n9n35wS0G2Q3en5kHg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@vitest/utils": "2.0.2", - "pathe": "^1.1.2" - } - }, - "@vitest/snapshot": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.0.2.tgz", - "integrity": "sha512-Yc2ewhhZhx+0f9cSUdfzPRcsM6PhIb+S43wxE7OG0kTxqgqzo8tHkXFuFlndXeDMp09G3sY/X5OAo/RfYydf1g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@vitest/pretty-format": "2.0.2", - "magic-string": "^0.30.10", - "pathe": "^1.1.2" - } - }, - "@vitest/ui": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-2.0.2.tgz", - "integrity": "sha512-VwxFTOC2GcNPexQlR9PFb8drWCLA+nLWTWlAS4oba1xbTJYJ8H5vY8OUFOTMb7YQXF0Vsc5IfmLpYkb2dcVgOA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@vitest/utils": "2.0.2", - "fast-glob": "^3.3.2", - "fflate": "^0.8.2", - "flatted": "^3.3.1", - "pathe": "^1.1.2", - "sirv": "^2.0.4", - "tinyrainbow": "^1.2.0" - } - }, - "@vitest/utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.0.2.tgz", - "integrity": "sha512-pxCY1v7kmOCWYWjzc0zfjGTA3Wmn8PKnlPvSrsA643P1NHl1fOyXj2Q9SaNlrlFE+ivCsxM80Ov3AR82RmHCWQ==", + "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, - "peer": true, - "requires": { - "@vitest/pretty-format": "2.0.2", - "estree-walker": "^3.0.3", - "loupe": "^3.1.1", - "tinyrainbow": "^1.2.0" - } + "optional": true }, - "assertion-error": { + "brace-expansion": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "optional": true, - "peer": true - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "balanced-match": "^1.0.0" } }, - "check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "dev": true, - "optional": true, - "peer": true - }, - "deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "optional": true, - "peer": true - }, - "dom-accessibility-api": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", - "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "dev": true - }, "esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@types/estree": "^1.0.0" - } - }, - "execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, - "optional": true, - "peer": 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" + "@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" } }, - "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, - "peer": true - }, - "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, - "optional": true, - "peer": 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, - "optional": true, - "peer": 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, - "optional": true, - "peer": true - }, - "loupe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz", - "integrity": "sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==", + "foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dev": true, - "optional": true, - "peer": true, "requires": { - "get-func-name": "^2.0.1" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" } }, - "magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "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, - "optional": true, - "peer": true, "requires": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "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, - "optional": true, - "peer": 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==", + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, - "optional": true, - "peer": true, "requires": { - "path-key": "^4.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" } }, - "onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "optional": true, - "peer": true, "requires": { - "mimic-fn": "^4.0.0" + "brace-expansion": "^2.0.1" } }, - "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, - "optional": true, - "peer": true - }, - "pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true, - "optional": true, - "peer": true - }, - "pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", - "dev": true, - "optional": true, - "peer": true - }, - "rollup": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.1.tgz", - "integrity": "sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@rollup/rollup-android-arm-eabi": "4.18.1", - "@rollup/rollup-android-arm64": "4.18.1", - "@rollup/rollup-darwin-arm64": "4.18.1", - "@rollup/rollup-darwin-x64": "4.18.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.18.1", - "@rollup/rollup-linux-arm-musleabihf": "4.18.1", - "@rollup/rollup-linux-arm64-gnu": "4.18.1", - "@rollup/rollup-linux-arm64-musl": "4.18.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.18.1", - "@rollup/rollup-linux-riscv64-gnu": "4.18.1", - "@rollup/rollup-linux-s390x-gnu": "4.18.1", - "@rollup/rollup-linux-x64-gnu": "4.18.1", - "@rollup/rollup-linux-x64-musl": "4.18.1", - "@rollup/rollup-win32-arm64-msvc": "4.18.1", - "@rollup/rollup-win32-ia32-msvc": "4.18.1", - "@rollup/rollup-win32-x64-msvc": "4.18.1", - "@types/estree": "1.0.5", - "fsevents": "~2.3.2" - } + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "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 + } + } + }, + "@storybook/core-events": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.20.tgz", + "integrity": "sha512-tlVDuVbDiNkvPDFAu+0ou3xBBYbx9zUURQz4G9fAq0ScgBOs/bpzcRrFb4mLpemUViBAd47tfZKdH4MAX45KVQ==", + "dev": true, + "requires": { + "ts-dedent": "^2.0.0" + } + }, + "@storybook/core-server": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.6.20.tgz", + "integrity": "sha512-qC5BdbqqwMLTdCwMKZ1Hbc3+3AaxHYWLiJaXL9e8s8nJw89xV8c8l30QpbJOGvcDmsgY6UTtXYaJ96OsTr7MrA==", + "dev": true, + "requires": { + "@aw-web-design/x-default-browser": "1.4.126", + "@discoveryjs/json-ext": "^0.5.3", + "@storybook/builder-manager": "7.6.20", + "@storybook/channels": "7.6.20", + "@storybook/core-common": "7.6.20", + "@storybook/core-events": "7.6.20", + "@storybook/csf": "^0.1.2", + "@storybook/csf-tools": "7.6.20", + "@storybook/docs-mdx": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/manager": "7.6.20", + "@storybook/node-logger": "7.6.20", + "@storybook/preview-api": "7.6.20", + "@storybook/telemetry": "7.6.20", + "@storybook/types": "7.6.20", + "@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", + "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": { + "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, - "optional": true, - "peer": 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, - "optional": true, - "peer": true - }, - "tinypool": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz", - "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==", - "dev": true, - "optional": true, - "peer": true - }, - "tinyspy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.0.tgz", - "integrity": "sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==", - "dev": true, - "optional": true, - "peer": true - }, - "vite": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", - "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", - "dev": true, - "optional": true, - "peer": true, "requires": { - "esbuild": "^0.21.3", - "fsevents": "~2.3.3", - "postcss": "^8.4.39", - "rollup": "^4.13.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "vite-node": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.0.2.tgz", - "integrity": "sha512-w4vkSz1Wo+NIQg8pjlEn0jQbcM/0D+xVaYjhw3cvarTanLLBh54oNiRbsT8PNK5GfuST0IlVXjsNRoNlqvY/fw==", + "semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true + } + } + }, + "@storybook/csf": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz", + "integrity": "sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==", + "dev": true, + "requires": { + "type-fest": "^2.19.0" + }, + "dependencies": { + "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 + } + } + }, + "@storybook/csf-plugin": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.6.20.tgz", + "integrity": "sha512-dzBzq0dN+8WLDp6NxYS4G7BCe8+vDeDRBRjHmM0xb0uJ6xgQViL8SDplYVSGnk3bXE/1WmtvyRzQyTffBnaj9Q==", + "dev": true, + "requires": { + "@storybook/csf-tools": "7.6.20", + "unplugin": "^1.3.1" + } + }, + "@storybook/csf-tools": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.6.20.tgz", + "integrity": "sha512-rwcwzCsAYh/m/WYcxBiEtLpIW5OH1ingxNdF/rK9mtGWhJxXRDV8acPkFrF8rtFWIVKoOCXu5USJYmc3f2gdYQ==", + "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.20", + "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, - "optional": true, - "peer": true, "requires": { - "cac": "^6.7.14", - "debug": "^4.3.5", - "pathe": "^1.1.2", - "tinyrainbow": "^1.2.0", - "vite": "^5.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } - }, - "vitest": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.0.2.tgz", - "integrity": "sha512-WlpZ9neRIjNBIOQwBYfBSr0+of5ZCbxT2TVGKW4Lv0c8+srCFIiRdsP7U009t8mMn821HQ4XKgkx5dVWpyoyLw==", + } + } + }, + "@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.20", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.20.tgz", + "integrity": "sha512-Bw2CcCKQ5xGLQgtexQsI1EGT6y5epoFzOINi0FSTGJ9Wm738nRp5LH3dLk1GZLlywIXcYwOEThb2pM+pZeRQxQ==", + "dev": true, + "requires": { + "@storybook/core-common": "7.6.20", + "@storybook/preview-api": "7.6.20", + "@storybook/types": "7.6.20", + "@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.20", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.20.tgz", + "integrity": "sha512-0Cf6WN0t7yEG2DR29tN5j+i7H/TH5EfPppg9h9/KiQSoFHk+6KLoy2p5do94acFU+Ro4+zzxvdCGbcYGKuArpg==", + "dev": true + }, + "@storybook/manager-api": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.20.tgz", + "integrity": "sha512-gOB3m8hO3gBs9cBoN57T7jU0wNKDh+hi06gLcyd2awARQlAlywnLnr3s1WH5knih6Aq+OpvGBRVKkGLOkaouCQ==", + "dev": true, + "requires": { + "@storybook/channels": "7.6.20", + "@storybook/client-logger": "7.6.20", + "@storybook/core-events": "7.6.20", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.6.20", + "@storybook/theming": "7.6.20", + "@storybook/types": "7.6.20", + "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.20", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.20.tgz", + "integrity": "sha512-l2i4qF1bscJkOplNffcRTsgQWYR7J51ewmizj5YrTM8BK6rslWT1RntgVJWB1RgPqvx6VsCz1gyP3yW1oKxvYw==", + "dev": true + }, + "@storybook/postinstall": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.6.20.tgz", + "integrity": "sha512-AN4WPeNma2xC2/K/wP3I/GMbBUyeSGD3+86ZFFJFO1QmE/Zea6E+1aVlTd1iKHQUcNkZ9bZTrqkhPGVYx10pIw==", + "dev": true + }, + "@storybook/preview": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.6.20.tgz", + "integrity": "sha512-cxYlZ5uKbCYMHoFpgleZqqGWEnqHrk5m5fT8bYSsDsdQ+X5wPcwI/V+v8dxYAdQcMphZVIlTjo6Dno9WG8qmVA==", + "dev": true + }, + "@storybook/preview-api": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.20.tgz", + "integrity": "sha512-3ic2m9LDZEPwZk02wIhNc3n3rNvbi7VDKn52hDXfAxnL5EYm7yDICAkaWcVaTfblru2zn0EDJt7ROpthscTW5w==", + "dev": true, + "requires": { + "@storybook/channels": "7.6.20", + "@storybook/client-logger": "7.6.20", + "@storybook/core-events": "7.6.20", + "@storybook/csf": "^0.1.2", + "@storybook/global": "^5.0.0", + "@storybook/types": "7.6.20", + "@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-dom-shim": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.20.tgz", + "integrity": "sha512-SRvPDr9VWcS24ByQOVmbfZ655y5LvjXRlsF1I6Pr9YZybLfYbu3L5IicfEHT4A8lMdghzgbPFVQaJez46DTrkg==", + "dev": true, + "requires": {} + }, + "@storybook/router": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.20.tgz", + "integrity": "sha512-mCzsWe6GrH47Xb1++foL98Zdek7uM5GhaSlrI7blWVohGa0qIUYbfJngqR4ZsrXmJeeEvqowobh+jlxg3IJh+w==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.6.20", + "memoizerific": "^1.11.3", + "qs": "^6.10.0" + } + }, + "@storybook/source-loader": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/source-loader/-/source-loader-7.6.20.tgz", + "integrity": "sha512-AlOX5w95tajmZEsEcbYCtwtpKYW0xLV2hRzk2MZfc6XUXC9/n2jwhz1X4EKilwKGCWFUj/HAYbNc2XChS9juvg==", + "dev": true, + "requires": { + "@storybook/csf": "^0.1.2", + "@storybook/types": "7.6.20", + "estraverse": "^5.2.0", + "lodash": "^4.17.21", + "prettier": "^2.8.0" + } + }, + "@storybook/telemetry": { + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.6.20.tgz", + "integrity": "sha512-dmAOCWmOscYN6aMbhCMmszQjoycg7tUPRVy2kTaWg6qX10wtMrvEtBV29W4eMvqdsoRj5kcvoNbzRdYcWBUOHQ==", + "dev": true, + "requires": { + "@storybook/client-logger": "7.6.20", + "@storybook/core-common": "7.6.20", + "@storybook/csf-tools": "7.6.20", + "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": { + "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, - "optional": true, - "peer": true, "requires": { - "@ampproject/remapping": "^2.3.0", - "@vitest/expect": "2.0.2", - "@vitest/pretty-format": "^2.0.2", - "@vitest/runner": "2.0.2", - "@vitest/snapshot": "2.0.2", - "@vitest/spy": "2.0.2", - "@vitest/utils": "2.0.2", - "chai": "^5.1.1", - "debug": "^4.3.5", - "execa": "^8.0.1", - "magic-string": "^0.30.10", - "pathe": "^1.1.2", - "std-env": "^3.7.0", - "tinybench": "^2.8.0", - "tinypool": "^1.0.0", - "tinyrainbow": "^1.2.0", - "vite": "^5.0.0", - "vite-node": "2.0.2", - "why-is-node-running": "^2.2.2" - }, - "dependencies": { - "@vitest/expect": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.0.2.tgz", - "integrity": "sha512-nKAvxBYqcDugYZ4nJvnm5OR8eDJdgWjk4XM9owQKUjzW70q0icGV2HVnQOyYsp906xJaBDUXw0+9EHw2T8e0mQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "@vitest/spy": "2.0.2", - "@vitest/utils": "2.0.2", - "chai": "^5.1.1", - "tinyrainbow": "^1.2.0" - } - }, - "@vitest/spy": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.2.tgz", - "integrity": "sha512-MgwJ4AZtCgqyp2d7WcQVE8aNG5vQ9zu9qMPYQHjsld/QVsrvg78beNrXdO4HYkP0lDahCO3P4F27aagIag+SGQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "tinyspy": "^3.0.0" - } - }, - "chai": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.1.tgz", - "integrity": "sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - } - } + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } } } @@ -42206,48 +40006,6 @@ "vue-demi": "^0.14.10" } }, - "@testing-library/dom": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", - "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, - "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 - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } - } - } - }, - "@testing-library/user-event": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.3.0.tgz", - "integrity": "sha512-P02xtBBa8yMaLhK8CzJCIns8rqwnF6FxhR9zs810flHOBXUYCFjLd8Io1rQrAkQRWEmW2PGdZIEdMxf/KLsqFA==", - "dev": true, - "requires": {} - }, "@tiptap/core": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.10.2.tgz", @@ -42483,12 +40241,6 @@ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, - "@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true - }, "@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -43720,17 +41472,6 @@ "chai": "^4.3.7" } }, - "@vitest/pretty-format": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.0.2.tgz", - "integrity": "sha512-SBCyOXfGVvddRd9r2PwoVR0fonQjh9BMIcBMlSzbcNwFfGr6ZhOhvBzurjvi2F4ryut2HcqiFhNeDVGwru8tLg==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "tinyrainbow": "^1.2.0" - } - }, "@vitest/runner": { "version": "0.34.5", "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.5.tgz", @@ -44554,6 +42295,7 @@ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, + "peer": true, "requires": { "deep-equal": "^2.0.5" }, @@ -44563,6 +42305,7 @@ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", "es-get-iterator": "^1.1.2", @@ -46598,12 +44341,6 @@ "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", "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 - }, "cssdb": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", @@ -47419,12 +45156,6 @@ "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", "dev": true }, - "dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true - }, "dom-event-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.1.0.tgz", @@ -47738,6 +45469,7 @@ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -47891,112 +45623,128 @@ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-android-arm64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-darwin-64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-darwin-arm64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-freebsd-64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-freebsd-arm64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-linux-32": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-linux-64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-linux-arm": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-linux-arm64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-linux-mips64le": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-linux-ppc64le": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-linux-riscv64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-linux-s390x": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-netbsd-64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-openbsd-64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-plugin-alias": { "version": "0.2.1", @@ -48018,28 +45766,32 @@ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-windows-32": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-windows-64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "esbuild-windows-arm64": { "version": "0.14.54", "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", "dev": true, - "optional": true + "optional": true, + "peer": true }, "escalade": { "version": "3.2.0", @@ -49057,14 +46809,6 @@ "integrity": "sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==", "dev": true }, - "fflate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", - "dev": true, - "optional": true, - "peer": true - }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -50436,7 +48180,8 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true + "dev": true, + "peer": true }, "is-nan": { "version": "1.3.2", @@ -50539,7 +48284,8 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true + "dev": true, + "peer": true }, "is-shared-array-buffer": { "version": "1.0.3", @@ -50604,7 +48350,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true + "dev": true, + "peer": true }, "is-weakref": { "version": "1.0.2", @@ -50619,6 +48366,7 @@ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -51682,12 +49430,6 @@ "yallist": "^3.0.2" } }, - "lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true - }, "magic-string": { "version": "0.25.1", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", @@ -53025,6 +50767,20 @@ } } }, + "mirinae-foundation": { + "version": "file:packages/mirinae-foundation" + }, + "mirinae-storybook": { + "version": "file:apps/mirinae-storybook", + "requires": { + "@storybook/theming": "^7.6.10", + "eslint-config-custom": "*", + "mirinae-foundation": "*", + "postcss-config-custom": "*", + "storybook-config-custom": "*", + "tsconfig": "*" + } + }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", @@ -54530,6 +52286,7 @@ "version": "file:packages/postcss-config-custom", "requires": { "autoprefixer": "^10.4.20", + "mirinae-foundation": "*", "postcss-comment": "^2.0.0", "postcss-conditionals": "^2.1.0", "postcss-easy-import": "^3.0.0", @@ -56856,12 +54613,6 @@ "scheduler": "^0.23.2" } }, - "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 - }, "react-remove-scroll": { "version": "2.5.5", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", @@ -58784,6 +56535,7 @@ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", "dev": true, + "peer": true, "requires": { "internal-slot": "^1.0.4" } @@ -58795,12 +56547,20 @@ "dev": true }, "storybook": { - "version": "file:apps/storybook", + "version": "7.6.20", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.20.tgz", + "integrity": "sha512-Wt04pPTO71pwmRmsgkyZhNo4Bvdb/1pBAMsIFb9nQLykEdzzpXjvingxFFvdOG4nIowzwgxD+CLlyRqVJqnATw==", + "dev": true, + "requires": { + "@storybook/cli": "7.6.20" + } + }, + "storybook-config-custom": { + "version": "file:packages/storybook-config-custom", "requires": { "@rollup/plugin-commonjs": "^26.0.1", "@storybook/addon-a11y": "^7.6.10", "@storybook/addon-designs": "^7.0.9", - "@storybook/addon-docs": "^7.6.10", "@storybook/addon-essentials": "^7.6.10", "@storybook/addon-interactions": "^7.6.10", "@storybook/addon-links": "^7.6.10", @@ -58808,8 +56568,6 @@ "@storybook/addon-storysource": "^7.6.10", "@storybook/blocks": "^7.6.10", "@storybook/manager-api": "^7.6.10", - "@storybook/test": "^7.6.10", - "@storybook/theming": "^7.6.10", "@storybook/vue": "^7.6.10", "@storybook/vue-vite": "^7.6.10", "@vitejs/plugin-vue2": "^2.3.1", @@ -58818,34 +56576,6 @@ "storybook": "^7.6.10", "tsconfig": "*", "vue-component-type-helpers": "^2.0.26" - }, - "dependencies": { - "@storybook/addon-mdx-gfm": { - "version": "7.6.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-mdx-gfm/-/addon-mdx-gfm-7.6.10.tgz", - "integrity": "sha512-gA1kQZJ4ZKOpi9afu7WRC1twCwZR0J1Nd7u47kNq+5coW1GH9uqGDFYHzr4mfKdD1J09/OrmfMnVjCPx9MYDtQ==", - "dev": true, - "requires": { - "@storybook/node-logger": "7.6.10", - "remark-gfm": "^3.0.1", - "ts-dedent": "^2.0.0" - } - }, - "@storybook/node-logger": { - "version": "7.6.10", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.10.tgz", - "integrity": "sha512-ZBuqrv4bjJzKXyfRGFkVIi+z6ekn6rOPoQao4KmsfLNQAUUsEdR8Baw/zMnnU417zw5dSEaZdpuwx75SCQAeOA==", - "dev": true - }, - "storybook": { - "version": "7.6.20", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.20.tgz", - "integrity": "sha512-Wt04pPTO71pwmRmsgkyZhNo4Bvdb/1pBAMsIFb9nQLykEdzzpXjvingxFFvdOG4nIowzwgxD+CLlyRqVJqnATw==", - "dev": true, - "requires": { - "@storybook/cli": "7.6.20" - } - } } }, "stream-combiner": { @@ -59894,14 +57624,6 @@ "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" }, - "tinyrainbow": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", - "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", - "dev": true, - "optional": true, - "peer": true - }, "tinyspy": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.1.1.tgz", @@ -62187,6 +59909,21 @@ } } }, + "web-storybook": { + "version": "file:apps/web-storybook", + "requires": { + "@cloudforet/core-lib": "*", + "@cloudforet/language-pack": "*", + "@cloudforet/mirinae": "*", + "@cloudforet/utils": "*", + "@storybook/theming": "^7.6.10", + "eslint-config-custom": "*", + "mirinae-foundation": "*", + "postcss-config-custom": "*", + "storybook-config-custom": "*", + "tsconfig": "*" + } + }, "webfontloader": { "version": "1.6.28", "resolved": "https://registry.npmjs.org/webfontloader/-/webfontloader-1.6.28.tgz", @@ -62370,6 +60107,7 @@ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", "dev": true, + "peer": true, "requires": { "is-map": "^2.0.1", "is-set": "^2.0.1", diff --git a/turbo.json b/turbo.json index db226647b6..bb737e5be5 100644 --- a/turbo.json +++ b/turbo.json @@ -41,6 +41,16 @@ ], "cache": true }, + "web-storybook#build": { + "dependsOn": ["@cloudforet/mirinae#build", "@cloudforet/mirinae#transpile", "@cloudforet/utils#build", "@cloudforet/core-lib#build"], + "outputs": ["./.storybook-static/**"], + "inputs": [ + "../web/src/common/**", "../web/postcss.config.js", "../web/tailwind.config.js", "../web/package.json", + "tsconfig.json", "tailwind.config.js", "postcss.config.js", ".storybook/**/*", + "!./**/__tests__/**", "!./**/*.babel", "!./**/LICENSE", "!./**/AUTHORS", "!./**/README.md", "!./**/CHANGELOG.md" + ], + "cache": false + }, "transpile": { "dependsOn": ["^transpile"], "outputs": ["./types/**"], From c55d75b3a8099e638391cd81b350cff735fdc04f Mon Sep 17 00:00:00 2001 From: sulmo Date: Tue, 21 Jan 2025 17:05:16 +0900 Subject: [PATCH 06/15] refactor: move tailwindcss dependency from postcss-config-custom to mirinae-foundation Signed-off-by: sulmo --- package-lock.json | 87 +++++++++++++-------- packages/mirinae-foundation/package.json | 5 +- packages/postcss-config-custom/package.json | 5 +- 3 files changed, 61 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index 56ea866c73..3facc0bf99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19497,9 +19497,9 @@ } }, "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "bin": { "jiti": "bin/jiti.js" @@ -25322,9 +25322,9 @@ } }, "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "dev": true, "engines": { "node": ">=14" @@ -25334,9 +25334,9 @@ } }, "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "dev": true, "bin": { "yaml": "bin.mjs" @@ -30570,9 +30570,9 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.15.tgz", - "integrity": "sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==", + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -30584,7 +30584,7 @@ "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.6", - "lilconfig": "^2.1.0", + "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", @@ -30612,6 +30612,18 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "dev": true }, + "node_modules/tailwindcss/node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, "node_modules/tailwindcss/node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -34032,7 +34044,11 @@ "vue-tsc": "^1.2.0" } }, - "packages/mirinae-foundation": {}, + "packages/mirinae-foundation": { + "devDependencies": { + "tailwindcss": "^3.4.17" + } + }, "packages/mirinae/node_modules/@esbuild/android-arm": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", @@ -34753,8 +34769,7 @@ "postcss-mixins": "^6.2.3", "postcss-nested": "^4.2.3", "postcss-preset-env": "6.7.0", - "postcss-simple-vars": "^5.0.2", - "tailwindcss": "^3.4.15" + "postcss-simple-vars": "^5.0.2" } }, "packages/postcss-config-custom/node_modules/autoprefixer": { @@ -48634,9 +48649,9 @@ } }, "jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true }, "js-base64": { @@ -50768,7 +50783,10 @@ } }, "mirinae-foundation": { - "version": "file:packages/mirinae-foundation" + "version": "file:packages/mirinae-foundation", + "requires": { + "tailwindcss": "^3.4.17" + } }, "mirinae-storybook": { "version": "file:apps/mirinae-storybook", @@ -52296,8 +52314,7 @@ "postcss-mixins": "^6.2.3", "postcss-nested": "^4.2.3", "postcss-preset-env": "6.7.0", - "postcss-simple-vars": "^5.0.2", - "tailwindcss": "^3.4.15" + "postcss-simple-vars": "^5.0.2" }, "dependencies": { "autoprefixer": { @@ -53022,15 +53039,15 @@ }, "dependencies": { "lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "dev": true }, "yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "dev": true } } @@ -57224,9 +57241,9 @@ } }, "tailwindcss": { - "version": "3.4.15", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.15.tgz", - "integrity": "sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==", + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", "dev": true, "requires": { "@alloc/quick-lru": "^5.2.0", @@ -57238,7 +57255,7 @@ "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.6", - "lilconfig": "^2.1.0", + "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", @@ -57259,6 +57276,12 @@ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "dev": true }, + "lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true + }, "picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", diff --git a/packages/mirinae-foundation/package.json b/packages/mirinae-foundation/package.json index 582faa9142..b19b77dac9 100644 --- a/packages/mirinae-foundation/package.json +++ b/packages/mirinae-foundation/package.json @@ -1,4 +1,7 @@ { "name": "mirinae-foundation", - "private": true + "private": true, + "devDependencies": { + "tailwindcss": "^3.4.17" + } } diff --git a/packages/postcss-config-custom/package.json b/packages/postcss-config-custom/package.json index f76d3e81b2..4ec232df3d 100644 --- a/packages/postcss-config-custom/package.json +++ b/packages/postcss-config-custom/package.json @@ -5,6 +5,7 @@ "main": "index.js", "devDependencies": { "autoprefixer": "^10.4.20", + "mirinae-foundation": "*", "postcss-comment": "^2.0.0", "postcss-conditionals": "^2.1.0", "postcss-easy-import": "^3.0.0", @@ -14,8 +15,6 @@ "postcss-mixins": "^6.2.3", "postcss-nested": "^4.2.3", "postcss-preset-env": "6.7.0", - "postcss-simple-vars": "^5.0.2", - "tailwindcss": "^3.4.15", - "mirinae-foundation": "*" + "postcss-simple-vars": "^5.0.2" } } From 438d0334cf9ad1741d8069ff4be1faf986a5fa9b Mon Sep 17 00:00:00 2001 From: sulmo Date: Thu, 23 Jan 2025 13:50:20 +0900 Subject: [PATCH 07/15] refactor(storybook): update theme configuration and dependencies - Removed `@storybook/theming` dependency and replaced with custom theme creation. - Updated import paths and methods for setting Storybook configurations. - Adjusted package.json to reflect changes in dependencies. - Simplified path resolution in storybook-config-custom. Signed-off-by: sulmo --- .../.storybook/CloudforetTheme.js | 6 ++-- apps/mirinae-storybook/.storybook/manager.js | 10 +++--- apps/mirinae-storybook/.storybook/preview.js | 5 +-- apps/mirinae-storybook/package.json | 5 ++- apps/mirinae-storybook/vite.config.js | 2 +- .../.storybook/CloudforetTheme.js | 8 ++--- apps/web-storybook/.storybook/manager.js | 10 +++--- apps/web-storybook/.storybook/preview.js | 5 +-- apps/web-storybook/package.json | 11 +++--- package-lock.json | 6 ++-- packages/storybook-config-custom/index.js | 35 ++++++++++++------- packages/storybook-config-custom/package.json | 5 +-- 12 files changed, 57 insertions(+), 51 deletions(-) diff --git a/apps/mirinae-storybook/.storybook/CloudforetTheme.js b/apps/mirinae-storybook/.storybook/CloudforetTheme.js index abec64a159..b7cb160e53 100644 --- a/apps/mirinae-storybook/.storybook/CloudforetTheme.js +++ b/apps/mirinae-storybook/.storybook/CloudforetTheme.js @@ -1,6 +1,4 @@ -import { create } from '@storybook/theming/create'; - -export default create({ +export default { base: 'light', colorPrimary: '#6638B6', colorSecondary: 'rgba(102, 56, 182, 0.9)', @@ -29,4 +27,4 @@ export default create({ brandTitle: 'Mirinae Design System', brandUrl: 'https://github.com/cloudforet-io/mirinae', brandImage: './images/SpaceONE_logoTypeA.svg', -}); \ No newline at end of file +}; diff --git a/apps/mirinae-storybook/.storybook/manager.js b/apps/mirinae-storybook/.storybook/manager.js index 8a7acfbc3e..6b06b97d64 100644 --- a/apps/mirinae-storybook/.storybook/manager.js +++ b/apps/mirinae-storybook/.storybook/manager.js @@ -1,9 +1,9 @@ -import { addons } from '@storybook/manager-api'; -import SpaceOneTheme from './CloudforetTheme'; +import CloudforetThemeVar from './CloudforetTheme'; +import { setConfig } from 'storybook-config-custom'; // window.STORYBOOK_GA_ID = 'UA-159327743-4'; -addons.setConfig({ - theme: SpaceOneTheme -}); \ No newline at end of file +setConfig({ + theme: CloudforetThemeVar, +}) diff --git a/apps/mirinae-storybook/.storybook/preview.js b/apps/mirinae-storybook/.storybook/preview.js index 0a78c80a44..d17cc14710 100644 --- a/apps/mirinae-storybook/.storybook/preview.js +++ b/apps/mirinae-storybook/.storybook/preview.js @@ -16,7 +16,8 @@ import screens from 'mirinae-foundation/screens.cjs'; import { fontUrls, webFonts } from 'mirinae-foundation/web-fonts.cjs'; -import SpaceOneTheme from './CloudforetTheme'; +import CloudforetTheme from './CloudforetTheme'; +import { createTheme } from 'storybook-config-custom'; Vue.use(VueRouter); Vue.use(VueI18n); @@ -64,7 +65,7 @@ const preview = { } return null; }, - theme: SpaceOneTheme, + theme: createTheme(CloudforetTheme), }, viewport: { viewports, diff --git a/apps/mirinae-storybook/package.json b/apps/mirinae-storybook/package.json index 4ec271dd3e..d0ec16adf8 100644 --- a/apps/mirinae-storybook/package.json +++ b/apps/mirinae-storybook/package.json @@ -12,10 +12,9 @@ "license": "ISC", "devDependencies": { "eslint-config-custom": "*", - "postcss-config-custom": "*", "mirinae-foundation": "*", - "tsconfig": "*", + "postcss-config-custom": "*", "storybook-config-custom": "*", - "@storybook/theming": "^7.6.10" + "tsconfig": "*" } } diff --git a/apps/mirinae-storybook/vite.config.js b/apps/mirinae-storybook/vite.config.js index b16af4ef78..fb340a1d0a 100644 --- a/apps/mirinae-storybook/vite.config.js +++ b/apps/mirinae-storybook/vite.config.js @@ -14,7 +14,7 @@ export default defineConfig({ }, }, optimizeDeps: { - include: ['@/styles/colors.cjs', 'mirinae-foundation/web-fonts.cjs', 'mirinae-foundation/screens.cjs', '@/styles/variables.cjs', '@/index'], + include: ['mirinae-foundation/web-fonts.cjs', 'mirinae-foundation/screens.cjs', '@/styles/colors.cjs'], }, rollupInputOptions: { plugins: [commonjs()], diff --git a/apps/web-storybook/.storybook/CloudforetTheme.js b/apps/web-storybook/.storybook/CloudforetTheme.js index 8928636775..b7cb160e53 100644 --- a/apps/web-storybook/.storybook/CloudforetTheme.js +++ b/apps/web-storybook/.storybook/CloudforetTheme.js @@ -1,6 +1,4 @@ -import { create } from '@storybook/theming/create'; - -export default create({ +export default { base: 'light', colorPrimary: '#6638B6', colorSecondary: 'rgba(102, 56, 182, 0.9)', @@ -26,7 +24,7 @@ export default create({ inputTextColor: 'black', inputBorderRadius: 4, - brandTitle: 'Console Design System', + brandTitle: 'Mirinae Design System', brandUrl: 'https://github.com/cloudforet-io/mirinae', brandImage: './images/SpaceONE_logoTypeA.svg', -}); +}; diff --git a/apps/web-storybook/.storybook/manager.js b/apps/web-storybook/.storybook/manager.js index 8a7acfbc3e..6b06b97d64 100644 --- a/apps/web-storybook/.storybook/manager.js +++ b/apps/web-storybook/.storybook/manager.js @@ -1,9 +1,9 @@ -import { addons } from '@storybook/manager-api'; -import SpaceOneTheme from './CloudforetTheme'; +import CloudforetThemeVar from './CloudforetTheme'; +import { setConfig } from 'storybook-config-custom'; // window.STORYBOOK_GA_ID = 'UA-159327743-4'; -addons.setConfig({ - theme: SpaceOneTheme -}); \ No newline at end of file +setConfig({ + theme: CloudforetThemeVar, +}) diff --git a/apps/web-storybook/.storybook/preview.js b/apps/web-storybook/.storybook/preview.js index 44303d65af..16c9056a77 100644 --- a/apps/web-storybook/.storybook/preview.js +++ b/apps/web-storybook/.storybook/preview.js @@ -14,9 +14,10 @@ import screens from 'mirinae-foundation/screens.cjs'; import { fontUrls, webFonts } from 'mirinae-foundation/web-fonts.cjs'; -import SpaceOneTheme from './CloudforetTheme'; import SpaceDesignSystem from '@cloudforet/mirinae'; +import CloudforetTheme from './CloudforetTheme'; +import { createTheme } from 'storybook-config-custom'; import '@/styles/style.pcss'; import '@cloudforet/mirinae/css/light-style.css'; import '@cloudforet/mirinae/dist/style.css'; @@ -63,7 +64,7 @@ const preview = { } return null; }, - theme: SpaceOneTheme, + theme: createTheme(CloudforetTheme), }, viewport: { viewports, diff --git a/apps/web-storybook/package.json b/apps/web-storybook/package.json index 13ccbcbaef..f5896415e3 100644 --- a/apps/web-storybook/package.json +++ b/apps/web-storybook/package.json @@ -11,15 +11,14 @@ "author": "", "license": "ISC", "devDependencies": { - "eslint-config-custom": "*", - "postcss-config-custom": "*", - "mirinae-foundation": "*", - "tsconfig": "*", - "storybook-config-custom": "*", "@cloudforet/core-lib": "*", "@cloudforet/language-pack": "*", "@cloudforet/mirinae": "*", "@cloudforet/utils": "*", - "@storybook/theming": "^7.6.10" + "eslint-config-custom": "*", + "mirinae-foundation": "*", + "postcss-config-custom": "*", + "storybook-config-custom": "*", + "tsconfig": "*" } } diff --git a/package-lock.json b/package-lock.json index 3facc0bf99..369e3c932d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,6 @@ "version": "1.0.0", "license": "ISC", "devDependencies": { - "@storybook/theming": "^7.6.10", "eslint-config-custom": "*", "mirinae-foundation": "*", "postcss-config-custom": "*", @@ -214,7 +213,6 @@ "@cloudforet/language-pack": "*", "@cloudforet/mirinae": "*", "@cloudforet/utils": "*", - "@storybook/theming": "^7.6.10", "eslint-config-custom": "*", "mirinae-foundation": "*", "postcss-config-custom": "*", @@ -34935,6 +34933,7 @@ "@storybook/addon-storysource": "^7.6.10", "@storybook/blocks": "^7.6.10", "@storybook/manager-api": "^7.6.10", + "@storybook/theming": "^7.6.20", "@storybook/vue": "^7.6.10", "@storybook/vue-vite": "^7.6.10", "@vitejs/plugin-vue2": "^2.3.1", @@ -50791,7 +50790,6 @@ "mirinae-storybook": { "version": "file:apps/mirinae-storybook", "requires": { - "@storybook/theming": "^7.6.10", "eslint-config-custom": "*", "mirinae-foundation": "*", "postcss-config-custom": "*", @@ -56585,6 +56583,7 @@ "@storybook/addon-storysource": "^7.6.10", "@storybook/blocks": "^7.6.10", "@storybook/manager-api": "^7.6.10", + "@storybook/theming": "^7.6.20", "@storybook/vue": "^7.6.10", "@storybook/vue-vite": "^7.6.10", "@vitejs/plugin-vue2": "^2.3.1", @@ -59939,7 +59938,6 @@ "@cloudforet/language-pack": "*", "@cloudforet/mirinae": "*", "@cloudforet/utils": "*", - "@storybook/theming": "^7.6.10", "eslint-config-custom": "*", "mirinae-foundation": "*", "postcss-config-custom": "*", diff --git a/packages/storybook-config-custom/index.js b/packages/storybook-config-custom/index.js index 00e71c01be..4297f70041 100644 --- a/packages/storybook-config-custom/index.js +++ b/packages/storybook-config-custom/index.js @@ -1,21 +1,23 @@ -import { dirname, join } from 'path'; +// import { dirname, join } from 'path'; +import { create } from '@storybook/theming/create'; +import { addons } from '@storybook/manager-api'; -function getAbsolutePath(value) { - return dirname(require.resolve(join(value, 'package.json'))); -} +// function getAbsolutePath(value) { +// return dirname(require.resolve(join(value, 'package.json'))); +// } export const mainConfig = { staticDirs: ['../public'], addons: [ - getAbsolutePath('@storybook/addon-links'), - getAbsolutePath('@storybook/addon-essentials'), - getAbsolutePath('@storybook/addon-interactions'), - getAbsolutePath('@storybook/addon-designs'), - getAbsolutePath('@storybook/addon-storysource'), - getAbsolutePath('@storybook/addon-a11y'), - getAbsolutePath('@storybook/addon-mdx-gfm'), + '@storybook/addon-links', + '@storybook/addon-essentials', + '@storybook/addon-interactions', + '@storybook/addon-designs', + '@storybook/addon-storysource', + '@storybook/addon-a11y', + '@storybook/addon-mdx-gfm', ], framework: { - name: getAbsolutePath('@storybook/vue-vite'), + name: '@storybook/vue-vite', options: {}, }, previewHead: (head) => ` @@ -54,3 +56,12 @@ export const mainConfig = { ${body} `, }; + +export const createTheme = (themeVars) => create(themeVars); + +export const setConfig = (config) => { + addons.setConfig({ + ...config, + theme: createTheme(config.theme), + }); +}; diff --git a/packages/storybook-config-custom/package.json b/packages/storybook-config-custom/package.json index b1fbf51e26..aa1a1240b5 100644 --- a/packages/storybook-config-custom/package.json +++ b/packages/storybook-config-custom/package.json @@ -13,10 +13,11 @@ "@storybook/addon-links": "^7.6.10", "@storybook/addon-mdx-gfm": "^7.6.10", "@storybook/addon-storysource": "^7.6.10", - "@storybook/vue": "^7.6.10", - "@storybook/vue-vite": "^7.6.10", "@storybook/blocks": "^7.6.10", "@storybook/manager-api": "^7.6.10", + "@storybook/theming": "^7.6.20", + "@storybook/vue": "^7.6.10", + "@storybook/vue-vite": "^7.6.10", "@vitejs/plugin-vue2": "^2.3.1", "eslint-config-custom": "*", "postcss-config-custom": "*", From d5a30fae6b6e2c7a78db0b5f2c9b33b4154f2596 Mon Sep 17 00:00:00 2001 From: sulmo Date: Thu, 23 Jan 2025 16:36:36 +0900 Subject: [PATCH 08/15] feat(web-storybook): update dev server port to 6007 - Change the development server port from 6006 to 6007 in the script configuration. Signed-off-by: sulmo --- apps/web-storybook/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web-storybook/package.json b/apps/web-storybook/package.json index f5896415e3..0baeb56de6 100644 --- a/apps/web-storybook/package.json +++ b/apps/web-storybook/package.json @@ -4,7 +4,7 @@ "description": "", "main": "index.js", "scripts": { - "dev": "storybook dev -p 6006", + "dev": "storybook dev -p 6007", "build": "storybook build" }, "keywords": [], From 4afa6a5775f4b2f4ce4c7e756437101ee102fbbe Mon Sep 17 00:00:00 2001 From: admin-cloudforet Date: Fri, 24 Jan 2025 02:56:51 +0000 Subject: [PATCH 09/15] chore: version 2.0.dev305 Signed-off-by: admin-cloudforet --- apps/web/package.json | 2 +- package-lock.json | 6 +++--- package.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/web/package.json b/apps/web/package.json index 3d0f94a8ac..cb84feadcf 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "web", - "version": "2.0.0-dev304", + "version": "2.0.0-dev305", "private": true, "description": "Cloudforet Console Web Application", "author": "Cloudforet", diff --git a/package-lock.json b/package-lock.json index 2362af98f7..034f8b79a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cloudforet-console", - "version": "2.0.0-dev304", + "version": "2.0.0-dev305", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "cloudforet-console", - "version": "2.0.0-dev304", + "version": "2.0.0-dev305", "workspaces": [ "apps/*", "packages/*" @@ -104,7 +104,7 @@ } }, "apps/web": { - "version": "2.0.0-dev304", + "version": "2.0.0-dev305", "license": "Apache-2.0", "dependencies": { "@amcharts/amcharts5": "^5.4.7", diff --git a/package.json b/package.json index 197a1b301c..f69a13ed98 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cloudforet-console", - "version": "2.0.0-dev304", + "version": "2.0.0-dev305", "private": true, "workspaces": [ "apps/*", From d80dbb7d13a62a3ba70de77b42408ac61ab323a0 Mon Sep 17 00:00:00 2001 From: daeyeon ko Date: Mon, 3 Feb 2025 09:46:10 +0900 Subject: [PATCH 10/15] refactor: pcollapsiblepanel logic (#5612) * feat: add deepClamp mode * feat: create v2 v3 Signed-off-by: daeyeon ko * feat: main logic Signed-off-by: daeyeon ko * feat: trunk ,collapse condition and style inherit Signed-off-by: daeyeon ko * refactor: slot change detection and edge case handling Signed-off-by: daeyeon ko * refactor: remove double loop Signed-off-by: daeyeon ko * refactor: combine the implementation of PCollapsiblePanelV2 into PCollapsiblePanel Signed-off-by: daeyeon ko * refactor: remove duplicate code Signed-off-by: daeyeon ko * refactor: seperate the clamping logic with a hook Signed-off-by: daeyeon ko * chore: write storybook Signed-off-by: daeyeon ko * refactor: hidden slot when recursive mode Signed-off-by: daeyeon ko * refactor: active recursive mode of opsflow collapsible panel Signed-off-by: daeyeon ko * style: change variable, function name Signed-off-by: daeyeon ko * style: change function name Signed-off-by: daeyeon ko * feat: add deepClamp mode Signed-off-by: daeyeon ko * fix: change prop passing variable name Signed-off-by: daeyeon ko * refactor: enhanced type stability Signed-off-by: daeyeon ko --------- Signed-off-by: daeyeon ko * refactor: add component props type Signed-off-by: daeyeon ko --------- Signed-off-by: daeyeon ko --- .../components/BoardTaskDescriptionField.vue | 1 + .../components/BoardTaskNameField.vue | 1 + .../collapsible-list/PCollapsibleList.vue | 1 + .../collapsible/collapsible-list/type.ts | 1 + .../collapsible-panel/PCollapsiblePanel.mdx | 48 ++++ .../PCollapsiblePanel.stories.ts | 158 +++++++++++- .../collapsible-panel/PCollapsiblePanel.vue | 67 ++++-- .../composables/use-text-clamper.ts | 226 ++++++++++++++++++ .../collapsible-panel/story-helper.ts | 16 ++ .../collapsible/collapsible-panel/type.ts | 1 + 10 files changed, 493 insertions(+), 27 deletions(-) create mode 100644 packages/mirinae/src/data-display/collapsible/collapsible-panel/composables/use-text-clamper.ts diff --git a/apps/web/src/services/ops-flow/components/BoardTaskDescriptionField.vue b/apps/web/src/services/ops-flow/components/BoardTaskDescriptionField.vue index b46c27cb6c..e10d173e56 100644 --- a/apps/web/src/services/ops-flow/components/BoardTaskDescriptionField.vue +++ b/apps/web/src/services/ops-flow/components/BoardTaskDescriptionField.vue @@ -25,6 +25,7 @@ const { editorContents } = useEditorContentTransformer({
@@ -123,6 +123,160 @@ export const LineClamp: Story = { }), }; +export const DeepClampBasic: Story = { + render: (args, { argTypes }) => ({ + props: Object.keys(argTypes), + i18n: I18nConnector.i18n, + components: { PCollapsiblePanel, PLink, PToolboxTable }, + template: ` +
+ +
+ {{contents1}} + {{contents2}} + {{contents3}} +
+
+
+ `, + setup(props, { emit }) { + const state = reactive({ + proxyIsCollapsed: useProxyValue('isCollapsed', props, emit), + contents1: faker.lorem.sentence(50), + contents2: faker.lorem.sentence(10), + contents3: faker.lorem.sentence(10), + }); + return { + ...toRefs(state), + }; + }, + }), +}; + +export const NestedElements: Story = { + render: (args, { argTypes }) => ({ + props: Object.keys(argTypes), + i18n: I18nConnector.i18n, + components: { PCollapsiblePanel, PLink, PToolboxTable }, + template: ` +
+
+

Line Clamp: 5

+ +
+
+ {{contents1}} + {{contents2}} +
+
+
+ {{ contents3 }} +
+
+
+
+

Line Clamp: 7

+ +
+
+ {{contents1}} + {{contents2}} +
+
+
+ {{ contents3 }} +
+
+
+
+ `, + setup(props, { emit }) { + const state = reactive({ + proxyIsCollapsed: useProxyValue('isCollapsed', props, emit), + contents1: faker.lorem.sentence(50), + contents2: faker.lorem.sentence(50), + contents3: faker.lorem.sentence(50), + }); + return { + ...toRefs(state), + }; + }, + }), +}; + + +export const MultiInlineElements: Story = { + render: (args, { argTypes }) => ({ + props: Object.keys(argTypes), + i18n: I18nConnector.i18n, + components: { PCollapsiblePanel, PLink, PToolboxTable }, + template: ` +
+ +
+ {{ contents1 }} + {{ contents2 }} + {{ contents3 }} + {{ contents4 }} + +
+
+
+ `, + setup(props, { emit }) { + const state = reactive({ + proxyIsCollapsed: useProxyValue('isCollapsed', props, emit), + contents1: faker.lorem.sentence(5), + contents2: faker.lorem.sentence(5), + contents3: faker.lorem.sentence(5), + contents4: faker.lorem.sentence(5), + }); + return { + ...toRefs(state), + }; + }, + }), +}; + +export const Advance: Story = { + render: (args, { argTypes }) => ({ + props: Object.keys(argTypes), + i18n: I18nConnector.i18n, + components: { PCollapsiblePanel, PLink, PToolboxTable }, + template: ` +
+ + + +
+ `, + setup(props, { emit }) { + const state = reactive({ + proxyIsCollapsed: useProxyValue('isCollapsed', props, emit), + contents: faker.lorem.sentence(40), + }); + return { + ...toRefs(state), + }; + }, + }), +}; + + + + export const Playground: Story = { ...Template, }; diff --git a/packages/mirinae/src/data-display/collapsible/collapsible-panel/PCollapsiblePanel.vue b/packages/mirinae/src/data-display/collapsible/collapsible-panel/PCollapsiblePanel.vue index 98adbc3233..de42e04809 100644 --- a/packages/mirinae/src/data-display/collapsible/collapsible-panel/PCollapsiblePanel.vue +++ b/packages/mirinae/src/data-display/collapsible/collapsible-panel/PCollapsiblePanel.vue @@ -5,13 +5,12 @@ class="text fake" :style="{'-webkit-line-clamp': lineClamp}" > - +
-
- +
import { - defineComponent, onMounted, onUnmounted, onUpdated, reactive, toRefs, + computed, + defineComponent, nextTick, onMounted, onUnmounted, reactive, toRefs, watch, } from 'vue'; -import { debounce } from 'lodash'; - +import { + useDeepTextClamper, + useSimpleTextClamper, +} from '@/data-display/collapsible/collapsible-panel/composables/use-text-clamper'; import type { CollapsiblePanelProps } from '@/data-display/collapsible/collapsible-panel/type'; import PCollapsibleToggle from '@/data-display/collapsible/collapsible-toggle/PCollapsibleToggle.vue'; import { useProxyValue } from '@/hooks'; const PAD = 2; - export default defineComponent({ name: 'PCollapsiblePanel', components: { PCollapsibleToggle }, @@ -41,7 +42,7 @@ export default defineComponent({ event: 'update:isCollapsed', }, props: { - /* collapsible props */ + /* collapsible props */ isCollapsed: { type: Boolean, default: true, @@ -51,35 +52,53 @@ export default defineComponent({ type: Number, default: 2, }, + enableDeepClamp: { + type: Boolean, + default: false, + }, }, setup(props, { emit }) { const state = reactive({ proxyIsCollapsed: useProxyValue('isCollapsed', props, emit), fakeTextRef: null as null|HTMLElement, - isOverflow: false, + contentRef: null as null|HTMLElement, }); - /* util */ - const checkTextOverflow = debounce(() => { - if (!state.fakeTextRef) return; - state.isOverflow = state.fakeTextRef.scrollHeight > state.fakeTextRef.clientHeight + PAD; - }, 150); + const simpleTextClamper = useSimpleTextClamper(PAD, props.lineClamp || 2); + const deepTextClamper = useDeepTextClamper(props.lineClamp || 2); - onUpdated(() => { - checkTextOverflow(); - }); + const updateClamping = () => { + nextTick(() => { + if (props.enableDeepClamp) { + deepTextClamper.runTextClamper(state.proxyIsCollapsed, state.contentRef); + } else { + simpleTextClamper.runTextClamper(state.proxyIsCollapsed, state.contentRef, state.fakeTextRef); + } + }); + }; onMounted(() => { - window.addEventListener('resize', checkTextOverflow); - checkTextOverflow(); + window.addEventListener('resize', updateClamping); + updateClamping(); }); onUnmounted(() => { - window.removeEventListener('resize', checkTextOverflow); + window.removeEventListener('resize', updateClamping); + }); + + watch(() => state.proxyIsCollapsed, () => { + updateClamping(); + }); + + watch(() => state.contentRef, () => { + updateClamping(); }); return { ...toRefs(state), + isOverflow: computed(() => (props.enableDeepClamp + ? deepTextClamper.state.isOverflow + : simpleTextClamper.state.isOverflow)), }; }, }); @@ -97,13 +116,11 @@ export default defineComponent({ position: relative; word-break: break-word; .text { - &.collapsed, &.fake { + &.fake { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; - } - &.fake { position: absolute; visibility: hidden; top: 0; diff --git a/packages/mirinae/src/data-display/collapsible/collapsible-panel/composables/use-text-clamper.ts b/packages/mirinae/src/data-display/collapsible/collapsible-panel/composables/use-text-clamper.ts new file mode 100644 index 0000000000..378d2d6a67 --- /dev/null +++ b/packages/mirinae/src/data-display/collapsible/collapsible-panel/composables/use-text-clamper.ts @@ -0,0 +1,226 @@ +import { reactive } from 'vue'; + +interface TextClamper { + state: { isOverflow: boolean; } + runTextClamper: (isCollapsed: boolean, contentRef : HTMLElement | null, fakeTextRef? : HTMLElement | null) => void; +} + +/* eslint-disable no-continue */ +export const useDeepTextClamper = (lineClamp : number):TextClamper => { + const state = reactive({ + isOverflow: false, + clampedElement: null as null|HTMLElement, + originalStyles: null as null | Partial, + isClampApplied: false, + hiddenNodesMap: new Map(), + }); + + const calculateLineCount = (element: HTMLElement) : number => { + const computedStyle = window.getComputedStyle(element); + const paddingTop = parseFloat(computedStyle.paddingTop) || 0; + const paddingBottom = parseFloat(computedStyle.paddingBottom) || 0; + const totalHeight = (element.scrollHeight || element.getBoundingClientRect().height) - paddingTop - paddingBottom; + + if (totalHeight === 0) { + return 0; + } + + let lineHeight = parseFloat(computedStyle.lineHeight); + + if (Number.isNaN(lineHeight)) { + const fontSize = parseFloat(computedStyle.fontSize); + lineHeight = fontSize * 1.2; + } + + const lineCount = Math.floor(totalHeight / lineHeight); + return lineCount; + }; + + const clampNestedText = (node: Node, lineLimit: number) => { + if (!node) return; + const stack: Node[] = [node]; + let remainingLine = lineLimit; + let isFirstLine = true; + while (stack.length > 0) { + const currentNode = stack.pop(); + if (!currentNode) continue; + + if (remainingLine <= 0) { + hideNode(currentNode); + if (state.isOverflow) { + continue; + } + } + + if (currentNode.nodeType === Node.TEXT_NODE) { + const textContent = currentNode.textContent?.trim(); + if (!textContent) continue; + + const parentElement = currentNode.parentElement; + if (!parentElement) continue; + + const displayStyle = window.getComputedStyle(parentElement).display; + let contentLineCount = 0; + + if (displayStyle === 'inline') { + contentLineCount = calculateLineCount(parentElement); + } else { + const span = createHiddenSpan(textContent); + const parentPosition = parentElement.style.position; + parentElement.style.position = 'relative'; + parentElement.appendChild(span); + + contentLineCount = calculateLineCount(span); + parentElement.style.position = parentPosition; + span.remove(); + } + if (remainingLine <= contentLineCount) { + processLineClamp(parentElement as HTMLElement, remainingLine, isFirstLine, contentLineCount); + } + remainingLine -= contentLineCount; + isFirstLine = false; + } else if (currentNode.nodeType === Node.ELEMENT_NODE) { + const children = Array.from(currentNode.childNodes).reverse(); + stack.push(...children); + } + } + }; + + const processLineClamp = (element : HTMLElement, lineLimit : number, isFirstLine: boolean, res : number) => { + if (isFirstLine && lineLimit === 1 && res === 1) { + state.isOverflow = false; + } else { + state.isOverflow = true; + } + + // isClampStarted is used to determine if the clamp has been applied at a higher level - because it operates recursively + if (!state.isClampApplied) { + applyClampStyle(element, lineLimit); + state.isClampApplied = true; + } + }; + + const resetTrunkedText = () => { + state.isClampApplied = false; + if (state.clampedElement) resetClampStyle(state.clampedElement); + + state.hiddenNodesMap.forEach((_, node) => { + restoreNode(node); + }); + + state.hiddenNodesMap.clear(); + }; + const restoreNode = (node: Node) => { + if (node instanceof HTMLElement) { + const originalDisplay = state.hiddenNodesMap.get(node); + if (originalDisplay !== undefined) { + node.style.display = originalDisplay; + } + } + }; + + const hideNode = (node: Node) => { + if (node instanceof HTMLElement) { + state.hiddenNodesMap.set(node, node.style.display); + node.style.display = 'none'; + } + }; + + const createHiddenSpan = (text: string) => { + const span = document.createElement('span'); + span.textContent = text; + span.style.position = 'absolute'; + span.style.top = '0'; + span.style.left = '0'; + span.style.width = '100%'; + span.style.height = 'fit-content'; + span.style.visibility = 'hidden'; + span.style.lineHeight = 'inherit'; + span.style.fontStyle = 'inherit'; + span.style.fontWeight = 'inherit'; + span.style.paddingLeft = 'inherit'; + span.style.paddingRight = 'inherit'; + span.style.wordBreak = 'inherit'; + return span; + }; + + const resetClampStyle = (element: HTMLElement) => { + if (!state.originalStyles) return; + element.style.display = state.originalStyles.display || ''; + element.style.webkitBoxOrient = state.originalStyles.webkitBoxOrient || ''; + element.style.webkitLineClamp = state.originalStyles.webkitLineClamp || ''; + element.style.overflow = state.originalStyles.overflow || ''; + element.style.textOverflow = state.originalStyles.textOverflow || ''; + }; + + const applyClampStyle = (element: HTMLElement, lineLimit: number) => { + state.clampedElement = element; + state.originalStyles = { + display: element.style.display, + webkitBoxOrient: element.style.webkitBoxOrient, + webkitLineClamp: element.style.webkitLineClamp, + overflow: element.style.overflow, + }; + element.style.display = '-webkit-box'; + element.style.webkitBoxOrient = 'vertical'; + element.style.webkitLineClamp = `${lineLimit}`; + element.style.overflow = 'hidden'; + element.style.textOverflow = 'ellipsis'; + }; + + const runTextClamper = (isCollapsed: boolean, contentRef : HTMLElement | null) => { + if (lineClamp < 0) return; + if (!contentRef) return; + + resetTrunkedText(); + clampNestedText(contentRef, lineClamp); + if (!isCollapsed) { + resetTrunkedText(); + } + }; + + return { + state, + runTextClamper, + }; +}; + +export const useSimpleTextClamper = (PAD: number, lineClamp: number): TextClamper => { + const state = reactive({ + isOverflow: false, + }); + + const checkTextOverflow = (element : HTMLElement) => { + state.isOverflow = element.scrollHeight > element.clientHeight + PAD; + }; + + const applyClampStyle = (element: HTMLElement) => { + element.style.display = '-webkit-box'; + element.style.webkitBoxOrient = 'vertical'; + element.style.webkitLineClamp = `${lineClamp}`; + element.style.overflow = 'hidden'; + element.style.textOverflow = 'ellipsis'; + }; + + const resetClampStyle = (element: HTMLElement) => { + element.style.display = ''; + element.style.webkitBoxOrient = ''; + element.style.webkitLineClamp = ''; + element.style.overflow = ''; + element.style.textOverflow = ''; + }; + + const runTextClamper = (isCollapsed: boolean, contentRef : HTMLElement | null, fakeTextRef? : HTMLElement | null) => { + if (lineClamp < 0) return; + if (!fakeTextRef || !contentRef) return; + resetClampStyle(contentRef); + checkTextOverflow(fakeTextRef); + if (state.isOverflow && isCollapsed && lineClamp >= 0) { + applyClampStyle(contentRef); + } + }; + return { + state, + runTextClamper, + }; +}; diff --git a/packages/mirinae/src/data-display/collapsible/collapsible-panel/story-helper.ts b/packages/mirinae/src/data-display/collapsible/collapsible-panel/story-helper.ts index 6832720e72..9bfbbc5592 100644 --- a/packages/mirinae/src/data-display/collapsible/collapsible-panel/story-helper.ts +++ b/packages/mirinae/src/data-display/collapsible/collapsible-panel/story-helper.ts @@ -5,6 +5,7 @@ export const getCollapsiblePanelArgs = (): Args => ({ 'v-model': '', isCollapsed: true, lineClamp: 2, + enableDeepClamp: false, defaultSlot: faker.lorem.sentence(40), }); @@ -62,6 +63,21 @@ export const getCollapsiblePanelArgTypes = (): ArgTypes => ({ }, control: 'number', }, + enableDeepClamp: { + name: 'enableDeepClamp', + type: { name: 'boolean' }, + description: 'When set to true, text clamping is applied recursively to nested elements, treating text within both inline and block elements as a single line.', + table: { + type: { + summary: 'boolean', + }, + category: 'props', + defaultValue: { + summary: 'false', + }, + }, + control: 'boolean', + }, /* slot */ defaultSlot: { name: 'default', diff --git a/packages/mirinae/src/data-display/collapsible/collapsible-panel/type.ts b/packages/mirinae/src/data-display/collapsible/collapsible-panel/type.ts index 311735d79f..ce4437f6f4 100644 --- a/packages/mirinae/src/data-display/collapsible/collapsible-panel/type.ts +++ b/packages/mirinae/src/data-display/collapsible/collapsible-panel/type.ts @@ -1,4 +1,5 @@ export interface CollapsiblePanelProps { isCollapsed?: boolean; lineClamp?: number; + enableDeepClamp?: boolean; } From b9b7959443510286143b847ddb25afdf5e08d995 Mon Sep 17 00:00:00 2001 From: sulmo Date: Mon, 3 Feb 2025 14:42:25 +0900 Subject: [PATCH 11/15] build: update turbo to version 2.3.4 (#5609) - Updated the turbo package from version 1.13.4 to 2.3.4. - Modified configuration in turbo.json, changing "pipeline" to "tasks". - Added a persistent flag to the dev task in turbo.json. Signed-off-by: sulmo --- package-lock.json | 110 +++++++++++++++++++++++----------------------- package.json | 2 +- turbo.json | 3 +- 3 files changed, 58 insertions(+), 57 deletions(-) diff --git a/package-lock.json b/package-lock.json index 94dda1e903..891790a741 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "eslint-config-custom": "*", "husky": "^8.0.3", "lint-staged": "^13.2.0", - "turbo": "^1.13.4" + "turbo": "^2.3.4" }, "engines": { "node": ">=20.10.0", @@ -31527,26 +31527,26 @@ "dev": true }, "node_modules/turbo": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-1.13.4.tgz", - "integrity": "sha512-1q7+9UJABuBAHrcC4Sxp5lOqYS5mvxRrwa33wpIyM18hlOCpRD/fTJNxZ0vhbMcJmz15o9kkVm743mPn7p6jpQ==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.3.4.tgz", + "integrity": "sha512-1kiLO5C0Okh5ay1DbHsxkPsw9Sjsbjzm6cF85CpWjR0BIyBFNDbKqtUyqGADRS1dbbZoQanJZVj4MS5kk8J42Q==", "dev": true, "bin": { "turbo": "bin/turbo" }, "optionalDependencies": { - "turbo-darwin-64": "1.13.4", - "turbo-darwin-arm64": "1.13.4", - "turbo-linux-64": "1.13.4", - "turbo-linux-arm64": "1.13.4", - "turbo-windows-64": "1.13.4", - "turbo-windows-arm64": "1.13.4" + "turbo-darwin-64": "2.3.4", + "turbo-darwin-arm64": "2.3.4", + "turbo-linux-64": "2.3.4", + "turbo-linux-arm64": "2.3.4", + "turbo-windows-64": "2.3.4", + "turbo-windows-arm64": "2.3.4" } }, "node_modules/turbo-darwin-64": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-1.13.4.tgz", - "integrity": "sha512-A0eKd73R7CGnRinTiS7txkMElg+R5rKFp9HV7baDiEL4xTG1FIg/56Vm7A5RVgg8UNgG2qNnrfatJtb+dRmNdw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.3.4.tgz", + "integrity": "sha512-uOi/cUIGQI7uakZygH+cZQ5D4w+aMLlVCN2KTGot+cmefatps2ZmRRufuHrEM0Rl63opdKD8/JIu+54s25qkfg==", "cpu": [ "x64" ], @@ -31557,9 +31557,9 @@ ] }, "node_modules/turbo-darwin-arm64": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.13.4.tgz", - "integrity": "sha512-eG769Q0NF6/Vyjsr3mKCnkG/eW6dKMBZk6dxWOdrHfrg6QgfkBUk0WUUujzdtVPiUIvsh4l46vQrNVd9EOtbyA==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.3.4.tgz", + "integrity": "sha512-IIM1Lq5R+EGMtM1YFGl4x8Xkr0MWb4HvyU8N4LNoQ1Be5aycrOE+VVfH+cDg/Q4csn+8bxCOxhRp5KmUflrVTQ==", "cpu": [ "arm64" ], @@ -31570,9 +31570,9 @@ ] }, "node_modules/turbo-linux-64": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-1.13.4.tgz", - "integrity": "sha512-Bq0JphDeNw3XEi+Xb/e4xoKhs1DHN7OoLVUbTIQz+gazYjigVZvtwCvgrZI7eW9Xo1eOXM2zw2u1DGLLUfmGkQ==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.3.4.tgz", + "integrity": "sha512-1aD2EfR7NfjFXNH3mYU5gybLJEFi2IGOoKwoPLchAFRQ6OEJQj201/oNo9CDL75IIrQo64/NpEgVyZtoPlfhfA==", "cpu": [ "x64" ], @@ -31583,9 +31583,9 @@ ] }, "node_modules/turbo-linux-arm64": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-1.13.4.tgz", - "integrity": "sha512-BJcXw1DDiHO/okYbaNdcWN6szjXyHWx9d460v6fCHY65G8CyqGU3y2uUTPK89o8lq/b2C8NK0yZD+Vp0f9VoIg==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.3.4.tgz", + "integrity": "sha512-MxTpdKwxCaA5IlybPxgGLu54fT2svdqTIxRd0TQmpRJIjM0s4kbM+7YiLk0mOh6dGqlWPUsxz/A0Mkn8Xr5o7Q==", "cpu": [ "arm64" ], @@ -31596,9 +31596,9 @@ ] }, "node_modules/turbo-windows-64": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-1.13.4.tgz", - "integrity": "sha512-OFFhXHOFLN7A78vD/dlVuuSSVEB3s9ZBj18Tm1hk3aW1HTWTuAw0ReN6ZNlVObZUHvGy8d57OAGGxf2bT3etQw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.3.4.tgz", + "integrity": "sha512-yyCrWqcRGu1AOOlrYzRnizEtdkqi+qKP0MW9dbk9OsMDXaOI5jlWtTY/AtWMkLw/czVJ7yS9Ex1vi9DB6YsFvw==", "cpu": [ "x64" ], @@ -31609,9 +31609,9 @@ ] }, "node_modules/turbo-windows-arm64": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-1.13.4.tgz", - "integrity": "sha512-u5A+VOKHswJJmJ8o8rcilBfU5U3Y1TTAfP9wX8bFh8teYF1ghP0EhtMRLjhtp6RPa+XCxHHVA2CiC3gbh5eg5g==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.3.4.tgz", + "integrity": "sha512-PggC3qH+njPfn1PDVwKrQvvQby8X09ufbqZ2Ha4uSu+5TvPorHHkAbZVHKYj2Y+tvVzxRzi4Sv6NdHXBS9Be5w==", "cpu": [ "arm64" ], @@ -57978,58 +57978,58 @@ } }, "turbo": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-1.13.4.tgz", - "integrity": "sha512-1q7+9UJABuBAHrcC4Sxp5lOqYS5mvxRrwa33wpIyM18hlOCpRD/fTJNxZ0vhbMcJmz15o9kkVm743mPn7p6jpQ==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.3.4.tgz", + "integrity": "sha512-1kiLO5C0Okh5ay1DbHsxkPsw9Sjsbjzm6cF85CpWjR0BIyBFNDbKqtUyqGADRS1dbbZoQanJZVj4MS5kk8J42Q==", "dev": true, "requires": { - "turbo-darwin-64": "1.13.4", - "turbo-darwin-arm64": "1.13.4", - "turbo-linux-64": "1.13.4", - "turbo-linux-arm64": "1.13.4", - "turbo-windows-64": "1.13.4", - "turbo-windows-arm64": "1.13.4" + "turbo-darwin-64": "2.3.4", + "turbo-darwin-arm64": "2.3.4", + "turbo-linux-64": "2.3.4", + "turbo-linux-arm64": "2.3.4", + "turbo-windows-64": "2.3.4", + "turbo-windows-arm64": "2.3.4" } }, "turbo-darwin-64": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-1.13.4.tgz", - "integrity": "sha512-A0eKd73R7CGnRinTiS7txkMElg+R5rKFp9HV7baDiEL4xTG1FIg/56Vm7A5RVgg8UNgG2qNnrfatJtb+dRmNdw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.3.4.tgz", + "integrity": "sha512-uOi/cUIGQI7uakZygH+cZQ5D4w+aMLlVCN2KTGot+cmefatps2ZmRRufuHrEM0Rl63opdKD8/JIu+54s25qkfg==", "dev": true, "optional": true }, "turbo-darwin-arm64": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-1.13.4.tgz", - "integrity": "sha512-eG769Q0NF6/Vyjsr3mKCnkG/eW6dKMBZk6dxWOdrHfrg6QgfkBUk0WUUujzdtVPiUIvsh4l46vQrNVd9EOtbyA==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.3.4.tgz", + "integrity": "sha512-IIM1Lq5R+EGMtM1YFGl4x8Xkr0MWb4HvyU8N4LNoQ1Be5aycrOE+VVfH+cDg/Q4csn+8bxCOxhRp5KmUflrVTQ==", "dev": true, "optional": true }, "turbo-linux-64": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-1.13.4.tgz", - "integrity": "sha512-Bq0JphDeNw3XEi+Xb/e4xoKhs1DHN7OoLVUbTIQz+gazYjigVZvtwCvgrZI7eW9Xo1eOXM2zw2u1DGLLUfmGkQ==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.3.4.tgz", + "integrity": "sha512-1aD2EfR7NfjFXNH3mYU5gybLJEFi2IGOoKwoPLchAFRQ6OEJQj201/oNo9CDL75IIrQo64/NpEgVyZtoPlfhfA==", "dev": true, "optional": true }, "turbo-linux-arm64": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-1.13.4.tgz", - "integrity": "sha512-BJcXw1DDiHO/okYbaNdcWN6szjXyHWx9d460v6fCHY65G8CyqGU3y2uUTPK89o8lq/b2C8NK0yZD+Vp0f9VoIg==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.3.4.tgz", + "integrity": "sha512-MxTpdKwxCaA5IlybPxgGLu54fT2svdqTIxRd0TQmpRJIjM0s4kbM+7YiLk0mOh6dGqlWPUsxz/A0Mkn8Xr5o7Q==", "dev": true, "optional": true }, "turbo-windows-64": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-1.13.4.tgz", - "integrity": "sha512-OFFhXHOFLN7A78vD/dlVuuSSVEB3s9ZBj18Tm1hk3aW1HTWTuAw0ReN6ZNlVObZUHvGy8d57OAGGxf2bT3etQw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.3.4.tgz", + "integrity": "sha512-yyCrWqcRGu1AOOlrYzRnizEtdkqi+qKP0MW9dbk9OsMDXaOI5jlWtTY/AtWMkLw/czVJ7yS9Ex1vi9DB6YsFvw==", "dev": true, "optional": true }, "turbo-windows-arm64": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-1.13.4.tgz", - "integrity": "sha512-u5A+VOKHswJJmJ8o8rcilBfU5U3Y1TTAfP9wX8bFh8teYF1ghP0EhtMRLjhtp6RPa+XCxHHVA2CiC3gbh5eg5g==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.3.4.tgz", + "integrity": "sha512-PggC3qH+njPfn1PDVwKrQvvQby8X09ufbqZ2Ha4uSu+5TvPorHHkAbZVHKYj2Y+tvVzxRzi4Sv6NdHXBS9Be5w==", "dev": true, "optional": true }, diff --git a/package.json b/package.json index 0746b96460..0af95d55e2 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "eslint-config-custom": "*", "husky": "^8.0.3", "lint-staged": "^13.2.0", - "turbo": "^1.13.4" + "turbo": "^2.3.4" }, "engines": { "npm": ">=10.2.3", diff --git a/turbo.json b/turbo.json index bb737e5be5..7a544ec5d9 100644 --- a/turbo.json +++ b/turbo.json @@ -2,7 +2,7 @@ "globalDependencies": [ "turbo.json", "package.json", "package-lock.json" ], - "pipeline": { + "tasks": { "@cloudforet/utils#build": { "outputs": ["./dist/**"], "inputs": [ @@ -75,6 +75,7 @@ "cache": true }, "dev": { + "persistent": true, "cache": false }, "lint": { From 2e9aba0c477f3162a8eadb8e7b11585ab1de7b12 Mon Sep 17 00:00:00 2001 From: sulmo Date: Mon, 3 Feb 2025 16:55:01 +0900 Subject: [PATCH 12/15] feat: create unified-storybook app (#5610) * feat: create unified-storybook app feat(unified-storybook): add initial setup for unified storybook - Added ESLint configuration and ignore files - Configured Storybook with custom themes and settings - Introduced PostCSS and Tailwind CSS configurations - Included icons, manifest, and other public assets - Set up TypeScript configuration for the project feat(unified-storybook): add initial setup for unified storybook - Added ESLint configuration and ignore files - Configured Storybook with custom themes and settings - Introduced PostCSS and Tailwind CSS configurations - Included icons, manifest, and other public assets Signed-off-by: sulmo * chore: translate introduce docs docs: update storybook introduction to english - Translated the Storybook overview and sections from Korean to English. - Updated component descriptions for clarity and consistency. ``` Signed-off-by: sulmo * style: update eslint and tsconfig settings for storybook apps - Disabled ESLint rule for import dependencies in vite config files - Removed .eslintignore file from unified-storybook - Simplified .eslintrc.js by removing custom rules and settings - Cleaned up tsconfig.json by removing unused paths and types Signed-off-by: sulmo * chore(unified-storybook): update script name and turbo config - Renamed the development script for unified-storybook. - Added configuration for the new script in turbo.json. Signed-off-by: sulmo --------- Signed-off-by: sulmo --- apps/mirinae-storybook/vite.config.js | 1 + apps/unified-storybook/.eslintrc.js | 5 ++ apps/unified-storybook/.gitignore | 3 + .../.storybook/CloudforetTheme.js | 30 ++++++++ apps/unified-storybook/.storybook/main.ts | 36 ++++++++++ apps/unified-storybook/.storybook/manager.js | 9 +++ apps/unified-storybook/.storybook/preview.js | 67 ++++++++++++++++++ apps/unified-storybook/package.json | 20 ++++++ apps/unified-storybook/postcss.config.js | 12 ++++ apps/unified-storybook/public/favicon.ico | Bin 0 -> 13488 bytes .../public/images/SpaceONE_logoTypeA.svg | 10 +++ .../public/images/icons/icon-128x128.png | Bin 0 -> 16909 bytes .../public/images/icons/icon-144x144.png | Bin 0 -> 18669 bytes .../public/images/icons/icon-152x152.png | Bin 0 -> 18157 bytes .../public/images/icons/icon-192x192.png | Bin 0 -> 22011 bytes .../public/images/icons/icon-256x256.png | Bin 0 -> 27373 bytes .../public/images/icons/icon-512x512.png | Bin 0 -> 55471 bytes apps/unified-storybook/public/manifest.json | 32 +++++++++ apps/unified-storybook/src/introduce.mdx | 26 +++++++ apps/unified-storybook/tailwind.config.js | 11 +++ apps/unified-storybook/tsconfig.json | 22 ++++++ apps/unified-storybook/vite.config.js | 22 ++++++ apps/web-storybook/tsconfig.json | 5 -- apps/web-storybook/vite.config.js | 1 + package-lock.json | 25 +++++++ turbo.json | 4 ++ 26 files changed, 336 insertions(+), 5 deletions(-) create mode 100755 apps/unified-storybook/.eslintrc.js create mode 100755 apps/unified-storybook/.gitignore create mode 100644 apps/unified-storybook/.storybook/CloudforetTheme.js create mode 100644 apps/unified-storybook/.storybook/main.ts create mode 100644 apps/unified-storybook/.storybook/manager.js create mode 100644 apps/unified-storybook/.storybook/preview.js create mode 100644 apps/unified-storybook/package.json create mode 100644 apps/unified-storybook/postcss.config.js create mode 100644 apps/unified-storybook/public/favicon.ico create mode 100644 apps/unified-storybook/public/images/SpaceONE_logoTypeA.svg create mode 100644 apps/unified-storybook/public/images/icons/icon-128x128.png create mode 100644 apps/unified-storybook/public/images/icons/icon-144x144.png create mode 100644 apps/unified-storybook/public/images/icons/icon-152x152.png create mode 100644 apps/unified-storybook/public/images/icons/icon-192x192.png create mode 100644 apps/unified-storybook/public/images/icons/icon-256x256.png create mode 100644 apps/unified-storybook/public/images/icons/icon-512x512.png create mode 100644 apps/unified-storybook/public/manifest.json create mode 100644 apps/unified-storybook/src/introduce.mdx create mode 100644 apps/unified-storybook/tailwind.config.js create mode 100644 apps/unified-storybook/tsconfig.json create mode 100644 apps/unified-storybook/vite.config.js diff --git a/apps/mirinae-storybook/vite.config.js b/apps/mirinae-storybook/vite.config.js index fb340a1d0a..78030bbc64 100644 --- a/apps/mirinae-storybook/vite.config.js +++ b/apps/mirinae-storybook/vite.config.js @@ -1,3 +1,4 @@ +/* eslint-disable import/no-extraneous-dependencies */ import path from 'path'; import commonjs from '@rollup/plugin-commonjs'; diff --git a/apps/unified-storybook/.eslintrc.js b/apps/unified-storybook/.eslintrc.js new file mode 100755 index 0000000000..6ab870328b --- /dev/null +++ b/apps/unified-storybook/.eslintrc.js @@ -0,0 +1,5 @@ +module.exports = { + root: false, + extends: ['custom'], + ignorePatterns: ['**/node_modules/**'], +}; diff --git a/apps/unified-storybook/.gitignore b/apps/unified-storybook/.gitignore new file mode 100755 index 0000000000..7a7f1e3c25 --- /dev/null +++ b/apps/unified-storybook/.gitignore @@ -0,0 +1,3 @@ +# Transpiled code +.out +storybook-static diff --git a/apps/unified-storybook/.storybook/CloudforetTheme.js b/apps/unified-storybook/.storybook/CloudforetTheme.js new file mode 100644 index 0000000000..5491b4a7cc --- /dev/null +++ b/apps/unified-storybook/.storybook/CloudforetTheme.js @@ -0,0 +1,30 @@ +export default { + base: 'light', + colorPrimary: '#6638B6', + colorSecondary: 'rgba(102, 56, 182, 0.9)', + + // UI + appBg: 'white', + appContentBg: 'white', + appBorderColor: 'silver', + appBorderRadius: 4, + + // Text colors + textColor: 'black', + textInverseColor: 'rgba(255,255,255,0.9)', + + // Toolbar default and active colors + barTextColor: 'silver', + barSelectedColor: '#6638B6', + barBg: 'white', + + // Form colors + inputBg: 'white', + inputBorder: 'silver', + inputTextColor: 'black', + inputBorderRadius: 4, + + brandTitle: 'Cloudforet Design System', + brandUrl: 'https://github.com/cloudforet-io/console', + brandImage: './images/SpaceONE_logoTypeA.svg', +}; diff --git a/apps/unified-storybook/.storybook/main.ts b/apps/unified-storybook/.storybook/main.ts new file mode 100644 index 0000000000..9832c9d050 --- /dev/null +++ b/apps/unified-storybook/.storybook/main.ts @@ -0,0 +1,36 @@ +import type { StorybookConfig } from "@storybook/vue-vite"; +import { mainConfig } from "storybook-config-custom"; + +// Replace your-framework with the framework you are using (e.g., react-webpack5, vue3-vite) + +const config: StorybookConfig = { + ...mainConfig, + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + // πŸ‘‡ Retrieve the current environment from the configType argument + refs: (config, { configType }) => { + if (configType === 'DEVELOPMENT') { + return { + mirinae: { + title: 'Mirinae Storybook (development mode)', + url: 'http://localhost:6006', + }, + web: { + title: 'Web Component (development mode)', + url: 'http://localhost:6007', + }, + }; + } + return { + mirinae: { + title: 'Mirinae Component', + url: 'https://your-production-react-storybook-url', + }, + web: { + title: 'Web Component', + url: 'https://your-production-angular-storybook-url', + }, + }; + }, +}; + +export default config; diff --git a/apps/unified-storybook/.storybook/manager.js b/apps/unified-storybook/.storybook/manager.js new file mode 100644 index 0000000000..6b06b97d64 --- /dev/null +++ b/apps/unified-storybook/.storybook/manager.js @@ -0,0 +1,9 @@ + +import CloudforetThemeVar from './CloudforetTheme'; +import { setConfig } from 'storybook-config-custom'; + +// window.STORYBOOK_GA_ID = 'UA-159327743-4'; + +setConfig({ + theme: CloudforetThemeVar, +}) diff --git a/apps/unified-storybook/.storybook/preview.js b/apps/unified-storybook/.storybook/preview.js new file mode 100644 index 0000000000..64b590ce6c --- /dev/null +++ b/apps/unified-storybook/.storybook/preview.js @@ -0,0 +1,67 @@ +import webFontLoader from 'webfontloader'; + +import screens from 'mirinae-foundation/screens.cjs'; + +import { fontUrls, webFonts } from 'mirinae-foundation/web-fonts.cjs'; + +import CloudforetTheme from './CloudforetTheme'; +import { createTheme } from 'storybook-config-custom'; + +webFontLoader.load({ + google: { + families: webFonts, + urls: fontUrls, + }, +}); + +const viewports = {}; +Object.keys(screens).forEach((k) => { + const v = screens[k]; + viewports[k] = { + name: k, + styles: { + width: v.min || v.max, + height: '100%', + }, + }; +}); + +const preview = { + parameters : { + controls: { expanded: true }, + layout: 'centered', + docs: { + extractComponentDescription: (component, { notes }) => { + if (notes) { + return typeof notes === 'string' ? notes : notes.markdown || notes.text; + } + return null; + }, + theme: createTheme(CloudforetTheme), + }, + viewport: { + viewports, + }, + options: { + storySort: (a, b) => a.title === b.title ? 0 : a.id.localeCompare(b.id, undefined, { numeric: true }), + }, + actions: { argTypesRegex: '^on.*' }, + }, + globalTypes: { + locale: { + name: 'locale', + description: 'Internationalization locale', + defaultValue: 'en', + toolbar: { + icon: 'globe', + items: [ + { value: 'en', right: 'πŸ‡ΊπŸ‡Έ', title: 'English' }, + { value: 'ko', right: 'πŸ‡°πŸ‡·', title: 'ν•œκ΅­μ–΄' }, + { value: 'jp', right: 'πŸ‡―πŸ‡΅', title: 'ζ—₯本θͺž' }, + ], + }, + }, + } +}; + +export default preview; diff --git a/apps/unified-storybook/package.json b/apps/unified-storybook/package.json new file mode 100644 index 0000000000..8cb10989d2 --- /dev/null +++ b/apps/unified-storybook/package.json @@ -0,0 +1,20 @@ +{ + "name": "unified-storybook", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "unified-storybook-dev": "storybook dev -p 6008", + "build": "storybook build" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "eslint-config-custom": "*", + "mirinae-foundation": "*", + "postcss-config-custom": "*", + "storybook-config-custom": "*", + "tsconfig": "*" + } +} diff --git a/apps/unified-storybook/postcss.config.js b/apps/unified-storybook/postcss.config.js new file mode 100644 index 0000000000..fe02f9382a --- /dev/null +++ b/apps/unified-storybook/postcss.config.js @@ -0,0 +1,12 @@ +/* eslint-disable global-require, @typescript-eslint/no-var-requires */ +const path = require('path'); + +const getPostcssConfig = require('postcss-config-custom'); + +module.exports = getPostcssConfig({ + tailwindcssOptions: { + config: path.resolve(__dirname, 'tailwind.config.js'), + }, + postcssSimpleVarsOptions: {}, + disablePostcssImport: true, +}); diff --git a/apps/unified-storybook/public/favicon.ico b/apps/unified-storybook/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..828616b59b3113ae8f91d89fa2a805221d7b7f4b GIT binary patch literal 13488 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 eo)q3b^8W$HhQgePVVVE{0000 + + + + + + + + + diff --git a/apps/unified-storybook/public/images/icons/icon-128x128.png b/apps/unified-storybook/public/images/icons/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..f257cab3d3803e05ff056e08e3a418a33f37b8df GIT binary patch literal 16909 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 VPvlF`-#=`Skx&q?68#eR{{X+j*=7I$ literal 0 HcmV?d00001 diff --git a/apps/unified-storybook/public/images/icons/icon-144x144.png b/apps/unified-storybook/public/images/icons/icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..b4986fa79fbbc22a94b14b3f486cdc07f84da8d2 GIT binary patch literal 18669 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≻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 P00000NkvXXu0mjfM&1q7 literal 0 HcmV?d00001 diff --git a/apps/unified-storybook/public/images/icons/icon-152x152.png b/apps/unified-storybook/public/images/icons/icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..db94c67316a758695ff219358b01baffcd2f55be GIT binary patch literal 18157 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 z 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 Hu0mjf0zYaW literal 0 HcmV?d00001 diff --git a/apps/unified-storybook/public/images/icons/icon-192x192.png b/apps/unified-storybook/public/images/icons/icon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..bea361e900ba2767464caba84d6582769446147b GIT binary patch literal 22011 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 wW_#COJhf^iLSXxXdTJCMs>d$Ix74>tM}Ja z_#K9ul7S}xz^3~5gYaEEtrP%2xv|&Q_tIB;BVy(1%wb{eY6;@-b9RGM0{~)@er^_4 zjvz0fCCJv^MV#)WwUZ8LZ!J!z$FIhv<|YfWvsVi60BHrNYg+|4S_xazNlF04{6ydk zoIzd|KtE?E7f%sCak_u-6@g#>{hE^w_zw~m_AZeI4T zF2KJWEi7HVy~OF@lKyiF&Tju<>*Dz@HNh3e>1W}_$<4v_cS`>tw6^*Wotw9Z(?15c zw&Daift*1uUY>AT?*Gub*|~bTdfK`EA6WnA=l^X0xN6nZ{ximZD~q%9e}?e%lJ|j6 z<6jE-Z>c@C{oO#E??9fe-X2yUc^|l#ul~-)O+?lMWZ~uNq3!DG^zVgw`)`qfJn&fq znbj<;>|Op&g5|$F0+O@v0*TY{aPe@la|yHa@N0APitzJ`@CvbV35#%X{gYJ9)!N?1 z|Gy;_65$d4-$>y`V{PGO@&8F|Z6#vk>fvkwpR&EPg)NBF&Bc}u_#Z`z$htbYdcX&U zOUL_PzgL!(ee23{Y8KR)AYrK!BZxgZm%is;P-6yLft8xLARd<;3aW z>fx}rw-&MC6BMwr767q>1TFa4`7C+3*)6QBh1dmnEUj&tndEf*6W6eb5T&=wS z8o}S^|LG6bu2yg!|BraQHdex1yl^|W5w?W0wB{3L7vdG!f#my@q@NaG! z9`bT>naC4d=+u%WWfIV`at8CuAYa&c_euXlVnNPXJ_N$qlj=;I`ti_-pw8 zluOCp6TZs+|8gZQko&)`oa}-BFdq>MtG{j`PG|Mk9zfP~|N7egztPA4XykuA?`sEw zGyT6<$v;Q;bhYvFweSE*+roACKd?j2|C9Kh7C!%X;s0lg`A@0-TjBq!-Twa*{$HxG zva@ip1;OJiC*9xaaQ=-*|6CZ(|M!~x<)pR!vX66ogNQ-*U7ftGS=Q5muTo95<%p&GOaYpix$UGC#k)DV0Z(mO z;~obFV~{Jc7x=`iz!-ge{B9Z7moJOHK)_?LCo+K_P8o|iqb@QXd3c$t8UDMA8NRvx zYrDZQZpXjI&xi>82!)VuX>MC3v>`p^M7)$X6zuQ_=3JpGG z_0t*Brx*c`RqosmRZGj?bVcsNu)Ui3a_sGE9SH$aY2s$heV|>hqdE8fMv@z*<|qAU zQR=P?d#pB>6a4jz7sais(n(^aq262A@tzOC{+gaq0CGUIy{5R&xex8Crol>&YI*Vb z)In)|gOEsvBy0Pwj^Bk8(~IzVF@9!8*cq)(_VU@yGG%BeW^L4E8zxJ}4lV-bET5^) zl#EGg-=TzWc0cC6JF36<5&)=P zxrm)d^7#0RAf4>n@F2pJXJIQQu;~u;qK~~L`)H~a@2bAEhan8`6SgXD(ipO`UxWGH zYJ6z_{4P5}zDlyL)ob^|xYMD#n^*Q+xToGqyNOn<$VWR9RC>g&OP7|1K~D9;Qpmyl zVBu<;yeN*{dnh7+>vudf#C7>i44BVB|FMA@M%i|?CoCU z^V%YWqN;=sgss8s?3+-%pon$c+{b0lKw17vZ#W*f5!ZDdDViD{d=jTGeu$KF zXkDi3YIw&NxFCd_F@#~iZE26bX&lGC-QqCS=SL~j1dtu70^}mQcD;9-o$cUmvm)XA zVcEIE589d#RiIjYEiB#%{mSsWOO`hK_iCMPfLQm_l&-{zZ^FPahls|gC>9rr{`u{0 zF@E}t_xhr?>*lq+*_~4pFXUdmSg~O^%o<~2a|>|h(s9uTceoM`N6*&E>B85(Bw@W8 zzuf}6PItwK&bK^-y>Oz;GT-ps6cOiOb!gC8d+9NT@UQ)oQ+0 zzb=6K9lfu`uKEUpOU^ZrX?J5jbRnNcN%;kf;C5;CV`(}L^n7tG8A+^Wi&!HInE=!t zRi1bt!j<9uh~BBO7d!S?QdmwAC$6aGoeHV6bP%%e$(=to!6tTvta)2MKG8fETXS%< z1;0rjCymoTy06>447y6HrNKewVe|BL3i6ouRmDU4(7J0}jvuk^x%zE0#8+>I6yTB$ zGBp%WopGugPnNvgh;F-$Y)OuMuxQ3sDGquP9Z$}x-XXn!S{ZT4qr>h#L}Po_ecs>M zs_`;JzM=|B#FqAtKrMutq36kOQOPw)(OJvq@EhJn3ma1-3(S84IoUVY(+y62_J zOcTjlu{bm7VC8hM*;(0$6PG}WR4ytVQwXff`E|*hAjBQ{i8(TA4z>xih*efP_CWfP zuRkGrDny0?s<}_44dxs-7Invv0UxrWFHzIByh49#I@2?d8eX~LlV#~7fqE?+d-iZ6!WJOiM!jmeOR)UQ!M{?@lM@(X@TrF`^uXSEj zj|R2+RS#@7KIxa=87rhneewse7<7z=oCi+5zKhXYk zOT3YOy9gzzMH}#WoQhrZaXlMRSrhp3@qh!1hSb*}J8Uf{w*5>wRl+ni;9cjM3|xh%DMRg%{A zzAWtvs~P^CezPSbsv^_{;G9~P>Rr|GMkh_)Ax!tXUns*j(3fz{AXtcoanr55MkoSra;3h-Powvg= zeFmZ2n6<=I^ejLP7uX~6E5{WGz!qvOy^K7`EzmWDmUL@)T22Fg;ZS2a~ z4Nhz@_r0y-;voaIS7TMG`8>@J;;}7ci{2t7@vaey3;hWH>R z+wP!FN#u{558c%J#nPRNwke&=ZU{&%J4$useIF}7Bm7v5BCZ!DjUh+60=saMI(^!F z9+wSlf%)xGKZilFQEa~XY1$&7nlt?*yd~S4)l9A8D0FF}@RRQgVVW4^nT_@V5;34M zGVeX2hgq7t3v-v;ok6&e;&Ya!gSX|!Y4QzI7unP+NSJWT{|r-F2;kcb_{F6hzaO^q z7d-uG_RdEZk9z$q3JWpi*u`e<>Q(bOZB(ht&u>dTNaNMx!WALi(Rn-%YhrU?UZ?S*15dO7V$AjD6&P}DcZ6dILG<@}IP=N+1VPd?`N`i6crh+6{?D%k6 z!|mi+A#En-#D%un%Z#bsAlrJY&uu4Fc90|P`?tB6?|lhd?~i))Kl(-Aou<3&Q%QX{ zFivKHRm7oKe(J}aYPPnGU14gpQ(7*2g4NnJ}9ALH;Pi?kb z>4yDzNqrqACP%EK-fP7VD0_RjYTmjD!n|l^**+F8;~Snpxo01^Wwu7qLNB@LscmJU7vE-;d|7txGnBMWxRXedn~jLd8RJDqi>gop8AckUs9zUM^90kK#n+@ zp4?2r`l!u5Ar>+fIXJ*R0^XV5%X<81RwQ9FgSo~&=&;VCeBHP&s2TznYT8zj-LR+^ zhm?0Ykn`~+P-?tAVa?9AfI?TUINdJL+u9V`Wm^BBgQq7nhE zAssm!Nl*-yZBp;WQGo=H5?GD1A~OC7d9I;OjozB1AQ@)R|%+>XHkpp5Jv(n%Lklsv*aut zh}m(j!;=2Qm_n*R^3YYZ8NWQ~@z3a^<-N;uv!AyZB{c`H8Pj}XSvoeFzK6sU=HO-w z<2}C@4BdAiZZ_Yt{F8i%(|7EFz~+pb_i=ozIb9Tg?`#ucM}jY5_qnB;vzu--M)Q|N z`ez0P!SrfcvzEd^TQ)7#$jaf(scnLV+sMqH54pZGF7A>cdnDhsNfna!c)2r3s7%`R zR9oxYjzYy(R0A=$Y;F&gyQD@8p7I$*zAr}{l$+3-U1Ye1V<|ATJU+#}_ZRPYSbIeo z+*r)yz-aTumC%1XvzO7Ds8b#+40zTD*vQ5vRVs6s`K1J|nZ%hv%XYDS>7_ zV(D$G3y(4#*Zh_8X!&r~H*I`k+k?0^$m1E{xUwS>Y<7EiPqTLA=NI_UJc|{X$hHm` zegYQ{_=n!!j}ZBS%Ym{$7F|KHt1FIx1K^w0=C;#+vi!NoOE#Xp_uy(sMaj zpsnI8h#y)hU1;ZtB#U?9(rag5pPaEKe`f-@i`;FJR^BmuQPY)+sfR)d&z$_HQ6z3! zk1uI6mEs7mC#4w_c-jb>SwQUpt7 z>~26p+#nS{zb&N2-dqhmg6AmrGjD3{D3maya>aMj*Vy-n z&{y)wK7hsVUS1?)%9u}Z!O!|ETB5G`c34&qCbd7t2v*&?B^P>Ow~%e5ET`GEpTgI? z>}Pr7dIdY%;{2PL4xVa86Gj}82K>UYp~CNZ#E=V*DX>Wp5>75ZkzCP%4!n{K((N~T zhQ;?AvPQFf>7b)Qr13c*7t4vts%gBbqrL6)!K!uHbQWj22)tV@RLrqAFv`5l5^1QW z?5?%hI&J-#ez({!0j$vy9p9%j5R~~M3H z5dE&U*Q6bV{1#g%eSIb9?c6(4S(cd{DD3c5(@1m$eHZt0L;2L-9y(VFM2CQ^vNv4(>d5ZdCrSHpv6@3H@LF85~JuU=hcJ zLuFA+A68#m)QQ+v)xFbP8R}S7JG!e3U(KRqUY?DkACw!&{G`nF5`OaOMs<-&b-%I7e^|z#@4k!?$i3eb(QPw(bGCTPW@3TQ44LX$b)_2KA`iDUIl`(JSQ2twP~5^zys%z48e`~sj(DlcCDK*Otg|LY zM}e%;$alUT#l$lvJ9!+5q8zcmf5AePv)3SXiJ*(n($9Oih){)Mdfph>%lJi%OVNxvB2ZT%~z5{WTL_*YN9Uo@FjdY?UNhG_)Jee$ifSKk3H7zt({1(pbA+U{X^5PdCx*673JQ=WX(?H(t}ot!*AYI{pi z7MI>Wl(CQX`^*J(zK?s#N{|(@^sDw`*RadO>q*v6h|Z%v6pj_y=TV3uPd|99?_%U4 zrTTJ7l6VVlJHd&CZf`7=w%puDC-bcMq9NES2+gRiH=RVpq*9W+vrQmfC>@VSpk$9O zp0$Cp&gsm#7CE=X_xbT>=%&%_b!0n4msy;&@N5cUrB#dqnT`%e>@oGJ@5)7VQx$$B z>riO1hzBx1oy>~~CG6`3#0^d4%;u$^^#^x04_825W-fDzdxbgVE22tE6Ms_UI)me5 zx2(k)J6oJ|vw2757N6|!7wVeB$IHfh&9U!Wa1Zsg&wI=S{Y3Q=aiI6Zs!gqT5j^Wy zJELg7U++m4`VO)rOY($MGID}^Aap)XC0GY{{dw7gagI^`ssWR-4L&CTVJao+shp`C zwYCn3uelBIjdEtOqjj-sKO&d+vE ztXk0EjdfVZR4$_*V3Bn|CmbCTgmUa5@(!wAU5}**+7ovas^2>E4fhp zLiDr^?fE9k^}ha#BEI>^FYQ{LBHiP$?NHH~8+9~%9K@U4o5~$ezuwroePjZ>;WoH` zn6M%{n`%unkp>w5=Ar*lraB49+4D>OvHn>)a#R1TqtO@%a;l5+PA*#dBz*LMQMoCv z?dH~I3iZx)jTHGRIy`bPDK}bC=WK>H^eDG+jH!C{(D$n~UfVX!jS%|Gg~{V=nWvA1>d4qNHJim&93$|XubKHe1<>)@?i~E((<$FVD>uGC3K&+u% z)k#jhtU?Mhr?};_!d7C_k9q%xQ;BByOcdYg|`DWP?=bJ&6+2Rd`(yAZRl;VE!@Qh_mAawvo5whKZKG`Uwu`HdhpV;#J zd~I;BbGoyztWH#r|1V;eDP!09??`;Ji=VF7zp?*$xx+T)WIj9a9U+fuW_!!`rRvg9 zFN$Ok51)_|A$N3m>#XPzVNLGxoj!7-|I+=3#F<40?tzlP0u%(u{jS2nO}Xljgt)Ur zslj8ff05`YjzE$&$;b2l;_73MbeWmHS5>64&8?M&td0SeJtVfq&gmm z?do|9&GNA>6KUez*TV#Zq5N;%Dk#JOh%7y`8NRfhX58z5a+C7#0mL=mwb!2zBk`2i z6Vk=fKzbi$|7_LvO6=zj>WTLt+#E|dDNeix42=KYEa*(YD9K2wjE6l&oP6SIy~;Pm z$ljU)l&>7WROKm`#A(ZZW1SLS6vzC$dwwqMbrC-FXD-ZDq6-d{1+?6`<$rY8Z4O^< zy0~m3dlGY&@9GhIK2FKk$vbg1ehNKM8_3na8kDdk62pB8@p_zWMye>#Qu{K-r)zY( zKb(7F#g2|R(&p0Sa?<#u;#e4OfKa6Fd$za259v3dChur9LR(2F!&V4Kt3EZ+A12*> zwCCfF{t>Re9-ibJ57US;&+^2SIJN2AuT9w>6Wj9nm7Ys9dU<(+M2ti8d_;`R$j#>T zuptMJJ!x}!v~Hr{yygfvc3wQXR`CAXcfAU!0)fWY_cH%wO?HNWBoF~1*Ti2Wa?)xKG9q!n5}9!THil1P+_=_P;86?zpy^C5~6=va?< z19BKz_B$@#r~iRsN(GA`P-&p&)aX#uIdmL6;ah*rK1bQG+xb8Pfn`tZRxz<0f$n$-3OJJ44@8(jRv))Id$zM+x! z^SH~+mlCds!A1oMJ%gRM>^EjGanaC9CXq(hqAVh8#M$r8aDgiwTN6#d9}CoQI)ZQl zzPstO(NuhNlUkLh^!Lb+IH=+sf7)j12m*ht=;l_k;0eb^wsZ8rCjhO_=3Q3f)cDv7 zkFPW)ka603g++z8HZ)S(75w%^NPJmUz>J@6{by1mGF@xErrA;dP8wq|ax-AOhgs^X zLxAVp($Bp6O!`8}5Dxt$nsn-pzAjsnG_E%8t_&L}H|N6CK6VCa4pNDaZ71Wfvfl0W z<-qQpU(~WCXWRD^TS)Ph=9AIxX5 z7VwJvm%Gi0nO7%AB3A3TZoYJza5dc(al$noc)4`^5qi>OP8!!l+B80|j#{WR*&p!N zSY`3>I^V|y&<(pSTF_d>@K|btNor}o$Gv&GH<~G3#&{6{P`lDCuu>Cy7$twCo4zFy zeEh9t$Y5r7=5$|LZ^2|i|Q$hzcD<|zq*fd@dUEmFW7k3UUtf} z`FjdJ`0yv^QpR)3TnftA3$05a`EcUnQs?vb0=zTw+kxmqt#eZcT}wN^rl4KKFA0DA+B-H9*$d!<1PEU^_PCiV{D|~C$O~se zbdhK3sYGhB;?6gF_XqMFv2WWn4?PPwK|19ZOXv z3UkWAR+V52QVH77+cIY-WFLh4@B8Rl_hqPViV|)whghv-@RvB{OZzSaTzdBIUk6)Y zuSdUR_O!X{>a<*c8R2<>;Gqe*So0RyrD)UEIK;Yaz~!Q5NHS2+oJ4q`HWOZ`DduWS z{Rc7;Q<&2+fpGq|?X&edkyPi3_q``=Otz2IGxD%BFk7^1m6@~-8IQxxB97o|BHgpz z%d|e$4Iy+GJ_uM$d5(aFH~7*DtSm%D=mC}|w|f7HMdp_|F*g~C`1EF8+!VoqCTbat z$-a!Vkarm8+dud)8GPxq{2Dl#IxFp!9SzSA$an<4bVt$i*eOx%H*^1DkjE#m-*b<2 z)@7=U_i-3rE@gK4VeR+|?$x$yRW{e@jRY^OfG_zm3zaYDRfRD?1S1ia#d|qoZW8Ed zqFqE?c`)&&s#@yuzCnutklPXp3YFli`K;<7DHu%c1uJRV&j4j|c$pAB7Fm2m=OI#{ zCZCKF1_(`vP``K^APrDXf+uVWHX&?vRkUN|>DahQejSVTEtz*3F5BRf>*Q>5`J%;j z4O>6lCgsrm8G17&ICh~Xo02jH@r zdh-M12=EXl?chT!x6oRdaY!SPT~~eV$lJBXvNY4Rwo^gh7J0sdM5abZn=)cCRZrD0SOZEaaWa`~Mf!cq#W@eh#C`hk zO`l6OI13N^K{r%G<%eU|<2wrclcS@1R18J7Xs2br;jr7E%J{aLjW;%z8>J>(pEMHI zV}D%Om(-MGFlZNSCN-H-cRh>>z7`BM=)Hq@%+p@BfrA@##7{Dd7GMrzF@W9OMRy#qk!kX@+<&kLN-#@kpc#%Pk3&R_ z?9v*3^nsG+6D>wsDGx{6tdhPM8Y&1xMKZ#LO~03<=-Lb%Feff4uRT2y>^7Qoa<0`f zEgHTp9(U`h5L53gn$QdBLV2pMoMoD@>IO&?FFYC{4O1YE2OUQb_lHDmr4ZoAD7qg8 zLc|ifqZm<-vp0I=!L&U){QP`J;B_y*BXk}LwSGgsF7tIN4a%EiC(MIUG&|>dB5GT@ z*GozsACvBnyIFO)#e)%spGfDVn_B)J?n^lwZ$R8ZimF+LB4Go+7aDCupG^s2lN}AK zlbfQ2%GMK~g(Uo3C~bd??Z!WZVzp3x+j=Z8Aa-^+Z5;k!_q(aUhu=+thRy_@mql=6 ztejbzH=xX(Ua}u9bbOo3!j!`&UW>RbLhpa0Vm0!M4-OF%$o~Zd%Z8UfQ}N)o%BlHN z?l;#69TV0l6TqRAOT)|zDdyG1U)0l`j1r6GIy$rEQqE{@fqf_l@X&H5ZEsF4McZ^6 z7y_$}_|1$Y5c|g^_yFYtY-3JSd}g(N=57mDOOIO{AH`Z(At~kE1#bC!78UKPIABv! z1foj3oN6nPYAkiD8XetG*F=pn+_w{x#|Ce7LpkZi9(MB<+8XcG$MCl~ge>BE4sRyi-CO#b{4#RK&>^a5_({e?N#9#v0- zKGE#GgvZ8A$_gq8;YddsD#fvhru94{l-E=J4{b^v{Q#mfw+kH9aQk#T9HIBGUosGu zwyLD3GVw|XCv9Q#s;(`K8jzoOUPKS;pYK2+7q}8Y-8T`@BQX84>xQ$?-H=}RMB8BC zyg)@%&XHx|J?!E1!(YhyMN<#SAc>ya6hE$oX&ZHyj-@SgmT_sp2u zY4tn@CDt_er$wI!&rWqD|F%RdV;0O8_hq4e{bL{by|3F-gdz}5Aa^9N_M*^Qk2r)3 zsLZq9JUMd=<`H!z2+g`sQ`%}eY_MWpoZE9wH*0skoI^-!dU%JAGQzEZslZf%uR(3a zRQxJNCa;3|wJHzXkxSQHEesD3)7njD4tZev&WsVDdEBy&FDTvp)0uGQ zu(i*sl=KF2>POS+f-}BCa=CyDfP*Q@CaHQj_ie45tKI-GgB1#b$HzXjD-7|2OQ)sG zUOLwZ4mo+s#oES?%>zx;>ic76xp{l+qIXx&4tT|Ir7U*N2JNQJy&|umw6Jor%GM$6 zr&N-4oWhrjD0bZY=7fyg-i{no-igbf^S&nl(g2a#_CEEP-P)~|(~;xD;8cafWT7L% z!3<59#qTI-$@#eE-gc0ZfAs_Ds%Y4%2pg z_uTfo+9!ZnKxH>em|d>wn-x_uq10W@``}uW(d-Zli?9O!AAYK@o`c<95om5StQQEX zx5^bQ{thNZ5uA2X(MbQW0;~QGP)Bk+$>mOIK|~jTPeT9wy!@@*U@koGM8;W#tzs{PmIH z$mFW+shYeJmY9|5FWEfh5-d6mgk`BL>A2sjYFDRs%8f&tM7oT91NrClg&!>+iMTm} zd?-;~5nYya&F;d(_QsT~B(BQxoKNw1urW1odbNKCl~Qx^USkx}_AF>7jf;j;OK+9H zUE^&M4|PrydyUe4K^RErcZPqIju*sK68QD zMm{%&`W-3G8?2MI@rme?_K`ElCa{z2Di$@oY)Us9Hv^`L0k>y4Vw9oSOl~rMg_S{k zYTF{eSiNzY(KkY`vgQ~QV;$?HF>pMMQYQC5lldks3r4O5-9czP6n}k)H%jlU=UWo; zdMCmebOLdNHgrA@?YbT_@-J81gB9c{o1c?T{Da#=nu!Ug3+!Co@rhhL!2Tl46kW#$ zW^j1jo$0`+0S3<(F7L9;^gtWoHyZ0>^I~W{#@=iC5Qrbi3yKJRkO8^Z4PC*ZWb&$W zL!)SYIS=PTWejy2=VrYse0Rjarb*uOT-y^Os;W9*hivlq5`dYI@3(0k4QSl-UT zl@r^_O%56d@|_K}civ)xFddN**pAg1)iqO3D8k}k`k0DL0hH0c(rN3-dcJq81x6lG zfz)nzH@BY#4xNe&noEi_#viDCG9)E;D-A0Hp+U}sl{f;k4~Hhl^sau{;Kf1oL~0<1 z@>;RZUauf+en@DmnN`8bmZ~4)tpV}_8FnSQsWZ)JhT=JI2<|i1tcYHH7OUn5`3JFC5w1|+ z!3x?LxCYRqfm;Z#+?5H$0+$0u2il)6bqS{n`KXh>k|<9qRAcDtY+9|e`yT-ml0#lE zZwa?&C?ac`huX6W#3s)i*%es6(I#$q@5K00ndeYX*Fge$^$;@c1mjU4TR4lApzhjj z7IS|4<%jkQoj{}L*}a3~pUUuq`+A>_xLT!TuugX{X~;Mn>}ZFO^LP|yd};rjI3&I^ zbkO53D^cY3CSnJn2o6u*Tj6L0d}AyaP}JgNHJ^p(zWH*nX0Kj6LY|Jh1MfK4^?CSG zY<;FY+kCXV`p}FBGC2F3nIx3B6ELnNI>_Sbv-417o%NU{{=0UGjxhX>S2=>ULB`F2 zvWjvVnX&pHiwkgtS${7w6PMz&MOf>q)($nQ1O40XnpvZzN z<_OlD22b<9w^XDay>t)Jpazj2lwCGI#q;aBPU_Cmm?2y}Tp4^V;c(Rw|KLzncb+*k z`%^Yit@wMlLQ+3Mn(41!S@_7eryq|00-RDA!qKQoDuQTYhxQdZuHu&pCg11VA|Avf zBydFH5$b>4v(P9V6z35YTSs~MtW!kF^^rx#aKC;r;!TnMNra^_CP~*-IMpXmOwF@h zLL49GDFK6JDR-xbJ32TZxSO(8J)~e;-ZWDF#_tH=oGY%(_vI_ecSCA{IfrQxxB+1` z2Ltu@8a!HTRU^Tpl=5OlWP$?+Rv2-r3EGb-j74$|6pv4*_WqqSfC#`OwB3(S%jAIH zUM>8UH@f>Fj4bInewPWIZFhx)EgOO-#2F89M<3^h%cE$D{fbxU!oUT?_Deh ziNB>g{nCoFL-vYN*A5)y&19>eeb9$*@a|oAr+er8hz&gd!ZW**%^P|B1JxjDkn(%t zZat}5$BPu))5_M$2tc{y8tG2}!57rg&1hN)*3G%;6{cp`)@)8T?`?1Xhl&qKN%Xvy zK@MHVPPZ*X%Vki({I3zKJEX~=g*Js^Ha!YjZB62z^}@p7QzUwFOa+FwT5}4{AW>o2 z&3a-JXfofdf$-5neb}ZyuBpR+x{bj05mrS-ndfV40-E#_* znl%cjIA@t;&1(~oqX`hV3q09|m?D&~-!uTg_X6H;`Letw5C_JGu=Z}$;-(}vVYquOAK~z+5-N(nZf@!r*)o);CZ5Cn0 zh9ij~wH6a8Zv*zTXe0~entz@)N3@F)dL5?`vwo~7fWkH*?;E#oKxP@nfsWWx zwD}j(ASxeAT4+XE*>^!R_^4rq6-4E>;J$yfyzOoACx2iGy44buh~AWw{&dY-le_y| z?ejFzjC6G4^a3X?R&&*^1-=)PO4VW*>+$bWac?fBy>*#)y;^UkApjc z$pu?1W74Er-SWAk!-xp@^;1FD_VccQP9$SvMdeH0HRlW_Qj?(l7T>VpRqDU7#ao{g z@S7t}ey`fG3E`)2Akpp$AH1kR(`ivDDA>%@5;_^Ik(g);JryDmZ)FEe64N|hTCcXn z-(wXpyN%Hzb>7utSE>oP&P_?)2!XS5s?KJbXg~&|+zL}@eb{j*A~m+ENO~)jP5006 z{`;hq9e47@O67SIG{4zVUw}1U^yaXC-x9-Ne`trqsGjLVBpUhCdBpWkPhZ$|a4I;0 zz-742Kfqwb_vSkQ_Rzw=#NgSRouzQOd=&)mfsk4a!79$B^<%t#7QLaY#cUq~uIRR0 z&LD`*g>wqgf5FSe3Sx7+d!|;Hh0KKR%J`#-UmRXF`+`H+2`x;#J zJ`-OqoRU_QFv{fFxOpS4o7vnkT}V$JIfe7u$sxbFduKErM(8^5V2JIJ^-I@d2nO?h zQ5hf3d6pZZ`O?34lOV7h==F&}F8mLBeA`)_#2vu(Ya6y_oL*<{v;Xp5IZ~4v9meNu z@;?7w(g%3b6dLNw)3ANq^06q2wKcSI^J3}3%lp zq`#>t1{|MHq21+aD6O`dE#=KOD!n%X|7c`%Zyq@N%9!ck46o2Z*#Qk1NG@iOx6=p# zU-3+ol16I5v0etuh__8Js_SD1XlSNXSg>eTMyKbG;`+)=;m}`}X5lquu%TH~`^3A+ zB%T5x@Y~J+KU%$PRe5*SPI4mn$_%C{z~84RHB$Sv{3A$y!>;;@#Pr>A+7j+hTDQ=2 z5Sai+^kIU#k^3B{#DZuPI*u|!&kK0NwY4geD&^Sx@eb#M8G%{@i5YM4;Y?$({QTH; zy|h2xV4D}%$ST=P>~Y&3e!Qy&6EPpEc($i9T+ui?WWvuO8{2^)XQ}P-$+F>d>6HWh zAadPcWUNzOoxp>pg z?Q5ilqEc9=dK#3Y?u<{ty@q8fNO-Tkzhqn3D6jg{7b#3mnPUYGOx3QA!VP8=-d%aP z1fAKs!FeIVGG~8(i`Y-Z`4ODfvpcmr9pH znivJ%mFvD-MR8Q1T23Qq{|idkF|506eOePW{<(U z9@|LNNU&WS`|+7HmxoLq&cNdqgFMLeAu4|bX3&f^NV##b!*svg(Mi$uL9bNBSKzGM z^pQV2R;|4JZWmMzufo1h`D7YP>9xQB?+<7`z2-Ld8u*%@W9tJim}6N6fhe=W(URLK z5RU=&erJp%$P2B7(clo_VcYE(DYpfB(>70};k9L1_?~peLI6BW|EY|RQsInScGJLZ z^NvDLLL|5COLt|EkIfR|xnloA%UvSC7sVr2N)*s#5vCXD7M%LQC@-Un+qSH_af35W z01fN8F20&H?QMJY3r}NY_h`mA1x=lxQXuoRp<`?0y#wnP8zdt2@f|#H!a)PwyjIeV zme7)|+BV)955Hb44K-lh%RB>2%~pxas80FoDiN9HHXjAvt#zo;;AGg4*Djj1U^bZ(UH|K>Iu_9Yr(+$wbjo!pi= zm_-0^^bAZD0>c_irkq*oCC}EP1Zt0t>G=B?;9W9TBGtL&94G7DXA>XTB8BI=O1V#_ zw2QT9dfZ*Ba+w z_UU&!$tfh?87YU2_KL1W3wK%bdC!>BSgJpvg1$RFK{I|aTpef17&b!}zQeanhw|tZ z3>Yh!2eRWvJI0GN7I^!BAWyC%6UTbV#eKsb}_sf=qAgcx!D zVM*Cz$ofTpZGf_HF;m+B+PLcp%4CEFyvN>Vm;KMAqh7K>zR1OZPk{X*tG*QgyelIM zb(4NSMLjywY>%w>B!1e|46zyA-4^qCbRc|3muf72P?=XW73H7AV01>hstd0Y|5A*jYi zW)2Cci+6q=e)cKZ@o?&v@)&}*TjTCL2C_x~lT$3NZBx(R0O|(J&$` zFRIJyxz0<7$65l&l5LT5jWpPo1!vATE<|tb{ZabSxj)x7v4&}R5v%cjg9137ViWNh zHP8{2cxH6!t(<+|3WE}xd#GSsgm z3-k_mc&qzPR=vp!K#FxrI9P@%{q{$idX!vXERka?Qr4`plMFKV8DoKE{MS*1q`HF7 z**p=z32ocnjn8%!HJ0|C6UMgk_%ElN=%$>2Q%-w!f>I9QPC%!l^^G|MV;E%9!HPLBZ`9a75noB)jv zy2P_EfOWy|AdOF;Gvy}VurV0Mb^%5B14cFSIW3@>`J5U{`-3jk)#Z2G^&SiuwY(2P zpZFt+c7?>j?{sEQ-;J(LVX5^iZyBj3Ttp-g+Ys#DZ{3bKwIbEW94CgTe}MVh9Bw-@ zHtD@1+FoK2(j9YkrffJOv5^cUJhXkYrVRM4ZRZ-WEyXZ|ICqVd=Zl22DD?p7##kVe zVvQpRjV4H9O)FBif9U|KWj4_iSvQc=o=D~b0?$H55Gp+;b55PSydEfH3G4S+HHBuNM1}~mpqJ)DJhTeU_ z3$E<13AMVD{s#L-#AplQQD%|}02&mPyGIc{gv7!(>8Pj42q^ivlU=dQFT9O&PKnyK zrg2q~X`k3)RB_&t%iDfFRn;Cvimm!w#BjD&?pEEPSN47TjQ3}DWeG{04 zzL|GI%N zzl6{HiIMoG!ZzS>#A2ws3Q#4Z97(&PZ8mXc<0S&BI97)j^n`KP;inld)Lg_kjiU7fAxtFPd%n~mm<#%q&+E$zWX)K+wiFA=qhO466x4LcN- zOWK>~$H;7`oG^iyeiTgtUzrGS+ftW}j`*~VzEBYg_ihTq{Vzd?C3%wQU9<-7F6aqj z3xAV9psH+VH#HT`T-K^Ge$Vd}28-rbI(ciBy;mOtQbIOrej0{unZE@ncTxJW1ioO7 z0Gc-ll~md(rkU?8(5rt<9j>w6y&eYpyVm-v@w1XbL96E;uWuR&)2XCAGRdWhgFtVw zky&H7&*IHeY5GY_5N6Sq2#Ggg0+l~|1I6||BMl}WW9%QPneb0A!es6P_ch(3GK6kvvF$75Vf7;38XdfAA5=ER20v#x|p80I$$R z*HzK<+mjMsb|(1*rwskkl?bvBHS08!QB97A!^Q<8sAk?TVBg3XFr8u{I8iZA`2dCd z_q*GBv-#b?iI9AHDUXjC_IlVB@b}u}{5gk3rM~_Qv=Tp&Y)FM4CoN+5J|}^oWX=1( z%e(kn8p#mvYZ3kMB@ZnBS4Za^Pxbf5@oP)=O7^CVY>_>)NBY`(%ih~HvPYLo_9j9I zsfcU4R%W)0kUg_qzvK6JJ#P1Y#yRKxdOcsSzR45I5G!s!op<=u%9L(J{A!8%fys)f0Hpw`IO^LRoai6)u0&xdJNT;ElXc>;md|j5gqNhVyF- z{N=p&`*VnxXS<9+?%c33G#bKoM*L!Rrc*q|hwB~ZRgDRQsqJ8LyJT6r-0UQKIl{NY zwF1HLUQO_e_utO&VJ%kz+CPBf?RVZ}Of zggrv21_%7sYqk0Q{)81+iY7B}<-zxzHup{JjP{0@Mp~c8;R=z^2__wV+oBqzCaMBc zQ>qp^!OP9aZ_7C7W4=)p&?6CWl4A3x&mx}q)`uU3fhLapChvyDhkHTLv;4sf7mZcL z4p_FXfj2MhhUm&as54m}oU!lc{~#?51c?Ov8IuvG~uFP`+Ch;q=D^PKRs^530E zlcO(fa1Fo$t6O1f1(sn1pvgR=dj%aFXuAlfGwPe2+_->@6~0(*b4Osoi+hvb^4rd5 ze9i%=9|{?!J{W&6@ML9(8AZmT81Vqv?J-w|A$BU0D(=^sjE^!Mu@s8WTuW3?5H~}ZNoav|<+CsQ)uq;_I zXPuuh+2)dX{NUYzw&b6~oa<*-$!=2Iwg9c7Qb+H{Vc-5-4bSr!Fqq3Vn4@iMp5gDy z;-pGPSoW0)TB?e4^##zME_jWoez`GFQ*u>Ds1}ND)hXgaZ-TsYyO=EB_*pfp8t`bc z#;7}6VLC<*;nU>|^|QR95`2p3P1lX zf|%ia8uivibEf1FUf+{AL_J8%%cZZtM?3o0NqX;N0lh%@jg2fM#eFHf7AhT6$EhYtqmD!-=cZNu(_p8nd?% z4ET?i|0rboO9{t4TlLfI_wcej*{u(wILQS&@niJY5QdWO-6|y^+(~#7kQ;|V{Q?2a zqowv?L*y5qrc#`X4Bs9O;AH_LbS`@@(>js0T#*Usc^7)|gOUE_+Tysw2g`OWuUv3Q z?*DU|fCrwaw&w1tN58{N2DC|TCJ%ftv?KDfltfeePfYNBNXxW1o|$IXz* zzJEY!`z8T(Sk@JVVh#;>JH`YxCL#31m}n}gl~sBILP=8M>9eAV7ORu8MU*xAvn@4o zEp}l^4#cr>f|u5hzS8;+7Ies%b2Hg)jzYePmRcY> zMU7poYv}#K9+OnlU3*9;g<*6oCk8lEfrm2~wc&a{iL=e;Q2AN0!*p(+W$idVqWo;@ zLhvHAl7*j5cjuu4p(CjlCFAk{qgz*rQvn={1$jjfRu=fnXJ7GixFJihDs` zq216hM{eR3ZY&gs20w6I`Ldb3(d~8IL{Ckb8_=UY?q%)h<`ZQEM>FYP_Ud8u-TSMn8#6K~tw z1+$o}(<*A6rl}b-FoTQjl+E!N32m2ZsckE3vnuuRZGR=PG}2Q0-kjQEu^H#^^<~NN z3_zCNbvV990#Dz>3e#`oBKx5-w_RWKoVFSzUs%wZffX5xgKOQJ*XVu4>hnKV)zDfW z*nE^M0meJL(X$(wwQyJqt@3*dzds|~Q}&*AU9Mwdz4Ww+6@Q`stgOH0Txz+Bdmi#%TUv}K@xm$Pb`b>{o$h_tkxVW zIv+;@+t%L*s~g5uN$^uW_CG){P_*yU*%W+BFEuCzooo zn#SV(oYn06wf$TUU81z&zd{jbDshoGu+fEHw`G6*gUiF)<-z&0VV*Q7UkQ=|*(BdBE8(`5wMQzmHrN5l*k?v8%UU%XtKAcqEkM|vli zp4ZSR?Y*^+3UM*I#Yo2dw1u)g=kOJAkC>yx(y;)OQnENtioWcrhdB)r-wYWBS=z9wIOEJVH!Tz)X) zO@kolX)aYwXH-;Kyu($E*?-rUOjf#(UdZ^Fv?{QOlP3dM2 zrqQ4aG&E}BiQsM>E2TtJ`iHyIR~0=vJzMYb+1UmY%U(Cg9?k(;fD1a<)VSKH7Kss`up=JPxOpobgsw`Yd^t`nJDy#Pk7gmQkiqIHr+ zRm}1c=l(6?0FRL*^V1hBS!gu%Ll9Js4(Z9idiwA@_nH7;3f{RMh;asX&LdR3?b7)6 z-`H!v+c(wqFUi4A3dyBKf06L?5-4(FnS0}%1mr=cJOrwX4%=zOr}UrCe&d!d|N zs1}W`e9~Jwn(d4A`P=HNuW(=xe8#il@1u?sd7G9iAl9{dxw^=_`ilA6c3ZuySPDI@ zhc0$kFWbG|lR93~*t(#p5OAr+i^V5D7&mWBhfhuV=-9cf?d#p@!INiBObr%{ede6} zROxd>5sdC#CCcurv_2EP-IJW`x%tCU6AjvR0JPlrgFl5l~XGQtCH3kqab8HXAW+ zOXt%l6jyt&v7#Lc(Z%poAu@Hm>f2JUbwS=eZLBAKlTYPoK>93L^zC_qoprJ>D4~iN zD{a4vV@2XqQ}^YZ-wk9m34d>{eZ-QY&IFQ#Ij>Jrm&vuG(d2c6BAh@pDiLpuoBK@$ z{Ai1&g-VF^ix$P|Uo9|evCUIwd2cW-EqRMzm5}d6tCI#V-nK@xDC=1kvt8DoZ_jsCcGeyg3+bmmbuTu_nHNXl6^KI8Pm@PmLEr6r|{9j7b`Cku9 zR7&0Tm?`)0mia6iaT6y!;S-MfbJ*IUbZn{_H-|_ zb5}xBiX-Lw(}aDOK>@I78J_u)07G~BM~GxUJ!y=5&?l&bMMW(3PiaWYu!^pco>`U zf{ag@;^(sjye~CG?LyX14DFap@KHBsv?SVeJuJA(bz)t|1oOX~?T1qZR!MQ9QAG;G z2n*8LW9tK>5kKdOvYJ_XI0c$^XRI;JUU2hQAZ2n)6AaA`;3lE%saGMMZ`+C^~sj~nCfU-90pGR zyU2^HM+#`jCpxCT0G5t`eXs*Bwe$Uv2`pe^6%u=UE~Ky7c$^Ji4QJb~-<&OmGM6L) zk9ofzrwg~og1mnqWhGyXOKfukW^ze%YwFZ~T>)1H$da9zdTrv({kaehE*pVz9_120 zpA$cN_L2^O@!wec+v@Wyjw$ryXJFvT+?^>#LIF+vT7~QV?QhH6bB=@1R~u9qSS4hf zRC$O-uJpiI5QPTugXq@WHm(fm=p+K<~3{$q8Ds`ACAjmxfVK=U0e%k;?tq3^ z{r$^yFrV3(N#{;Hqg4<7>{e2<$bPgK6Lh(Jxwm^$mcQFk53DXGv30XA%1DJ?s>&*d zJ|J2>jeSMP(WpQFUN(Ii*tSEj!F7pYMq3Ie6o|jq?S<>tS{Is zyV-}@>@Fkf+Z>*41CB_1D_kI#V_6Vi=_~#Omq^s}Y)avM<9A>VpL*>!p(yGPc zG2Re=Z(UFc{xTZcF4(L8#MV6!sj6}Q;H^vsvl~9SD}d55YhzXGg=9itb}aLuANSmS z9|#Xnw^k%#p2|fx%8qe|`4JVgepl;@rpRwwS5|EnO?~I-K74mAfDWY6m&kZ_CN_y( z^PFkDhW5s(f|=ache5id40;Ug^4__ykQX$U>p9DT0hMel(n`p9tFhmFX)h#_AECbI z$JCnDs0IDIPCxx4U0cok#(hDiGqo*>(ZbOuHPw-@iIom4Db%vWjlALWTjda`Y0t(E z&eb|3SSu>m>k45aoY}JSYv7J=wUPhz?*EgdZgF1wFE{Hubko)R;Jxs7pfM z`f@G;Y$<$R@3GoPnX%9dJV^qG2sYbEE%y^qDL;Q&ny{IlpwMn&X~SYNN{?NGru(of z4RAVX?jO>8k}Achyhtx7>)y1PerQIqTsmENgDV~oRFKZ z)ww{NvLX6qGUE%|Ng2tAY}T%X*gUo(Q-|+4tB zJSm!5t=4eLG+eS+7C~#x%*2*@@duZA7+XO{CgZxj{jMWo)tB3=bGKDH0UaTla0aGN z9^_-Ynv$genY{)cFcJE$f0>h_AmW^$mrGV(c4sJ73~ zmpCn;s1#PD!CapDH*N{MsQW3#IINmoOx~-hN;I432#;gwv?XBjDL#*uIFr(X$+!*4i&VhX3J-x&GE3 zJn{Q9&1zWpb*26&R*8Q%^*#QmC`b!a1Z9iu@0!?|GF;j2XUF@RUH3ifX3gZI5^kS# zl|4f3gg0ZIrw>|zJI&CEb< zpKrLHB?vm9jSqD_Du+NsFdPw>P4?sj=%7yxBm&b$hPGf+WzCO8MB=*PFaP7^X5v*B zpduj7$3<@xc@Y~ca5x&nk(xnA=L9pjS@m7IKBvS}V!v3ElcG2@LMkNv+|@vwf7E&+ z?_CW8(io9x{ZsCZ<%wGQ-YFtlO^_T~jC_mzm*M`?W9$p(Jj+!kgNBb$5iqunWacf3C9`d}+xF8o6cXUa+(uq8p)mrd8~(7Wr%F3C5|H zf==P50XYCoJVWulO(fPbMGL+92#75+H6zVL>A~5b#p6}_HRui)nq$o2+{jWp#RmIV zEI0e{YC`t-bR1m?CFu`Y+b7y*L$z*HBT_ zu2GuuPD>mA;^Qc(NHf-R*#y>9*0c<=;U&7H1@BIQTuW^ohncT7OY>q0z{3D>jYf7| z+Cl~_C%CVSJjN4{~JpfAH-vnZJng0hG;c ze`BR8w9rB?LRv*R3@v#g@SSw{iP~5Nrp@EkROUM4yao5pN4rZEZImi}_hT1G8b8)c z|1!Q{K|@7AiwWR!He(v9Ui^{$}iPtxI=N;lzUzxCHEb8*?@XukI7Pcx{$Tl3+PyEs|& zF07c`)v}S0X0={7}Y%%9R67j6d^u^KxyI37}>|Hz!ykos{!Z0<=<+W52{wqH-x7aB!k#C zsK`Kq0ONtu6?4SrR{hp8mm|+$yQFF8gc$!_N%;)U;Jp*NuMlqEIf3ba^7I zWh)+P32fQ1k^d6Xz}y`cwh0tBs$2mR)MsBqu@sZ0>!<;tlYp*v}Q>^Zvz6L#QI$aN`=~TfK>eHdB-zZ{Zks!aM*0r1rT5Itv1ce5p}>;d8_ zMU=>UM&zg&2<*-x#5q(e2k-7QmhnQ^Ug2h-yRS^cWr(qWh;!{L;x*CU=k;rI_Q#87(19F{te;Sews-W zD3A8_0+PA@GaS1_CO}7U_N@m<4VKnTUFBWg)GW51{I%Pzngf+WOacSX3-KozIkA6~ z8`1oGP1#FdF!K7GVWh5p<#rS!SgbwsgDVOK=N25RFPGUrS6^niWj#@MdkWEBpqNGv zwS54VQNXGRZ2#4x&kU2;m>IQyqti7);4>8D^pNI1J!V|=%2~Vn96xDAG_}6%{4cu~ z!W1s7A9Auhw=C>Tr6ssOA62Y;c*Yg*_xLqfvIHBIC&S$a9VZgwS-^YY~t;7p}fSA+5A2?59D3~?HXxThUBba{a{Op|yJ z3%-Fy#KGIJNS)HwimVGb?*8p>o9O6ou$KfpNh0^*wV&qtpVv0U!ELv0Mk*-8ce5)J zKXy?dr(mOshea}S-oe<)9PHkd9e{lS8V!D{!yAv~#z9aGj~NMA7qmzngabKA5_<9Bb(JBQU`XDjck}RKF{=rr z;%l~m@KODI?o1771TMhP6G@msL;5|XBGNxp=Yjl_^zy#@Kq32jgJzKiz{d37t%P^l zsu{y!z2$TC6wD13U<*sxmOzi^Yb`D3F!oVi3kCfT6F#fdw{(txj@#5dPob_Rn)r zVYyRh%m(TiJV3;hVYVO~$+>mb745DE;T@4dz91$pmM#4BIWI$rMt|W&hL(Kk7Cx|JrhG^rbvTpqw zeGz^FRs7!gE8+Atcn8?|7)IF+jUW7hRm{ytcW}BN2Vmv;?KtQ*36g z+XEd8$Wy2aITUlK4NiAO+V1=rKrsXCQ9=jfUsF0Gxd+3ywfRZW@u*^mxEHRf*dL}q z5m1Bz$Tbg+?9P*omqPQeJ&F)(~c z>Tb$MO~`hugXX;W?*<)=9L!CgL1<#t2}VTJl}xc!WUw0HCo3 zCbQu4F*5*pBOFLohGIL(Ewz^pJ3Oi`ao1fK=-+ZjfDeM?WyM=bOy-uo4tz>tLkbqGB4NV=6>sOe}5+=o>R_w*J*M&h|gcvCmxHtft-m z-HRx#6>rZdUw}O%*ppRfObK6!i5!+Z4>i`tdqX>k&k4;>#6&$9deDQ!f{an1bFbB@ zG&YHYgC5XJe5-%~5C`T%t5ppkZoNEHJ&9R_|2|+`Omy)tN1YiqrmDmY zng%?RGyO(_|+c;zKQe2GJ|E#tL; z(K?Er!JSr&0y1q?fm;$zT$nmNNOv1-^biTCLHow)EqXiTevfXhD6$-~YR3vN6GNTJ zX*$b^2YmP}6g`?HY1nE@cdoRomsidc!k@?-@)bpekH~Hnt{8q}mVoIjI7`b0EGNiu zY2Mjd;1NsgBBpUrKK8__Bj;(_@NPcBwlM=i)qfRkI@?Os=yUR%KV^|nbX)>k&VOW* zQ`+iigvvVjeMM0+L|C0w!JmUzEpSwMT80tdF$zSBIeXALW5GXq2V8t5e(iD$M^2Uh z$cTa;y)D+G<@DOnVI%nPghg2$xnhKxfEF%5~V2!pX literal 0 HcmV?d00001 diff --git a/apps/unified-storybook/public/images/icons/icon-512x512.png b/apps/unified-storybook/public/images/icons/icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..44dafef0a86ad66fe9bcbfe044b9ff8688a7202d GIT binary patch literal 55471 zcmbTd1yEfY47D>7MESx+h#&Q40AZ{znK12xJ*)@y`$tP~b->2zWRM2*_an9b51(1P5tt zX9x&JxxfFAMFJ^h5D>8UR%%)G~2`dLTDHjhD zE0BYQ9mq(^#=^?O%)-sg$_`**yI4F&B@f9_p`Xrso0B28o7b6dVy)(tXdk{BsHgU3YaIpf}lm6|| z$Qb16B0vt7^q)hpbNElU_RjyBCh&wYdl)$|vof*#9nwDtO-=qo=iusO`w!-(Cd_8G zW_D)wF3w8=` z%Kq;l=>AI+GjSsqGXZio7B&_D3lD&eQ;n6Kmy?s1otuG$hnI!rpQH*PQ!8`N|CW@S zmzDj0BLypssgaA(|0l7j39mWG$<7EoWGg!(3o~X1dkb>X|4byW7|0gn1ZE7Dj{U#B zmk|?Fb^@7O*@8bff0hy@m5~qwvho0d05&Gpe~7D~z$;_#>|$hZVkRRlKn|WBCMzpb zUT$t4V=glmV}KF2F*|^R%h()XY;0-_02;F!8F6s}**Lk4{@q?2Wa9c)3I4YKr#+a0 zOu&8oKjLw*vzoJ*n;QdoxQ)yKT&5gA0FOBjE5O{$+>D3agu~pF<3G|UIaz^C(#ZC| z_WD;UQ*e()>@23-COkj@*n-Re9L6l%0Ap58R)CR_89NJDP#!LJ?!Suv4_)GwwsHoq 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 IM6N<$f~WinLjV8( literal 0 HcmV?d00001 diff --git a/apps/unified-storybook/public/manifest.json b/apps/unified-storybook/public/manifest.json new file mode 100644 index 0000000000..ca0c8fa2b9 --- /dev/null +++ b/apps/unified-storybook/public/manifest.json @@ -0,0 +1,32 @@ +{ + "name": "SpaceONE Design System", + "short_name": "SpaceONE DS", + "icons": [{ + "src": "/images/icons/icon-128x128.png", + "sizes": "128x128", + "type": "image/png" + }, { + "src": "/images/icons/icon-144x144.png", + "sizes": "144x144", + "type": "image/png" + }, { + "src": "/images/icons/icon-152x152.png", + "sizes": "152x152", + "type": "image/png" + }, { + "src": "/images/icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, { + "src": "/images/icons/icon-256x256.png", + "sizes": "256x256", + "type": "image/png" + }, { + "src": "/images/icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + }], "start_url": ".", + "display": "standalone", + "background_color": "#ffffff", + "theme_color": "#6638B6" +} diff --git a/apps/unified-storybook/src/introduce.mdx b/apps/unified-storybook/src/introduce.mdx new file mode 100644 index 0000000000..662fc63009 --- /dev/null +++ b/apps/unified-storybook/src/introduce.mdx @@ -0,0 +1,26 @@ +# SpaceONE Unified Storybook Overview +

+ +## Introduction +This Storybook integrates both the **Web Console Storybook** and the **Universal Component Library (Mirinae) Storybook** into a single system. +

+ +## Components +
+ +### Universal Component Library Storybook +| | Role | Framework | +|------|------------------------------------------------|----------------| +| Mirinae | Provides common UI components that can be reused across various web projects. | Vue 2.7 + Composition API (Vite-based) | + +### Project Storybook +| | Role | Framework | +|------|------------------------------------------------|----------------| +| Web Console | Provides project-specific components and hooks used in the web console. | Vue 2.7 + Composition API (Vite-based, project-specific configurations applied) | + +## Purpose +This unified Storybook aims to achieve the following goals: +1. **Consistent Component Management**: Systematically manages both universal and project-specific components, ensuring reliable component state management for planners, designers, and developers alike. +2. **Maximizing Reusability**: Supports maintaining a consistent UI guide across various projects by leveraging universal components. +3. **Scalability and Integration**: Designed to seamlessly integrate additional project-specific Storybooks and new universal component libraries in the future. +4. **Testing and Documentation**: Facilitates safe usage of components by providing comprehensive testing and documentation for developers. diff --git a/apps/unified-storybook/tailwind.config.js b/apps/unified-storybook/tailwind.config.js new file mode 100644 index 0000000000..b1c73744bb --- /dev/null +++ b/apps/unified-storybook/tailwind.config.js @@ -0,0 +1,11 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const tailwindConfig = require('postcss-config-custom/tailwind.config.cjs'); + +module.exports = { + content: [ + './src/**/*.{js,ts,jsx,tsx,vue}', + ], + theme: tailwindConfig.theme, + variants: tailwindConfig.variants, + plugins: tailwindConfig.plugins, +}; diff --git a/apps/unified-storybook/tsconfig.json b/apps/unified-storybook/tsconfig.json new file mode 100644 index 0000000000..1f8c713744 --- /dev/null +++ b/apps/unified-storybook/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "tsconfig/base.json", + "compilerOptions": { + "types": ["vitest/globals"], + "baseUrl": ".", + "paths": { + "@/*": ["../../packages/mirinae/src/*"] + }, + "allowImportingTsExtensions": true, + "noEmit": true + }, + "include": [ + "**/*.ts", + "**/*.js", + "../../packages/mirinae/**/*.@(ts|js|cjs|vue|mdx)" + ], + "exclude": [ + "node_modules", + "dist", + ".out" + ] +} \ No newline at end of file diff --git a/apps/unified-storybook/vite.config.js b/apps/unified-storybook/vite.config.js new file mode 100644 index 0000000000..349e363156 --- /dev/null +++ b/apps/unified-storybook/vite.config.js @@ -0,0 +1,22 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import path from 'path'; + +import commonjs from '@rollup/plugin-commonjs'; +import vue from '@vitejs/plugin-vue2'; +import { defineConfig } from 'vite'; + + +export default defineConfig({ + plugins: [vue()], + resolve: { + alias: { + 'vue/dist/vue.esm': path.resolve(__dirname, '../../node_modules/vue/dist/vue.esm.js'), + }, + }, + optimizeDeps: { + include: ['mirinae-foundation/web-fonts.cjs', 'mirinae-foundation/screens.cjs'], + }, + rollupInputOptions: { + plugins: [commonjs()], + }, +}); diff --git a/apps/web-storybook/tsconfig.json b/apps/web-storybook/tsconfig.json index 8267743b8a..dc4c552dc4 100644 --- a/apps/web-storybook/tsconfig.json +++ b/apps/web-storybook/tsconfig.json @@ -1,18 +1,13 @@ { "extends": "tsconfig/base.json", "compilerOptions": { - "types": ["vitest/globals"], "baseUrl": ".", - "paths": { - "@/*": ["../web/src/*"] - }, "allowImportingTsExtensions": true, "noEmit": true }, "include": [ "**/*.ts", "**/*.js", - "../web/src/common/**/*.@(ts|js|cjs|vue|mdx)" ], "exclude": [ "node_modules", diff --git a/apps/web-storybook/vite.config.js b/apps/web-storybook/vite.config.js index 76e7d33f0e..28ab11146b 100644 --- a/apps/web-storybook/vite.config.js +++ b/apps/web-storybook/vite.config.js @@ -1,3 +1,4 @@ +/* eslint-disable import/no-extraneous-dependencies */ import path from 'path'; import commonjs from '@rollup/plugin-commonjs'; diff --git a/package-lock.json b/package-lock.json index 891790a741..ce5ce4be0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -103,6 +103,17 @@ "vue": "^2.7.15" } }, + "apps/unified-storybook": { + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "eslint-config-custom": "*", + "mirinae-foundation": "*", + "postcss-config-custom": "*", + "storybook-config-custom": "*", + "tsconfig": "*" + } + }, "apps/web": { "version": "2.0.0-dev306", "license": "Apache-2.0", @@ -31911,6 +31922,10 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unified-storybook": { + "resolved": "apps/unified-storybook", + "link": true + }, "node_modules/unified/node_modules/is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -58264,6 +58279,16 @@ } } }, + "unified-storybook": { + "version": "file:apps/unified-storybook", + "requires": { + "eslint-config-custom": "*", + "mirinae-foundation": "*", + "postcss-config-custom": "*", + "storybook-config-custom": "*", + "tsconfig": "*" + } + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", diff --git a/turbo.json b/turbo.json index 7a544ec5d9..fb2c93a9ba 100644 --- a/turbo.json +++ b/turbo.json @@ -78,6 +78,10 @@ "persistent": true, "cache": false }, + "unified-storybook-dev": { + "persistent": true, + "cache": false + }, "lint": { "dependsOn": ["^lint"], "outputs": [], From d16ab9453a7bfcfcb78d2049c2c2bde4e796aad7 Mon Sep 17 00:00:00 2001 From: daeyeon ko Date: Tue, 4 Feb 2025 20:51:37 +0900 Subject: [PATCH 13/15] test: workflow dispatch test Signed-off-by: daeyeon ko --- .../workflows/dispatch_master_to_develop.yaml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/workflows/dispatch_master_to_develop.yaml diff --git a/.github/workflows/dispatch_master_to_develop.yaml b/.github/workflows/dispatch_master_to_develop.yaml new file mode 100644 index 0000000000..5eb43376b3 --- /dev/null +++ b/.github/workflows/dispatch_master_to_develop.yaml @@ -0,0 +1,19 @@ +name: "[Dispatch] Master to develop" + +on: + workflow_dispatch: + inputs: + version: + description: 'enter version(x.y.z)' + required: true + default: '2.0.0' + +env: + VERSION: ${{ github.event.inputs.version }} + +jobs: + merge_to_develop: + runs-on: ubuntu-latest + steps: + - name: test + run: echo "test" From 2abbcaaa51398a4550cd4c197365139e9b1eb16a Mon Sep 17 00:00:00 2001 From: daeyeon ko Date: Tue, 4 Feb 2025 20:57:46 +0900 Subject: [PATCH 14/15] Revert "test: workflow dispatch test" Signed-off-by: daeyeon ko --- .../workflows/dispatch_master_to_develop.yaml | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 .github/workflows/dispatch_master_to_develop.yaml diff --git a/.github/workflows/dispatch_master_to_develop.yaml b/.github/workflows/dispatch_master_to_develop.yaml deleted file mode 100644 index 5eb43376b3..0000000000 --- a/.github/workflows/dispatch_master_to_develop.yaml +++ /dev/null @@ -1,19 +0,0 @@ -name: "[Dispatch] Master to develop" - -on: - workflow_dispatch: - inputs: - version: - description: 'enter version(x.y.z)' - required: true - default: '2.0.0' - -env: - VERSION: ${{ github.event.inputs.version }} - -jobs: - merge_to_develop: - runs-on: ubuntu-latest - steps: - - name: test - run: echo "test" From ca96f099664c04a8ed6d8ad10fe9234af7a25b0c Mon Sep 17 00:00:00 2001 From: daeyeon ko Date: Tue, 4 Feb 2025 22:34:31 +0900 Subject: [PATCH 15/15] chore: create workflows merge from master to develop and check commits (#5616) * chore: create a workflow form master to develop Signed-off-by: daeyeon ko * chore: dispatch merge workflow Signed-off-by: daeyeon ko * chore: add a workflow to check commits that are targets for revert in pr Signed-off-by: daeyeon ko --------- Signed-off-by: daeyeon ko --- .../workflows/dispatch_master_to_develop.yaml | 65 +++++++++++++++++++ .github/workflows/dispatch_release.yaml | 37 ++++++++++- ...equest_check_revert_candidate_commits.yaml | 52 +++++++++++++++ 3 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/dispatch_master_to_develop.yaml create mode 100644 .github/workflows/pull_request_check_revert_candidate_commits.yaml diff --git a/.github/workflows/dispatch_master_to_develop.yaml b/.github/workflows/dispatch_master_to_develop.yaml new file mode 100644 index 0000000000..4bd398cd19 --- /dev/null +++ b/.github/workflows/dispatch_master_to_develop.yaml @@ -0,0 +1,65 @@ +name: "[Dispatch] Master To Develop" + +on: + workflow_dispatch: + inputs: + version: + description: 'enter version(x.y.z)' + required: true + default: '2.0.0' + +env: + VERSION: ${{ github.event.inputs.version }} + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + REF_BRANCH: "master" + +jobs: + merge_to_develop: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{env.REF_BRANCH}} + fetch-depth: 0 + fetch-tags: false + submodules: true + token: ${{ secrets.PAT_TOKEN }} + + - name: Fetch develop branch + run: | + git checkout -b develop origin/develop + + - name: Configure git + run: | + git log -n 10 --oneline + git branch + git config --global user.email "${{ vars.GIT_EMAIL }}" + git config --global user.name "${{ vars.GIT_USERNAME }}" + + - name: Import GPG key + id: import-gpg + uses: crazy-max/ghaction-import-gpg@v6.2.0 + with: + gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} + passphrase: ${{ secrets.GPG_PASSPHRASE }} + git_user_signingkey: true + git_commit_gpgsign: true + + - name: Merge master into develop + run: | + git merge --no-ff master -m "chore: merge master into develop after ${{ env.VERSION }} version tagging" + + - name: Push changes to develop using GitHub push action + uses: ad-m/github-push-action@v0.6.0 + with: + branch: develop + github_token: ${{ secrets.PAT_TOKEN }} + + - name: Notice when job fails + if: failure() + uses: 8398a7/action-slack@v3.15.0 + with: + status: ${{job.status}} + fields: repo,workflow,job + author_name: Github Action Slack diff --git a/.github/workflows/dispatch_release.yaml b/.github/workflows/dispatch_release.yaml index 4b6c8c52d5..22247d2571 100644 --- a/.github/workflows/dispatch_release.yaml +++ b/.github/workflows/dispatch_release.yaml @@ -20,10 +20,29 @@ env: ARCH: ${{ github.event.inputs.container_arch }} VERSION: ${{ github.event.inputs.version }} SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + REF_BRANCH: "master" jobs: + check-branch: + runs-on: ubuntu-latest + steps: + - name: Check branch with regex + run: | + if [[ ! "${{ github.ref }}" =~ ^refs/heads/(${{env.REF_BRANCH}}.*|.*${{env.REF_BRANCH}})$ ]]; then + echo `::error::Branch should always be run from '${{env.REF_BRANCH}}', Running branch: ${github.ref_name}`. + exit 1 + fi + - name: Notice when job fails + if: failure() + uses: 8398a7/action-slack@v3.15.0 + with: + status: ${{job.status}} + fields: repo,workflow,job + author_name: Github Action Slack + mirinae: runs-on: ubuntu-latest + needs: check-branch steps: - name: Invoke mirinae release workflow id: mirinae @@ -63,6 +82,7 @@ jobs: uses: actions/checkout@v3 with: submodules: true + ref: ${{ env.REF_BRANCH }} token: ${{ secrets.PAT_TOKEN }} - name: Setup Node.js @@ -91,7 +111,7 @@ jobs: - name: Import GPG key id: import-gpg - uses: crazy-max/ghaction-import-gpg@v6.2.0 + uses: crazy-max/ghaction-import-gpg@v6.2.0 with: gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} passphrase: ${{ secrets.GPG_PASSPHRASE }} @@ -129,6 +149,21 @@ jobs: github_token: ${{ secrets.PAT_TOKEN }} branch: ${{ github.ref }} + - name: Trigger dispatch_master_to_develop.yaml workflow + uses: actions/github-script@v6 + with: + github-token: ${{ secrets.PAT_TOKEN }} + script: | + github.rest.actions.createWorkflowDispatch({ + owner: "${{ github.repository_owner }}", + repo: "${{ github.event.repository.name }}", + workflow_id: "dispatch_master_to_develop.yaml", + inputs: { + version: "${{ github.event.inputs.version }}", + }, + ref: "${{env.REF_BRANCH}}", + }); + - name: Set up QEMU uses: docker/setup-qemu-action@v2 diff --git a/.github/workflows/pull_request_check_revert_candidate_commits.yaml b/.github/workflows/pull_request_check_revert_candidate_commits.yaml new file mode 100644 index 0000000000..32f3fc06d9 --- /dev/null +++ b/.github/workflows/pull_request_check_revert_candidate_commits.yaml @@ -0,0 +1,52 @@ +name: "[Pull Request] Check Revert Candidate Commits" + +on: + pull_request: + branches: [master] + +jobs: + check-commits: + runs-on: ubuntu-latest + steps: + - name: Find feat(backend) commits + id: check-commits + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + COMMITS=$(gh api repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/commits \ + --jq '.[] | select(.commit.message | test("^feat\\(backend")) | .sha + " " + .commit.message') + + if [ -z "$COMMITS" ]; then + echo "No matching commits found" + echo "found=false" >> $GITHUB_OUTPUT + else + echo "Found matching commits" + echo "found=true" >> $GITHUB_OUTPUT + COMMITS="${COMMITS//$'\n'/'%0A'}" + echo "commits=$COMMITS" >> $GITHUB_OUTPUT + fi + + - name: Comment feat(backend) commits + if: steps.check-commits.outputs.found == 'true' + uses: actions/github-script@v6 + with: + script: | + const prNumber = context.payload.pull_request.number; + const commits = `${{ steps.check-commits.outputs.commits }}`.replace(/%0A/g, '\n'); + await github.rest.issues.createComment({ + ...context.repo, + issue_number: prNumber, + body: `⚠️ The following commits require review:\n\n${commits}` + }); + + - name: Comment no feat(backend) commits + if: steps.check-commits.outputs.found == 'false' + uses: actions/github-script@v6 + with: + script: | + await github.rest.issues.createComment({ + ...context.repo, + issue_number: context.payload.pull_request.number, + body: `βœ… There are no commits in this PR that require review.` + }); +