diff --git a/dashboard/components/button/Button.mocks.tsx b/dashboard/components/button/Button.mocks.tsx index 736305a2a..a2251e8ac 100644 --- a/dashboard/components/button/Button.mocks.tsx +++ b/dashboard/components/button/Button.mocks.tsx @@ -8,7 +8,9 @@ const base: ButtonProps = { size: 'lg', disabled: false, loading: false, - onClick: () => {} + onClick: () => {}, + href: '', + target: '' }; const secondary: ButtonProps = { @@ -63,13 +65,34 @@ const deleteButton: ButtonProps = { onClick: () => {} }; +const linkButton: ButtonProps = { + children: 'Link button', + asLink: true, + style: 'primary', + size: 'lg', + loading: false, + href: 'https://komiser.io' +}; + +const newTabLinkButton: ButtonProps = { + children: 'New Tab Link button', + asLink: true, + style: 'secondary', + size: 'lg', + loading: false, + href: 'https://komiser.io', + target: '_blank' +}; + const mockButtonProps = { base, secondary, ghost, text, dropdown, - deleteButton + deleteButton, + linkButton, + newTabLinkButton }; export default mockButtonProps; diff --git a/dashboard/components/button/Button.stories.tsx b/dashboard/components/button/Button.stories.tsx index a83a23872..87e6eab4d 100644 --- a/dashboard/components/button/Button.stories.tsx +++ b/dashboard/components/button/Button.stories.tsx @@ -65,3 +65,15 @@ export const Delete: Story = { ...mockButtonProps.deleteButton } }; + +export const Link: Story = { + args: { + ...mockButtonProps.linkButton + } +}; + +export const NewTabLink: Story = { + args: { + ...mockButtonProps.newTabLinkButton + } +}; diff --git a/dashboard/components/button/Button.tsx b/dashboard/components/button/Button.tsx index dedb7adec..6393f4673 100644 --- a/dashboard/components/button/Button.tsx +++ b/dashboard/components/button/Button.tsx @@ -12,10 +12,14 @@ export type ButtonProps = { gap?: 'md'; transition?: boolean; onClick?: (e?: any) => void; + asLink?: boolean; + href?: string; + target?: string; }; function Button({ children, + asLink = false, type = 'button', style = 'primary', size = 'md', @@ -24,7 +28,9 @@ function Button({ align, gap, transition = true, - onClick + onClick, + href, + target }: ButtonProps) { const xxs = 'p-1'; const xs = 'py-2 px-4'; @@ -73,21 +79,37 @@ function Button({ if (style === 'text') buttonStyle = text; if (style === 'dropdown') buttonStyle = dropdown; if (style === 'delete') buttonStyle = deleteStyle; + if (asLink) buttonStyle = `${buttonStyle} inline-block sm:w-fit-content`; return buttonStyle; } return ( - + <> + {asLink ? ( + + {loading && } + {children} + + ) : ( + + )} + ); } diff --git a/dashboard/components/dashboard/components/cost-explorer/DashboardCostExplorerCard.tsx b/dashboard/components/dashboard/components/cost-explorer/DashboardCostExplorerCard.tsx index c536d4801..cb6eb9a13 100644 --- a/dashboard/components/dashboard/components/cost-explorer/DashboardCostExplorerCard.tsx +++ b/dashboard/components/dashboard/components/cost-explorer/DashboardCostExplorerCard.tsx @@ -10,8 +10,11 @@ import { import Image from 'next/image'; import { Dispatch, SetStateAction } from 'react'; import { Bar } from 'react-chartjs-2'; -import SelectCheckbox from '../../../select-checkbox/SelectCheckbox'; -import Select from '../../../select/Select'; + +import Button from '@components/button/Button'; +import SelectCheckbox from '@components/select-checkbox/SelectCheckbox'; +import Select from '@components/select/Select'; +import { CloudIcon } from '@components/icons'; import { CostExplorerQueryDateProps, CostExplorerQueryGranularityProps, @@ -115,17 +118,31 @@ function DashboardCostExplorerCard({
{chartData && } {!chartData && ( -
-

- No data for this time period -

- No data to display image +
+
+
+

No data for this time period

+

+ Our cloud version, Tailwarden, supports
+ historical costs from certain cloud providers +

+ +
+ Purplin on a Rocket +
)}
diff --git a/dashboard/components/icons/CloudIcon.tsx b/dashboard/components/icons/CloudIcon.tsx new file mode 100644 index 000000000..5ff0ca98f --- /dev/null +++ b/dashboard/components/icons/CloudIcon.tsx @@ -0,0 +1,29 @@ +import { SVGProps } from 'react'; + +const CloudIcon = (props: SVGProps) => ( + + + + +); + +export default CloudIcon; diff --git a/dashboard/components/icons/Icons.stories.tsx b/dashboard/components/icons/Icons.stories.tsx index dc9fa689a..5c2da12fb 100644 --- a/dashboard/components/icons/Icons.stories.tsx +++ b/dashboard/components/icons/Icons.stories.tsx @@ -9,7 +9,7 @@ const IconsWrapper = (props: SVGProps) => (
{Object.entries(icons).map(([name, Icon]) => (
-
+

{name}

diff --git a/dashboard/components/icons/index.tsx b/dashboard/components/icons/index.tsx index c309a0205..72f0b2681 100644 --- a/dashboard/components/icons/index.tsx +++ b/dashboard/components/icons/index.tsx @@ -7,6 +7,7 @@ export { default as ChevronDownIcon } from './ChevronDownIcon'; export { default as ChevronRightIcon } from './ChevronRightIcon'; export { default as ClearFilterIcon } from './ClearFilterIcon'; export { default as CloseIcon } from './CloseIcon'; +export { default as CloudIcon } from './CloudIcon'; export { default as DeleteIcon } from './DeleteIcon'; export { default as DocumentTextIcon } from './DocumentTextIcon'; export { default as DownloadIcon } from './DownloadIcon'; diff --git a/dashboard/components/navbar/Navbar.tsx b/dashboard/components/navbar/Navbar.tsx index feb6bc639..26194e2db 100644 --- a/dashboard/components/navbar/Navbar.tsx +++ b/dashboard/components/navbar/Navbar.tsx @@ -91,7 +91,7 @@ function Navbar() { diff --git a/dashboard/package-lock.json b/dashboard/package-lock.json index cf7e30e8b..06561c5b6 100644 --- a/dashboard/package-lock.json +++ b/dashboard/package-lock.json @@ -38,7 +38,7 @@ "@storybook/addon-links": "^7.0.0-beta.52", "@storybook/addons": "^7.4.6", "@storybook/blocks": "^7.4.5", - "@storybook/nextjs": "^7.0.0-alpha.41", + "@storybook/nextjs": "^7.5.2", "@storybook/preview-api": "^7.4.6", "@storybook/react": "^7.4.6", "@storybook/testing-library": "^0.2.2", @@ -52,13 +52,13 @@ "@types/react": "18.2.22", "@types/react-cytoscapejs": "^1.2.3", "@types/react-dom": "18.2.12", - "@types/react-simple-maps": "^3.0.0", + "@types/react-simple-maps": "^3.0.2", "autoprefixer": "^10.4.13", "eslint": "^8.49.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-next": "13.5.4", "eslint-config-prettier": "^9.0.0", - "eslint-plugin-jest": "^27.4.2", + "eslint-plugin-jest": "^27.6.0", "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-storybook": "^0.6.15", "husky": "^8.0.0", @@ -730,23 +730,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead.", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", @@ -764,43 +747,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-proposal-optional-chaining": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", @@ -4668,19 +4614,19 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.4.3.tgz", - "integrity": "sha512-ROlhxTQxBtMvfUU8ZTZZ6M0ALbUuChm2Fkau9inZyLgaE/HJbjAUCU7TbHFQ7GgdqA3/Lnw0Soox8cmjI4QQWA==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.5.2.tgz", + "integrity": "sha512-jKF3rrMEu42TgZ5AEszADpVdASDu1S4Ozp1Ymf4akHLkaMOv+yzzD7LV6YGjJz8S2IryndZqE47e6stF0T99uA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.3", - "@storybook/components": "7.4.3", - "@storybook/core-events": "7.4.3", + "@storybook/client-logger": "7.5.2", + "@storybook/components": "7.5.2", + "@storybook/core-events": "7.5.2", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.3", - "@storybook/preview-api": "7.4.3", - "@storybook/theming": "7.4.3", - "@storybook/types": "7.4.3", + "@storybook/manager-api": "7.5.2", + "@storybook/preview-api": "7.5.2", + "@storybook/theming": "7.5.2", + "@storybook/types": "7.5.2", "dequal": "^2.0.2", "lodash": "^4.17.21", "polished": "^4.2.2", @@ -4707,18 +4653,119 @@ } } }, + "node_modules/@storybook/addon-actions/node_modules/@storybook/channels": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.5.2.tgz", + "integrity": "sha512-3SgqWq9NS0XX1QxK3riuaOLrReHWwVhI63u6q1ryDD3SttpmAezZETibOAtzDuk2FKgsyHTmAlmcGQf4ZxhOJA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-actions/node_modules/@storybook/client-logger": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.5.2.tgz", + "integrity": "sha512-7YgLItlmiYDzWYexTaRNuHhtFarh9krsI+8l7Yjn9ryoHSTJUcTWx+yPJm1II+PQR8v/x5UgsxzultjgEurfRQ==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-actions/node_modules/@storybook/components": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.5.2.tgz", + "integrity": "sha512-OP+o6AoxoQDbqjk/jdQ1arlc1T8601eCL+rS1dJY9EtAFq7Z0LEFtafhEW/Lx8FotfVGjfCNptH9ODhHU6e5Jw==", + "dev": true, + "dependencies": { + "@radix-ui/react-select": "^1.2.2", + "@radix-ui/react-toolbar": "^1.0.4", + "@storybook/client-logger": "7.5.2", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/theming": "7.5.2", + "@storybook/types": "7.5.2", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-actions/node_modules/@storybook/core-events": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.5.2.tgz", + "integrity": "sha512-DV8bFEFVKDEvaH87KYPXDE0YEV+Y9yjFv2xxmC9pF8l+MWCtVW72RBLhB+gU5NM1bkHrRDNb0lOJfVGKlhxOog==", + "dev": true, + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-actions/node_modules/@storybook/manager-api": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.5.2.tgz", + "integrity": "sha512-WX8GjBkITRQzhQ08WEAVjdDW8QqqIQhWOpFzXUYCxCNzt1eSALI31QQ+M1/MYymw+TOkotC/SMcn/puIAm4rdA==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.5.2", + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/router": "7.5.2", + "@storybook/theming": "7.5.2", + "@storybook/types": "7.5.2", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.2.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@storybook/addon-actions/node_modules/@storybook/preview-api": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.4.3.tgz", - "integrity": "sha512-qKwfH2+qN1Zpz2UX6dQLiTU5x2JH3o/+jOY4GYF6c3atTm5WAu1OvCYAJVb6MdXfAhZNuPwDKnJR8VmzWplWBg==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.5.2.tgz", + "integrity": "sha512-rpmHR/09UBSnorDBTcE7JgHUQjZLO146NCI+vbI7Pqfb4QX/8lhwkFr4cuHRAR16mv6DAJbDVoPETO0Z/CH9aw==", "dev": true, "dependencies": { - "@storybook/channels": "7.4.3", - "@storybook/client-logger": "7.4.3", - "@storybook/core-events": "7.4.3", + "@storybook/channels": "7.5.2", + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/types": "7.4.3", + "@storybook/types": "7.5.2", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -4733,16 +4780,15 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/theming": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.3.tgz", - "integrity": "sha512-u5wLwWmhGcTmkcs6f2wDGv+w8wzwbNJat0WaIIbwdJfX7arH6nO5HkBhNxvl6FUFxX0tovp/e9ULzxVPc356jw==", + "node_modules/@storybook/addon-actions/node_modules/@storybook/router": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.5.2.tgz", + "integrity": "sha512-jlh48TVUlqvGkU8MnkVp9SrCHomWGtQGx1WMK94NMyOPVPTLWzM6LjIybgmHz0MTe4lpzmbiIOfSlU3pPX054w==", "dev": true, "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.4.3", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" + "@storybook/client-logger": "7.5.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0" }, "funding": { "type": "opencollective", @@ -4753,6 +4799,22 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/@storybook/addon-actions/node_modules/@storybook/types": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.5.2.tgz", + "integrity": "sha512-RDKHo6WUES+4nt7uZMfankjxdpYX2EI2GpJ2n2RPcnhzmb/ub1huNTjbzDEYMqY24SppljZeIN57m3Ar6L6f9A==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.5.2", + "@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/addon-backgrounds": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.4.6.tgz", @@ -7140,30 +7202,22 @@ "dev": true }, "node_modules/@storybook/builder-webpack5": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.4.3.tgz", - "integrity": "sha512-nTv4Y2QnLHcUWZMsNE/0MYrJ4BzL44QzyPJOFwoNpRbR45Gp+/tDyCclXTYs4FGG6JkPdaV0+jcU0GhjwP1rvA==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.5.2.tgz", + "integrity": "sha512-eGMbwyw65z1Fmsq6U/rXPjywBCDwtI5ZvV9zendxxeAVNLpzTFioxlRNYsYZqcLEfE6GoNYjIOkn4S9UV0N+VA==", "dev": true, "dependencies": { - "@babel/core": "^7.22.9", - "@storybook/addons": "7.4.3", - "@storybook/channels": "7.4.3", - "@storybook/client-api": "7.4.3", - "@storybook/client-logger": "7.4.3", - "@storybook/components": "7.4.3", - "@storybook/core-common": "7.4.3", - "@storybook/core-events": "7.4.3", - "@storybook/core-webpack": "7.4.3", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.4.3", - "@storybook/node-logger": "7.4.3", - "@storybook/preview": "7.4.3", - "@storybook/preview-api": "7.4.3", - "@storybook/router": "7.4.3", - "@storybook/store": "7.4.3", - "@storybook/theming": "7.4.3", - "@swc/core": "^1.3.49", - "@types/node": "^16.0.0", + "@babel/core": "^7.22.0", + "@storybook/channels": "7.5.2", + "@storybook/client-logger": "7.5.2", + "@storybook/core-common": "7.5.2", + "@storybook/core-events": "7.5.2", + "@storybook/core-webpack": "7.5.2", + "@storybook/node-logger": "7.5.2", + "@storybook/preview": "7.5.2", + "@storybook/preview-api": "7.5.2", + "@swc/core": "^1.3.82", + "@types/node": "^18.0.0", "@types/semver": "^7.3.4", "babel-loader": "^9.0.0", "babel-plugin-named-exports-order": "^0.0.2", @@ -7194,47 +7248,113 @@ "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" - }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, - "node_modules/@storybook/builder-webpack5/node_modules/@storybook/addons": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-7.4.3.tgz", - "integrity": "sha512-6XvXE3sRl78MceRDAnfPd6N6j9ltMCuTITjjqU2GU8iyAexJ4bYodfKcmUmAQmixuc+6UPbWmlrQKNmBDlp3rw==", + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/channels": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.5.2.tgz", + "integrity": "sha512-3SgqWq9NS0XX1QxK3riuaOLrReHWwVhI63u6q1ryDD3SttpmAezZETibOAtzDuk2FKgsyHTmAlmcGQf4ZxhOJA==", "dev": true, "dependencies": { - "@storybook/manager-api": "7.4.3", - "@storybook/preview-api": "7.4.3", - "@storybook/types": "7.4.3" + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/client-logger": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.5.2.tgz", + "integrity": "sha512-7YgLItlmiYDzWYexTaRNuHhtFarh9krsI+8l7Yjn9ryoHSTJUcTWx+yPJm1II+PQR8v/x5UgsxzultjgEurfRQ==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-common": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.5.2.tgz", + "integrity": "sha512-js7fIH4wHS08dBuIVsr3JnwMtKn5O1Izc/Zor4t6PntLWkGGX4X/GxbOkasGX5SkCT1qUtB9RpdPd1sUkLhIgw==", + "dev": true, + "dependencies": { + "@storybook/core-events": "7.5.2", + "@storybook/node-logger": "7.5.2", + "@storybook/types": "7.5.2", + "@types/find-cache-dir": "^3.2.1", + "@types/node": "^18.0.0", + "@types/node-fetch": "^2.6.4", + "@types/pretty-hrtime": "^1.0.0", + "chalk": "^4.1.0", + "esbuild": "^0.18.0", + "esbuild-register": "^3.5.0", + "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "glob": "^10.0.0", + "handlebars": "^4.7.7", + "lazy-universal-dotenv": "^4.0.0", + "node-fetch": "^2.0.0", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/core-events": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.5.2.tgz", + "integrity": "sha512-DV8bFEFVKDEvaH87KYPXDE0YEV+Y9yjFv2xxmC9pF8l+MWCtVW72RBLhB+gU5NM1bkHrRDNb0lOJfVGKlhxOog==", + "dev": true, + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/node-logger": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.5.2.tgz", + "integrity": "sha512-VIBuwPJOylu8vJofk1VfmqxlhXgbBgV0pCTo/UzdQAbc3w5y+qNRemf8goWxYEY+L9p6oUXqm/i9+bNGyX7/Mw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, "node_modules/@storybook/builder-webpack5/node_modules/@storybook/preview-api": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.4.3.tgz", - "integrity": "sha512-qKwfH2+qN1Zpz2UX6dQLiTU5x2JH3o/+jOY4GYF6c3atTm5WAu1OvCYAJVb6MdXfAhZNuPwDKnJR8VmzWplWBg==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.5.2.tgz", + "integrity": "sha512-rpmHR/09UBSnorDBTcE7JgHUQjZLO146NCI+vbI7Pqfb4QX/8lhwkFr4cuHRAR16mv6DAJbDVoPETO0Z/CH9aw==", "dev": true, "dependencies": { - "@storybook/channels": "7.4.3", - "@storybook/client-logger": "7.4.3", - "@storybook/core-events": "7.4.3", + "@storybook/channels": "7.5.2", + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/types": "7.4.3", + "@storybook/types": "7.5.2", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -7249,31 +7369,30 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack5/node_modules/@storybook/theming": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.4.3.tgz", - "integrity": "sha512-u5wLwWmhGcTmkcs6f2wDGv+w8wzwbNJat0WaIIbwdJfX7arH6nO5HkBhNxvl6FUFxX0tovp/e9ULzxVPc356jw==", + "node_modules/@storybook/builder-webpack5/node_modules/@storybook/types": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.5.2.tgz", + "integrity": "sha512-RDKHo6WUES+4nt7uZMfankjxdpYX2EI2GpJ2n2RPcnhzmb/ub1huNTjbzDEYMqY24SppljZeIN57m3Ar6L6f9A==", "dev": true, "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.4.3", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" + "@storybook/channels": "7.5.2", + "@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" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "16.18.53", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.53.tgz", - "integrity": "sha512-vVmHeo4tpF8zsknALU90Hh24VueYdu45ZlXzYWFbom61YR4avJqTFDC3QlWzjuTdAv6/3xHaxiO9NrtVZXrkmw==", - "dev": true + "version": "18.18.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.8.tgz", + "integrity": "sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@storybook/channels": { "version": "7.4.3", @@ -7506,46 +7625,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/@storybook/client-api": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/client-api/-/client-api-7.4.3.tgz", - "integrity": "sha512-ZLKQY55GOqwngZnQSj2MlOiB8znLnYXY8UcuCzwu+tZVGJshxwrMasiLMYE55ni8Yp54qbbwrlYeWZYIW+j/Gw==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "7.4.3", - "@storybook/preview-api": "7.4.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/client-api/node_modules/@storybook/preview-api": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.4.3.tgz", - "integrity": "sha512-qKwfH2+qN1Zpz2UX6dQLiTU5x2JH3o/+jOY4GYF6c3atTm5WAu1OvCYAJVb6MdXfAhZNuPwDKnJR8VmzWplWBg==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.4.3", - "@storybook/client-logger": "7.4.3", - "@storybook/core-events": "7.4.3", - "@storybook/csf": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/types": "7.4.3", - "@types/qs": "^6.9.5", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "synchronous-promise": "^2.0.15", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/client-logger": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.4.3.tgz", @@ -7738,13 +7817,31 @@ } }, "node_modules/@storybook/core-client": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.4.6.tgz", - "integrity": "sha512-tfgxAHeCvMcs6DsVgtb4hQSDaCHeAPJOsoyhb47eDQfk4OmxzriM0qWucJV5DePSMi+KutX/rN2u0JxfOuN68g==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.5.2.tgz", + "integrity": "sha512-mMDSBxc7esMCu0FOkama9XYHzIHYGhBj8roX+XaTaLDYXaw/UajcCuzcO7fFBHNn3Vdqh2ufIxlI7359v3IqPw==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.6", - "@storybook/preview-api": "7.4.6" + "@storybook/client-logger": "7.5.2", + "@storybook/preview-api": "7.5.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-client/node_modules/@storybook/channels": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.5.2.tgz", + "integrity": "sha512-3SgqWq9NS0XX1QxK3riuaOLrReHWwVhI63u6q1ryDD3SttpmAezZETibOAtzDuk2FKgsyHTmAlmcGQf4ZxhOJA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" }, "funding": { "type": "opencollective", @@ -7752,9 +7849,9 @@ } }, "node_modules/@storybook/core-client/node_modules/@storybook/client-logger": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.4.6.tgz", - "integrity": "sha512-XDw31ZziU//86PKuMRnmc+L/G0VopaGKENQOGEpvAXCU9IZASwGKlKAtcyosjrpi+ZiUXlMgUXCpXM7x3b1Ehw==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.5.2.tgz", + "integrity": "sha512-7YgLItlmiYDzWYexTaRNuHhtFarh9krsI+8l7Yjn9ryoHSTJUcTWx+yPJm1II+PQR8v/x5UgsxzultjgEurfRQ==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -7764,6 +7861,61 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/core-client/node_modules/@storybook/core-events": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.5.2.tgz", + "integrity": "sha512-DV8bFEFVKDEvaH87KYPXDE0YEV+Y9yjFv2xxmC9pF8l+MWCtVW72RBLhB+gU5NM1bkHrRDNb0lOJfVGKlhxOog==", + "dev": true, + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-client/node_modules/@storybook/preview-api": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.5.2.tgz", + "integrity": "sha512-rpmHR/09UBSnorDBTcE7JgHUQjZLO146NCI+vbI7Pqfb4QX/8lhwkFr4cuHRAR16mv6DAJbDVoPETO0Z/CH9aw==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.5.2", + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/types": "7.5.2", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-client/node_modules/@storybook/types": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.5.2.tgz", + "integrity": "sha512-RDKHo6WUES+4nt7uZMfankjxdpYX2EI2GpJ2n2RPcnhzmb/ub1huNTjbzDEYMqY24SppljZeIN57m3Ar6L6f9A==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.5.2", + "@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/core-common": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.4.3.tgz", @@ -8031,15 +8183,81 @@ "dev": true }, "node_modules/@storybook/core-webpack": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.4.3.tgz", - "integrity": "sha512-Z7A1qml7mcV/MjYEoRXvtOgPR81cnHyYH2e7frvv9Sh0iIysvZ1+BAleD9JhiW6u6EG+TcFea2RdwsdfT6Pp0Q==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.5.2.tgz", + "integrity": "sha512-2Z6EkiiDIbwHY6w9ye8hbm7GicJbUYsFOFFx/96uKKxHB4DPcKK3A3bAT5eNBVQlN+7DMolFuJAZA7pz87KUhA==", "dev": true, "dependencies": { - "@storybook/core-common": "7.4.3", - "@storybook/node-logger": "7.4.3", - "@storybook/types": "7.4.3", - "@types/node": "^16.0.0", + "@storybook/core-common": "7.5.2", + "@storybook/node-logger": "7.5.2", + "@storybook/types": "7.5.2", + "@types/node": "^18.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-webpack/node_modules/@storybook/channels": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.5.2.tgz", + "integrity": "sha512-3SgqWq9NS0XX1QxK3riuaOLrReHWwVhI63u6q1ryDD3SttpmAezZETibOAtzDuk2FKgsyHTmAlmcGQf4ZxhOJA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-webpack/node_modules/@storybook/client-logger": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.5.2.tgz", + "integrity": "sha512-7YgLItlmiYDzWYexTaRNuHhtFarh9krsI+8l7Yjn9ryoHSTJUcTWx+yPJm1II+PQR8v/x5UgsxzultjgEurfRQ==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-webpack/node_modules/@storybook/core-common": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.5.2.tgz", + "integrity": "sha512-js7fIH4wHS08dBuIVsr3JnwMtKn5O1Izc/Zor4t6PntLWkGGX4X/GxbOkasGX5SkCT1qUtB9RpdPd1sUkLhIgw==", + "dev": true, + "dependencies": { + "@storybook/core-events": "7.5.2", + "@storybook/node-logger": "7.5.2", + "@storybook/types": "7.5.2", + "@types/find-cache-dir": "^3.2.1", + "@types/node": "^18.0.0", + "@types/node-fetch": "^2.6.4", + "@types/pretty-hrtime": "^1.0.0", + "chalk": "^4.1.0", + "esbuild": "^0.18.0", + "esbuild-register": "^3.5.0", + "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "glob": "^10.0.0", + "handlebars": "^4.7.7", + "lazy-universal-dotenv": "^4.0.0", + "node-fetch": "^2.0.0", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", "ts-dedent": "^2.0.0" }, "funding": { @@ -8047,11 +8265,53 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/core-webpack/node_modules/@storybook/core-events": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.5.2.tgz", + "integrity": "sha512-DV8bFEFVKDEvaH87KYPXDE0YEV+Y9yjFv2xxmC9pF8l+MWCtVW72RBLhB+gU5NM1bkHrRDNb0lOJfVGKlhxOog==", + "dev": true, + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-webpack/node_modules/@storybook/node-logger": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.5.2.tgz", + "integrity": "sha512-VIBuwPJOylu8vJofk1VfmqxlhXgbBgV0pCTo/UzdQAbc3w5y+qNRemf8goWxYEY+L9p6oUXqm/i9+bNGyX7/Mw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/core-webpack/node_modules/@storybook/types": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.5.2.tgz", + "integrity": "sha512-RDKHo6WUES+4nt7uZMfankjxdpYX2EI2GpJ2n2RPcnhzmb/ub1huNTjbzDEYMqY24SppljZeIN57m3Ar6L6f9A==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.5.2", + "@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/core-webpack/node_modules/@types/node": { - "version": "16.18.53", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.53.tgz", - "integrity": "sha512-vVmHeo4tpF8zsknALU90Hh24VueYdu45ZlXzYWFbom61YR4avJqTFDC3QlWzjuTdAv6/3xHaxiO9NrtVZXrkmw==", - "dev": true + "version": "18.18.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.8.tgz", + "integrity": "sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@storybook/csf": { "version": "0.1.1", @@ -8164,14 +8424,14 @@ "dev": true }, "node_modules/@storybook/docs-tools": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.4.3.tgz", - "integrity": "sha512-T9oU10vIY3mC6Up+9rjN5LfBydhhIFhKzHPtUT9PfN1iEa0lO2TkT4m+vf2kcokPppUZNVbqiGjy9t/WYnpeZg==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.5.2.tgz", + "integrity": "sha512-mBiZFhzMA2ub7wX0ho3UqKqKXO+xUi/rqb4KV4PihLKlhThEdzKyYrIZO4W90NOmlp1yUJJcjG8D8SUPuHQoTw==", "dev": true, "dependencies": { - "@storybook/core-common": "7.4.3", - "@storybook/preview-api": "7.4.3", - "@storybook/types": "7.4.3", + "@storybook/core-common": "7.5.2", + "@storybook/preview-api": "7.5.2", + "@storybook/types": "7.5.2", "@types/doctrine": "^0.0.3", "doctrine": "^3.0.0", "lodash": "^4.17.21" @@ -8181,18 +8441,107 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/docs-tools/node_modules/@storybook/channels": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.5.2.tgz", + "integrity": "sha512-3SgqWq9NS0XX1QxK3riuaOLrReHWwVhI63u6q1ryDD3SttpmAezZETibOAtzDuk2FKgsyHTmAlmcGQf4ZxhOJA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/docs-tools/node_modules/@storybook/client-logger": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.5.2.tgz", + "integrity": "sha512-7YgLItlmiYDzWYexTaRNuHhtFarh9krsI+8l7Yjn9ryoHSTJUcTWx+yPJm1II+PQR8v/x5UgsxzultjgEurfRQ==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/docs-tools/node_modules/@storybook/core-common": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.5.2.tgz", + "integrity": "sha512-js7fIH4wHS08dBuIVsr3JnwMtKn5O1Izc/Zor4t6PntLWkGGX4X/GxbOkasGX5SkCT1qUtB9RpdPd1sUkLhIgw==", + "dev": true, + "dependencies": { + "@storybook/core-events": "7.5.2", + "@storybook/node-logger": "7.5.2", + "@storybook/types": "7.5.2", + "@types/find-cache-dir": "^3.2.1", + "@types/node": "^18.0.0", + "@types/node-fetch": "^2.6.4", + "@types/pretty-hrtime": "^1.0.0", + "chalk": "^4.1.0", + "esbuild": "^0.18.0", + "esbuild-register": "^3.5.0", + "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "glob": "^10.0.0", + "handlebars": "^4.7.7", + "lazy-universal-dotenv": "^4.0.0", + "node-fetch": "^2.0.0", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/docs-tools/node_modules/@storybook/core-events": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.5.2.tgz", + "integrity": "sha512-DV8bFEFVKDEvaH87KYPXDE0YEV+Y9yjFv2xxmC9pF8l+MWCtVW72RBLhB+gU5NM1bkHrRDNb0lOJfVGKlhxOog==", + "dev": true, + "dependencies": { + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/docs-tools/node_modules/@storybook/node-logger": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.5.2.tgz", + "integrity": "sha512-VIBuwPJOylu8vJofk1VfmqxlhXgbBgV0pCTo/UzdQAbc3w5y+qNRemf8goWxYEY+L9p6oUXqm/i9+bNGyX7/Mw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, "node_modules/@storybook/docs-tools/node_modules/@storybook/preview-api": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.4.3.tgz", - "integrity": "sha512-qKwfH2+qN1Zpz2UX6dQLiTU5x2JH3o/+jOY4GYF6c3atTm5WAu1OvCYAJVb6MdXfAhZNuPwDKnJR8VmzWplWBg==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.5.2.tgz", + "integrity": "sha512-rpmHR/09UBSnorDBTcE7JgHUQjZLO146NCI+vbI7Pqfb4QX/8lhwkFr4cuHRAR16mv6DAJbDVoPETO0Z/CH9aw==", "dev": true, "dependencies": { - "@storybook/channels": "7.4.3", - "@storybook/client-logger": "7.4.3", - "@storybook/core-events": "7.4.3", + "@storybook/channels": "7.5.2", + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/types": "7.4.3", + "@storybook/types": "7.5.2", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -8207,6 +8556,31 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/docs-tools/node_modules/@storybook/types": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.5.2.tgz", + "integrity": "sha512-RDKHo6WUES+4nt7uZMfankjxdpYX2EI2GpJ2n2RPcnhzmb/ub1huNTjbzDEYMqY24SppljZeIN57m3Ar6L6f9A==", + "dev": true, + "dependencies": { + "@storybook/channels": "7.5.2", + "@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/docs-tools/node_modules/@types/node": { + "version": "18.18.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.8.tgz", + "integrity": "sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@storybook/global": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", @@ -8324,32 +8698,33 @@ "dev": true }, "node_modules/@storybook/nextjs": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-7.4.3.tgz", - "integrity": "sha512-WIriIT0AHtIVGaQVpYfuZ/Pyep/7PaoJBGBWiiVV7/oPy8BoLK2G+s39f0FjtOvCCWYMEIGudaAW8ueBXc3rHQ==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-7.5.2.tgz", + "integrity": "sha512-dpc85lG15cZCWOwKn7bhvU/QhQcxHM0f7lGjfSNnXweoYiSoR6L+5e4C0NX9oWgPlaP3zWAZXXdIKqQ/3U3jeQ==", "dev": true, "dependencies": { "@babel/core": "^7.22.9", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.7", "@babel/plugin-syntax-bigint": "^7.8.3", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.11", + "@babel/plugin-transform-numeric-separator": "^7.22.11", + "@babel/plugin-transform-object-rest-spread": "^7.22.15", "@babel/plugin-transform-runtime": "^7.22.9", "@babel/preset-env": "^7.22.9", "@babel/preset-react": "^7.22.5", "@babel/preset-typescript": "^7.22.5", "@babel/runtime": "^7.22.6", - "@storybook/addon-actions": "7.4.3", - "@storybook/builder-webpack5": "7.4.3", - "@storybook/core-common": "7.4.3", - "@storybook/node-logger": "7.4.3", - "@storybook/preset-react-webpack": "7.4.3", - "@storybook/preview-api": "7.4.3", - "@storybook/react": "7.4.3", - "@types/node": "^16.0.0", + "@storybook/addon-actions": "7.5.2", + "@storybook/builder-webpack5": "7.5.2", + "@storybook/core-common": "7.5.2", + "@storybook/core-events": "7.5.2", + "@storybook/node-logger": "7.5.2", + "@storybook/preset-react-webpack": "7.5.2", + "@storybook/preview-api": "7.5.2", + "@storybook/react": "7.5.2", + "@types/node": "^18.0.0", "css-loader": "^6.7.3", "find-up": "^5.0.0", "fs-extra": "^11.1.0", @@ -8376,8 +8751,8 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@next/font": "^13.0.0", - "next": "^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0", + "@next/font": "^13.0.0|| ^14.0.0", + "next": "^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", "webpack": "^5.0.0" @@ -8397,32 +8772,107 @@ } } }, - "node_modules/@storybook/nextjs/node_modules/@storybook/core-client": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.4.3.tgz", - "integrity": "sha512-YRt07TxC+HUtnyvbpJbY8d2+2QfFExBL7zRbms9tIRorddWfPBq+lA2RS9zcjUJJJtNSz1+ST70FuGr1N3AXGg==", + "node_modules/@storybook/nextjs/node_modules/@storybook/channels": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.5.2.tgz", + "integrity": "sha512-3SgqWq9NS0XX1QxK3riuaOLrReHWwVhI63u6q1ryDD3SttpmAezZETibOAtzDuk2FKgsyHTmAlmcGQf4ZxhOJA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.3", - "@storybook/preview-api": "7.4.3" + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.2.0", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/nextjs/node_modules/@storybook/client-logger": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.5.2.tgz", + "integrity": "sha512-7YgLItlmiYDzWYexTaRNuHhtFarh9krsI+8l7Yjn9ryoHSTJUcTWx+yPJm1II+PQR8v/x5UgsxzultjgEurfRQ==", + "dev": true, + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/nextjs/node_modules/@storybook/core-common": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.5.2.tgz", + "integrity": "sha512-js7fIH4wHS08dBuIVsr3JnwMtKn5O1Izc/Zor4t6PntLWkGGX4X/GxbOkasGX5SkCT1qUtB9RpdPd1sUkLhIgw==", + "dev": true, + "dependencies": { + "@storybook/core-events": "7.5.2", + "@storybook/node-logger": "7.5.2", + "@storybook/types": "7.5.2", + "@types/find-cache-dir": "^3.2.1", + "@types/node": "^18.0.0", + "@types/node-fetch": "^2.6.4", + "@types/pretty-hrtime": "^1.0.0", + "chalk": "^4.1.0", + "esbuild": "^0.18.0", + "esbuild-register": "^3.5.0", + "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "glob": "^10.0.0", + "handlebars": "^4.7.7", + "lazy-universal-dotenv": "^4.0.0", + "node-fetch": "^2.0.0", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/nextjs/node_modules/@storybook/core-events": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.5.2.tgz", + "integrity": "sha512-DV8bFEFVKDEvaH87KYPXDE0YEV+Y9yjFv2xxmC9pF8l+MWCtVW72RBLhB+gU5NM1bkHrRDNb0lOJfVGKlhxOog==", + "dev": true, + "dependencies": { + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/nextjs/node_modules/@storybook/node-logger": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.5.2.tgz", + "integrity": "sha512-VIBuwPJOylu8vJofk1VfmqxlhXgbBgV0pCTo/UzdQAbc3w5y+qNRemf8goWxYEY+L9p6oUXqm/i9+bNGyX7/Mw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, "node_modules/@storybook/nextjs/node_modules/@storybook/preview-api": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.4.3.tgz", - "integrity": "sha512-qKwfH2+qN1Zpz2UX6dQLiTU5x2JH3o/+jOY4GYF6c3atTm5WAu1OvCYAJVb6MdXfAhZNuPwDKnJR8VmzWplWBg==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.5.2.tgz", + "integrity": "sha512-rpmHR/09UBSnorDBTcE7JgHUQjZLO146NCI+vbI7Pqfb4QX/8lhwkFr4cuHRAR16mv6DAJbDVoPETO0Z/CH9aw==", "dev": true, "dependencies": { - "@storybook/channels": "7.4.3", - "@storybook/client-logger": "7.4.3", - "@storybook/core-events": "7.4.3", + "@storybook/channels": "7.5.2", + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/types": "7.4.3", + "@storybook/types": "7.5.2", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -8437,57 +8887,30 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/nextjs/node_modules/@storybook/react": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.4.3.tgz", - "integrity": "sha512-koF1GLPBY5rm8t+6i70Iw6Ep/6T2C+XAlnP1dO/ZJAv8mmeQmOw+Kwh6nNPG8bthm0l1nImgqRw2ZwCD2AFoSA==", + "node_modules/@storybook/nextjs/node_modules/@storybook/types": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.5.2.tgz", + "integrity": "sha512-RDKHo6WUES+4nt7uZMfankjxdpYX2EI2GpJ2n2RPcnhzmb/ub1huNTjbzDEYMqY24SppljZeIN57m3Ar6L6f9A==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.3", - "@storybook/core-client": "7.4.3", - "@storybook/docs-tools": "7.4.3", - "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.4.3", - "@storybook/react-dom-shim": "7.4.3", - "@storybook/types": "7.4.3", - "@types/escodegen": "^0.0.6", - "@types/estree": "^0.0.51", - "@types/node": "^16.0.0", - "acorn": "^7.4.1", - "acorn-jsx": "^5.3.1", - "acorn-walk": "^7.2.0", - "escodegen": "^2.1.0", - "html-tags": "^3.1.0", - "lodash": "^4.17.21", - "prop-types": "^15.7.2", - "react-element-to-jsx-string": "^15.0.0", - "ts-dedent": "^2.0.0", - "type-fest": "~2.19", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=16.0.0" + "@storybook/channels": "7.5.2", + "@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" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, "node_modules/@storybook/nextjs/node_modules/@types/node": { - "version": "16.18.53", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.53.tgz", - "integrity": "sha512-vVmHeo4tpF8zsknALU90Hh24VueYdu45ZlXzYWFbom61YR4avJqTFDC3QlWzjuTdAv6/3xHaxiO9NrtVZXrkmw==", - "dev": true + "version": "18.18.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.8.tgz", + "integrity": "sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@storybook/node-logger": { "version": "7.4.3", @@ -8510,20 +8933,20 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.4.3.tgz", - "integrity": "sha512-Cp6jNqmvElHs3z/+4mNWL+uB6vvCPZYpaK4MB6SO50i8FySANFgH1WCRYRqcnpbV462Cy+NUEbIOPxOhd2XxLA==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.5.2.tgz", + "integrity": "sha512-d0RY45ixWDArW4OSoGYrbm0oZbE6Z3kOi6Z64ed4E1ERQfEizq1EAgW/n7QqDMBKfPMNdNncDyGRiiSIdgyuBg==", "dev": true, "dependencies": { "@babel/preset-flow": "^7.22.5", "@babel/preset-react": "^7.22.5", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", - "@storybook/core-webpack": "7.4.3", - "@storybook/docs-tools": "7.4.3", - "@storybook/node-logger": "7.4.3", - "@storybook/react": "7.4.3", + "@storybook/core-webpack": "7.5.2", + "@storybook/docs-tools": "7.5.2", + "@storybook/node-logger": "7.5.2", + "@storybook/react": "7.5.2", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", - "@types/node": "^16.0.0", + "@types/node": "^18.0.0", "@types/semver": "^7.3.4", "babel-plugin-add-react-displayname": "^0.0.5", "babel-plugin-react-docgen": "^4.2.1", @@ -8553,102 +8976,29 @@ } } }, - "node_modules/@storybook/preset-react-webpack/node_modules/@storybook/core-client": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.4.3.tgz", - "integrity": "sha512-YRt07TxC+HUtnyvbpJbY8d2+2QfFExBL7zRbms9tIRorddWfPBq+lA2RS9zcjUJJJtNSz1+ST70FuGr1N3AXGg==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "7.4.3", - "@storybook/preview-api": "7.4.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/preset-react-webpack/node_modules/@storybook/preview-api": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.4.3.tgz", - "integrity": "sha512-qKwfH2+qN1Zpz2UX6dQLiTU5x2JH3o/+jOY4GYF6c3atTm5WAu1OvCYAJVb6MdXfAhZNuPwDKnJR8VmzWplWBg==", + "node_modules/@storybook/preset-react-webpack/node_modules/@storybook/node-logger": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.5.2.tgz", + "integrity": "sha512-VIBuwPJOylu8vJofk1VfmqxlhXgbBgV0pCTo/UzdQAbc3w5y+qNRemf8goWxYEY+L9p6oUXqm/i9+bNGyX7/Mw==", "dev": true, - "dependencies": { - "@storybook/channels": "7.4.3", - "@storybook/client-logger": "7.4.3", - "@storybook/core-events": "7.4.3", - "@storybook/csf": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/types": "7.4.3", - "@types/qs": "^6.9.5", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "synchronous-promise": "^2.0.15", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/preset-react-webpack/node_modules/@storybook/react": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.4.3.tgz", - "integrity": "sha512-koF1GLPBY5rm8t+6i70Iw6Ep/6T2C+XAlnP1dO/ZJAv8mmeQmOw+Kwh6nNPG8bthm0l1nImgqRw2ZwCD2AFoSA==", + "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { + "version": "18.18.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.8.tgz", + "integrity": "sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.3", - "@storybook/core-client": "7.4.3", - "@storybook/docs-tools": "7.4.3", - "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.4.3", - "@storybook/react-dom-shim": "7.4.3", - "@storybook/types": "7.4.3", - "@types/escodegen": "^0.0.6", - "@types/estree": "^0.0.51", - "@types/node": "^16.0.0", - "acorn": "^7.4.1", - "acorn-jsx": "^5.3.1", - "acorn-walk": "^7.2.0", - "escodegen": "^2.1.0", - "html-tags": "^3.1.0", - "lodash": "^4.17.21", - "prop-types": "^15.7.2", - "react-element-to-jsx-string": "^15.0.0", - "ts-dedent": "^2.0.0", - "type-fest": "~2.19", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "undici-types": "~5.26.4" } }, - "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { - "version": "16.18.53", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.53.tgz", - "integrity": "sha512-vVmHeo4tpF8zsknALU90Hh24VueYdu45ZlXzYWFbom61YR4avJqTFDC3QlWzjuTdAv6/3xHaxiO9NrtVZXrkmw==", - "dev": true - }, "node_modules/@storybook/preview": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.4.3.tgz", - "integrity": "sha512-dItyGcql/rD6CWTKGUm58MguWC7L4KjlfNJmxxaHXnHRbaEjXPaRi9ztfmimIpAaBdBmreAZrZJYhLvOGG3CfA==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.5.2.tgz", + "integrity": "sha512-dA5VpHp0D9nh9/wOzWP8At1wtz/SiaMBbwaiEOFTFUGcPerrkroEWadIlSSB7vgQJ9yWiD4l3KDaS8ANzHWtPQ==", "dev": true, "funding": { "type": "opencollective", @@ -8742,21 +9092,21 @@ } }, "node_modules/@storybook/react": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.4.6.tgz", - "integrity": "sha512-w0dVo64baFFPTGpUOWFqkKsu6pQincoymegSNgqaBd5DxEyMDRiRoTWSJHMKE9BwgE8SyWhRkP1ak1mkccSOhQ==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.5.2.tgz", + "integrity": "sha512-7X8GtqvRjWmVS112ifChJMxfD15rMVg5m3t6apZqi0uui1S/DImAveHwz8M4FhsElW6MIHs5xK0uJhR9rVQgTA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.6", - "@storybook/core-client": "7.4.6", - "@storybook/docs-tools": "7.4.6", + "@storybook/client-logger": "7.5.2", + "@storybook/core-client": "7.5.2", + "@storybook/docs-tools": "7.5.2", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.4.6", - "@storybook/react-dom-shim": "7.4.6", - "@storybook/types": "7.4.6", + "@storybook/preview-api": "7.5.2", + "@storybook/react-dom-shim": "7.5.2", + "@storybook/types": "7.5.2", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", - "@types/node": "^16.0.0", + "@types/node": "^18.0.0", "acorn": "^7.4.1", "acorn-jsx": "^5.3.1", "acorn-walk": "^7.2.0", @@ -8807,9 +9157,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.4.3.tgz", - "integrity": "sha512-d8kkZU4kqmNluuOx65l5H0L9lRn8Ji5rVxu+4MUCWrn82dxRLvVcFG0sfGUzOTNfX1/yajL2MxVJ2hx9fzLutQ==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.5.2.tgz", + "integrity": "sha512-x7h3TTLRLs8mrsCBKXbvjBRFms73XrNlm0Lo5Tu/Tf//+pwOFq+2sGBkqbRkYd54jNHhpqNF7+UUdzA93ESnbQ==", "dev": true, "funding": { "type": "opencollective", @@ -8821,13 +9171,13 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/channels": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.4.6.tgz", - "integrity": "sha512-yPv/sfo2c18fM3fvG0i1xse63vG8l33Al/OU0k/dtovltPu001/HVa1QgBgsb/QrEfZtvGjGhmtdVeYb39fv3A==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.5.2.tgz", + "integrity": "sha512-3SgqWq9NS0XX1QxK3riuaOLrReHWwVhI63u6q1ryDD3SttpmAezZETibOAtzDuk2FKgsyHTmAlmcGQf4ZxhOJA==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.4.6", - "@storybook/core-events": "7.4.6", + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", "@storybook/global": "^5.0.0", "qs": "^6.10.0", "telejson": "^7.2.0", @@ -8839,9 +9189,9 @@ } }, "node_modules/@storybook/react/node_modules/@storybook/client-logger": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.4.6.tgz", - "integrity": "sha512-XDw31ZziU//86PKuMRnmc+L/G0VopaGKENQOGEpvAXCU9IZASwGKlKAtcyosjrpi+ZiUXlMgUXCpXM7x3b1Ehw==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.5.2.tgz", + "integrity": "sha512-7YgLItlmiYDzWYexTaRNuHhtFarh9krsI+8l7Yjn9ryoHSTJUcTWx+yPJm1II+PQR8v/x5UgsxzultjgEurfRQ==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -8851,45 +9201,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/react/node_modules/@storybook/core-common": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.4.6.tgz", - "integrity": "sha512-05MJFmOM86qvTLtgDskokIFz9txe0Lbhq4L3by1FtF0GwgH+p+W6I94KI7c6ANER+kVZkXQZhiRzwBFnVTW+Cg==", - "dev": true, - "dependencies": { - "@storybook/core-events": "7.4.6", - "@storybook/node-logger": "7.4.6", - "@storybook/types": "7.4.6", - "@types/find-cache-dir": "^3.2.1", - "@types/node": "^16.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.4.0", - "file-system-cache": "2.3.0", - "find-cache-dir": "^3.0.0", - "find-up": "^5.0.0", - "fs-extra": "^11.1.0", - "glob": "^10.0.0", - "handlebars": "^4.7.7", - "lazy-universal-dotenv": "^4.0.0", - "node-fetch": "^2.0.0", - "picomatch": "^2.3.0", - "pkg-dir": "^5.0.0", - "pretty-hrtime": "^1.0.3", - "resolve-from": "^5.0.0", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/react/node_modules/@storybook/core-events": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.4.6.tgz", - "integrity": "sha512-r5vrE+32lwrJh1NGFr1a0mWjvxo7q8FXYShylcwRWpacmL5NTtLkrXOoJSeGvJ4yKNYkvxQFtOPId4lzDxa32w==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.5.2.tgz", + "integrity": "sha512-DV8bFEFVKDEvaH87KYPXDE0YEV+Y9yjFv2xxmC9pF8l+MWCtVW72RBLhB+gU5NM1bkHrRDNb0lOJfVGKlhxOog==", "dev": true, "dependencies": { "ts-dedent": "^2.0.0" @@ -8899,55 +9214,39 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/react/node_modules/@storybook/docs-tools": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.4.6.tgz", - "integrity": "sha512-nZj1L/8WwKWWJ41FW4MaKGajZUtrhnr9UwflRCkQJaWhAKmDfOb5M5TqI93uCOULpFPOm5wpoMBz2IHInQ2Lrg==", + "node_modules/@storybook/react/node_modules/@storybook/preview-api": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.5.2.tgz", + "integrity": "sha512-rpmHR/09UBSnorDBTcE7JgHUQjZLO146NCI+vbI7Pqfb4QX/8lhwkFr4cuHRAR16mv6DAJbDVoPETO0Z/CH9aw==", "dev": true, "dependencies": { - "@storybook/core-common": "7.4.6", - "@storybook/preview-api": "7.4.6", - "@storybook/types": "7.4.6", - "@types/doctrine": "^0.0.3", - "doctrine": "^3.0.0", - "lodash": "^4.17.21" + "@storybook/channels": "7.5.2", + "@storybook/client-logger": "7.5.2", + "@storybook/core-events": "7.5.2", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/types": "7.5.2", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/react/node_modules/@storybook/node-logger": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.4.6.tgz", - "integrity": "sha512-djZb310Q27GviDug1XBv0jOEDLCiwr4hhDE0aifCEKZpfNCi/EaP31nbWimFzZwxu4hE/YAPWExzScruR1zw9Q==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/react/node_modules/@storybook/react-dom-shim": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.4.6.tgz", - "integrity": "sha512-DSq8l9FDocUF1ooVI+TF83pddj1LynE/Hv0/y8XZhc3IgJ/HkuOQuUmfz29ezgfAi9gFYUR8raTIBi3/xdoRmw==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/@storybook/react/node_modules/@storybook/types": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.4.6.tgz", - "integrity": "sha512-6QLXtMVsFZFpzPkdGWsu/iuc8na9dnS67AMOBKm5qCLPwtUJOYkwhMdFRSSeJthLRpzV7JLAL8Kwvl7MFP3QSw==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.5.2.tgz", + "integrity": "sha512-RDKHo6WUES+4nt7uZMfankjxdpYX2EI2GpJ2n2RPcnhzmb/ub1huNTjbzDEYMqY24SppljZeIN57m3Ar6L6f9A==", "dev": true, "dependencies": { - "@storybook/channels": "7.4.6", + "@storybook/channels": "7.5.2", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", "file-system-cache": "2.3.0" @@ -8958,10 +9257,13 @@ } }, "node_modules/@storybook/react/node_modules/@types/node": { - "version": "16.18.53", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.53.tgz", - "integrity": "sha512-vVmHeo4tpF8zsknALU90Hh24VueYdu45ZlXzYWFbom61YR4avJqTFDC3QlWzjuTdAv6/3xHaxiO9NrtVZXrkmw==", - "dev": true + "version": "18.18.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.8.tgz", + "integrity": "sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@storybook/router": { "version": "7.4.3", @@ -8982,46 +9284,6 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/store": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/store/-/store-7.4.3.tgz", - "integrity": "sha512-cW5PBQ37tEmSKhyu2YpMlQUrL5SEXiJbWuCfNtN15mExeeOfYj4zxrXborxZwT2kMaES5RUdqgOz4oebKU9t8g==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "7.4.3", - "@storybook/preview-api": "7.4.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/store/node_modules/@storybook/preview-api": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.4.3.tgz", - "integrity": "sha512-qKwfH2+qN1Zpz2UX6dQLiTU5x2JH3o/+jOY4GYF6c3atTm5WAu1OvCYAJVb6MdXfAhZNuPwDKnJR8VmzWplWBg==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.4.3", - "@storybook/client-logger": "7.4.3", - "@storybook/core-events": "7.4.3", - "@storybook/csf": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/types": "7.4.3", - "@types/qs": "^6.9.5", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "synchronous-promise": "^2.0.15", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, "node_modules/@storybook/telemetry": { "version": "7.4.5", "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.4.5.tgz", @@ -9186,13 +9448,13 @@ } }, "node_modules/@storybook/theming": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.5.1.tgz", - "integrity": "sha512-ETLAOn10hI4Mkmjsr0HGcM6HbzaURrrPBYmfXOrdbrzEVN+AHW4FlvP9d8fYyP1gdjPE1F39XvF0jYgt1zXiHQ==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.5.2.tgz", + "integrity": "sha512-DZBTcYErSYvmTYsGz7lKtiIcBe8flBw5Ojp52r3O4GcRYG4AbuUwwVvehz+O1cWaS+UW3HavrcgapERH7ZHd1A==", "dev": true, "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.5.1", + "@storybook/client-logger": "7.5.2", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -9206,9 +9468,9 @@ } }, "node_modules/@storybook/theming/node_modules/@storybook/client-logger": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.5.1.tgz", - "integrity": "sha512-XxbLvg0aQRoBrzxYLcVYCbjDkGbkU8Rfb74XbV2CLiO2bIbFPmA1l1Nwbp+wkCGA+O6Z1zwzSl6wcKKqZ6XZCg==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.5.2.tgz", + "integrity": "sha512-7YgLItlmiYDzWYexTaRNuHhtFarh9krsI+8l7Yjn9ryoHSTJUcTWx+yPJm1II+PQR8v/x5UgsxzultjgEurfRQ==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -9836,9 +10098,9 @@ "dev": true }, "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==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.1.tgz", + "integrity": "sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng==", "dev": true }, "node_modules/@types/pretty-hrtime": { @@ -9896,9 +10158,9 @@ } }, "node_modules/@types/react-simple-maps": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/react-simple-maps/-/react-simple-maps-3.0.0.tgz", - "integrity": "sha512-yj1gBs7R+yq0OaHzQgwcRvzaHQxNBny1myl7NaICeBjToTG2sQK2Tq18lflojtLTm8vOLeFuA3EaYW+L8SkrAQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/react-simple-maps/-/react-simple-maps-3.0.2.tgz", + "integrity": "sha512-06e/JKo6BJ8bwCdMFTnivm8mheXF/DSCy96BQ6x5CCeZl/NPNCC8uUnBqbEJP0/1Q4nsEFYYmbUidfUxHr/C2g==", "dev": true, "dependencies": { "@types/d3-geo": "^2", @@ -12559,9 +12821,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.32.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.32.2.tgz", - "integrity": "sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ==", + "version": "3.33.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.2.tgz", + "integrity": "sha512-a8zeCdyVk7uF2elKIGz67AjcXOxjRbwOLz8SbklEso1V+2DoW4OkAMZN9S9GBgvZIaqQi/OemFX4OiSoQEmg1Q==", "dev": true, "hasInstallScript": true, "funding": { @@ -14433,9 +14695,9 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.4.2.tgz", - "integrity": "sha512-3Nfvv3wbq2+PZlRTf2oaAWXWwbdBejFRBR2O8tAO67o+P8zno+QGbcDYaAXODlreXVg+9gvWhKKmG2rgfb8GEg==", + "version": "27.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz", + "integrity": "sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^5.10.0" @@ -15541,9 +15803,9 @@ "dev": true }, "node_modules/fs-monkey": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", - "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", "dev": true }, "node_modules/fs.realpath": { @@ -23744,6 +24006,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", diff --git a/dashboard/package.json b/dashboard/package.json index 39266758a..98ebba1ba 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -45,7 +45,7 @@ "@storybook/addon-links": "^7.0.0-beta.52", "@storybook/addons": "^7.4.6", "@storybook/blocks": "^7.4.5", - "@storybook/nextjs": "^7.0.0-alpha.41", + "@storybook/nextjs": "^7.5.2", "@storybook/preview-api": "^7.4.6", "@storybook/react": "^7.4.6", "@storybook/testing-library": "^0.2.2", @@ -59,13 +59,13 @@ "@types/react": "18.2.22", "@types/react-cytoscapejs": "^1.2.3", "@types/react-dom": "18.2.12", - "@types/react-simple-maps": "^3.0.0", + "@types/react-simple-maps": "^3.0.2", "autoprefixer": "^10.4.13", "eslint": "^8.49.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-next": "13.5.4", "eslint-config-prettier": "^9.0.0", - "eslint-plugin-jest": "^27.4.2", + "eslint-plugin-jest": "^27.6.0", "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-storybook": "^0.6.15", "husky": "^8.0.0", diff --git a/dashboard/pages/cloud-accounts.tsx b/dashboard/pages/cloud-accounts.tsx index 1b7568579..79be7073b 100644 --- a/dashboard/pages/cloud-accounts.tsx +++ b/dashboard/pages/cloud-accounts.tsx @@ -14,16 +14,32 @@ import CloudAccountDeleteContents from '@components/cloud-account/components/Clo import { useToast } from '@components/toast/ToastProvider'; import EmptyState from '@components/empty-state/EmptyState'; +import Banner from '@components/banner/Banner'; +import Button from '@components/button/Button'; function CloudAccounts() { const [editCloudAccount, setEditCloudAccount] = useState(false); const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false); + const [isTailwardenBannerDismissed, setIsTailwardenBannerDismissed] = + useState(true); + const { toast, showToast, dismissToast } = useToast(); const router = useRouter(); const currentViewProvider = router.query.view as string; + const hideTailwardenBanner = () => { + setIsTailwardenBannerDismissed(true); + window.localStorage.setItem('tailwardenBannerDismissed', 'true'); + }; + + useEffect(() => { + setIsTailwardenBannerDismissed( + window.localStorage.getItem('tailwardenBannerDismissed') === 'true' + ); + }, []); + const { cloudAccounts, setCloudAccounts, @@ -75,7 +91,7 @@ function CloudAccounts() { {/* Wraps the cloud account page and handles the custom views sidebar */} - +
{filteredCloudAccounts.map(account => ( )} + + {cloudAccounts.length >= 2 && !isTailwardenBannerDismissed && ( +
+ For deeper insights and account-level alerts, make the switch to + Tailwarden — our recommended cloud version for production use.{' '} + + +
+ )} ); } diff --git a/dashboard/tailwind.config.js b/dashboard/tailwind.config.js index 0744cc780..a90bf1875 100644 --- a/dashboard/tailwind.config.js +++ b/dashboard/tailwind.config.js @@ -172,7 +172,12 @@ module.exports = { scale: 'scale 250ms ease forwards' }, backgroundImage: { - 'dependency-graph': 'radial-gradient(#EDEBEE 2px, transparent 0)' + 'dependency-graph': 'radial-gradient(#EDEBEE 2px, transparent 0)', + 'empty-cost-explorer': + "url('/assets/img/others/empty-state-cost-explorer.png')" + }, + width: { + 'fit-content': 'fit-content' } } }, diff --git a/dashboard/utils/providerHelper.ts b/dashboard/utils/providerHelper.ts index 56676dc27..e4155e737 100644 --- a/dashboard/utils/providerHelper.ts +++ b/dashboard/utils/providerHelper.ts @@ -142,7 +142,6 @@ const platform: Platform = { } }, - getImgSrc(providerName) { const key = providerName.toLowerCase(); if (key in this.cloudProviders) return this.cloudProviders[key].imgSrc; diff --git a/docs/configuration/cloud-providers/aws.mdx b/docs/configuration/cloud-providers/aws.mdx index 55c6411eb..e91148b71 100644 --- a/docs/configuration/cloud-providers/aws.mdx +++ b/docs/configuration/cloud-providers/aws.mdx @@ -342,65 +342,69 @@ The above command deploys Komiser on the Kubernetes cluster in the default confi
-## Multiple account EKS (Helm chart) installation +## Multiple Account EKS Installation --- -Link to [README](https://github.com/tailwarden/helm/blob/master/README.md#configuration-multiple-aws-accounts) file with step by step instructions. -Steps for a container to access the resources in multiple AWS accounts. -We are working with two example clusters, ADMIN and DEV cluster. +Below you will find the steps to deploy Komiser to an EKS cluster, such that it can monitor resources from multiple AWS accounts. -Solution diagram: - - - +We are working with two AWS accounts here: **ADMIN** and **DEV** accounts. -### Create and IAM OIDC provider for your cluster +**Solution diagram:** -1. Open the Amazon EKS console at [https://console\.aws\.amazon\.com/eks/home\#/clusters](https://console.aws.amazon.com/eks/home#/clusters)\. - -1. Select the name of your cluster\. - -1. In the **Details** section on the **Overview** tab, note the value of the **OpenID Connect provider URL**\. - -1. Open the IAM console at [https://console\.aws\.amazon\.com/iam/](https://console.aws.amazon.com/iam/)\. - -1. In the left navigation pane, choose **Identity Providers** under **Access management**\. If a **Provider** is listed that matches the URL for your cluster, then you already have a provider for your cluster\. If a provider isn't listed that matches the URL for your cluster, then you must create one\. + + + -1. To create a provider, choose **Add Provider**\. +### Create an IAM OIDC provider for your cluster -1. For **Provider Type**, choose **OpenID Connect**\. +1. Open the [Amazon EKS console](https://console\.aws\.amazon\.com/eks/home\#/clusters). +2. Select the name of your cluster. +3. Once the cluster is up and running, note the value of the **OpenID Connect provider URL** from the **Details** section on the **Overview** tab. +4. Open the [AWS IAM console](https://console.aws.amazon.com/iam/). +5. In the left navigation pane, choose **Identity Providers** under **Access management**. + > If a **Provider** is listed that matches the URL for your cluster, then you already have a provider for your cluster. If a provider isn't listed that matches the URL for your cluster, then you must create one. +6. To create a provider, choose **Add Provider**. +7. For **Provider Type**, choose **OpenID Connect**. +8. For **Provider URL**, paste the OIDC issuer URL for your cluster, and then choose **Get thumbprint**. +9. For **Audience**, enter `sts.amazonaws.com` and choose **Add provider**. -1. For **Provider URL**, paste the OIDC issuer URL for your cluster, and then choose **Get thumbprint**\. - -1. For **Audience**, enter `sts.amazonaws.com` and choose **Add provider**\. - -### Register the `ADMIN` OIDC provider in the `DEV` cluster +### Register the `ADMIN` OIDC provider in the `DEV` Account 1. Grab the **OpenID Connect provider URL** from the **ADMIN** account. +2. Open the [AWS IAM console](https://console.aws.amazon.com/iam/) in the **DEV account**. +3. In the left navigation pane, choose **Identity Providers** under **Access management**. +4. To create a provider, choose **Add Provider**. +5. For **Provider Type**, choose **OpenID Connect**. +6. For **Provider URL**, paste the **ADMIN OIDC URL**, and then choose **Get thumbprint**. +7. For **Audience**, enter `sts.amazonaws.com` and choose **Add provider**. + +### Create an `ADMIN IAM` role for the `ADMIN` Account + +1. Create a the Admin IAM role using the same [configuration](#create-iam-role-and-attach-a-komiser-iam-policy) as mentioned in the above section: + - Attach the [Komiser policy](https://github.com/tailwarden/komiser/blob/master/policy.json). + - Create a [service account trust relationship](#create-an-iam-role-for-a-service-account). +3. Additionally modify the IAM policy to assume the `DEV` IAM role **(once created)**: +```bash +{ + "Sid": "6", + "Effect": "Allow", + "Action": "sts:AssumeRole", + "Resource": "arn:aws:iam::${DEV_ACCOUNT_ID}:role/${DEV_IAM_ROLE}" +} +``` -2. Open the IAM console at [https://console\.aws\.amazon\.com/iam/](https://console.aws.amazon.com/iam/)\. - -1. In the left navigation pane, choose **Identity Providers** under **Access management**\. - -1. To create a provider, choose **Add Provider**\. - -1. For **Provider Type**, choose **OpenID Connect**\. - -1. For **Provider URL**, paste the ADMIN OIDC issuer URL, and then choose **Get thumbprint**\. - -1. For **Audience**, enter `sts.amazonaws.com` and choose **Add provider**\. +### Create a `DEV IAM` role for the `DEV` Account -### Create A `DEV IAM role` -Add the recommended [Komiser policy](https://github.com/tailwarden/komiser/blob/master/policy.json) -Create a Trust Relathionship with the `ADMIN` role (once it's created) -``` - { +1. Add the recommended [Komiser policy](https://github.com/tailwarden/komiser/blob/master/policy.json) +2. Create a Trust Relationship with the `ADMIN IAM` role +```json +{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { - "AWS": "arn:aws:iam::${ADMIN_ACCOUNT_ID}:role/${ROLE_NAME}" + "AWS": "${ADMIN_IAM_ROLE_ARN}" }, "Action": "sts:AssumeRole", "Condition": {} @@ -409,23 +413,12 @@ Create a Trust Relathionship with the `ADMIN` role (once it's created) } ``` -### Create an `ADMIN IAM role` -Create a [role](#create-iam-role-and-attach-a-komiser-iam-policy) with the same configuration as above. -Additionally attach the policy to assume the `DEV` role -``` - { - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Action": "sts:AssumeRole", - "Resource": "arn:aws:iam::${DEV_ACCOUNT_ID}:role/${ROLE_NAME}" - } - ] - } -``` +### Helm Chart Configuration + +We'll be modifying the [helm chart](https://github.com/tailwarden/helm), to deploy Komiser to the EKS cluster. + +#### Add the `ADMIN` role to the ServiceAccount -### Add the `ADMIN` role to the ServiceAccount Add your values for `ACCOUNT_ID` and `ROLE_Name` ``` @@ -437,72 +430,95 @@ metadata: eks.amazonaws.com/role-arn: arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME ``` -### Add a ConfigMap to the `/templates` folder +#### Add a ConfigMap to the `/templates` folder -1. Add the configmap.yaml file the the `/templates` folder in the root of the repository. +Add the `configmap.yaml` file the the `/templates` folder in the root of the repository: +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: aws-configmap + annotations: + meta.helm.sh/release-name: komiser + meta.helm.sh/release-namespace: ${NAMESPACE} + labels: + app.kubernetes.io/managed-by: Helm + namespace: ${NAMESPACE} +data: + config.toml: |- + [[aws]] + name="Admin Account" + source="CREDENTIALS_FILE" + path="/path/to/credentials/file" + profile="Admin-User" # Required if CREDENTIALS_FILE is set + + [[aws]] + name="Dev Account" + source="CREDENTIALS_FILE" + path="/path/to/credentials/file" + profile="Dev-User" # Required if CREDENTIALS_FILE is set + + [sqlite] + file="komiser.db" +``` - ``` - apiVersion: v1 - kind: ConfigMap - data: - config.toml: |- - [[aws]] - name="admin" - source="CREDENTIALS_FILE" - path=/path/to/credentials/file - profile="ADMIN-account" # Required if CREDENTIALS_FILE is set - - [[aws]] - name="dev" - source="CREDENTIALS_FILE" - path=/path/to/credentials/file - profile="ADMIN-account" # Required if CREDENTIALS_FILE is set - metadata: - annotations: - meta.helm.sh/release-name: ${RELEASE_NAME} - meta.helm.sh/release-namespace: ${NAMESPACE} - labels: - app.kubernetes.io/managed-by: Helm - name: aws-configmap - namespace: ${NAMESPACE} - ``` +#### Mount the `ConfigMap` to the Deployment manifest + +```yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: komiser-deploy +spec: + selector: + matchLabels: + app: komiser + template: + metadata: + name: komiser + labels: + app: komiser + spec: + serviceAccountName: komiser + volumes: + - name: test-volume + configMap: + name: aws-configmap + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: ["komiser","start","--config","/root/.aws/config.toml"] + env: + - name: AWS_DEFAULT_REGION + value: "{{ .Values.aws.region }}" + - name: AWS_CONFIG_FILE + value: /root/.aws/credentials + volumeMounts: + - name: test-volume + mountPath: /root/.aws/ +``` -### Mount the ConfigMap to the Deployment manifest +> **Points to remember:** +> 1. Make sure not to change the mount path or internal volume path here. The paths should match the example above. +> 2. The `config.toml` file will be mounted as a volume at the location: `/root/.aws/`. +Therefore, make sure to provide the same path in the komiser start command for the container. +> 3. Have a valid credentials file that the deployment has access to. -1. Make sure not to change the mount path or internal volume path, paths should match the example below. -2. Add the correct `config.toml` path to `command` to the container to allow a multi account setup. -3. Have a valid credentials file that the deployment has access to. +### Here's a video tutorial on how to deploy Komiser to an EKS cluster, with a Multi-Account Configuration: - ``` - apiVersion: apps/v1 - kind: Deployment - metadata: - name: komiser - spec: - selector: - matchLabels: - app: komiser - template: - metadata: - name: komiser - labels: - app: komiser - spec: - serviceAccountName: komiser - containers: - - name: {{ .Chart.Name }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - command: ["komiser","start","--config","/root/.aws/config.toml"] - env: - - name: AWS_DEFAULT_REGION - value: "{{ .Values.aws.region }}" - - name: AWS_CONFIG_FILE - value: /root/.aws/credentials - volumeMounts: - - name: test-volume - mountPath: /root/.aws/ - volumes: - - name: test-volume - configMap: - name: aws-configmap +
+ +
diff --git a/docs/images/multi-account-diagram.png b/docs/images/multi-account-diagram.png new file mode 100644 index 000000000..a8ae0b91d Binary files /dev/null and b/docs/images/multi-account-diagram.png differ diff --git a/docs/images/multi-account-graph.png b/docs/images/multi-account-graph.png deleted file mode 100644 index a0f682bfb..000000000 Binary files a/docs/images/multi-account-graph.png and /dev/null differ diff --git a/policy.json b/policy.json index b5f6d1852..06a8d2c7d 100644 --- a/policy.json +++ b/policy.json @@ -8,7 +8,7 @@ "apigateway:GET", "cloudwatch:GetMetricStatistics", "cloudfront:ListDistributions", - "cloudfront:Functions", + "cloudfront:ListFunctions", "cloudfront:ListTagsForResource", "cloudwatch:DescribeAlarms", "cloudwatch:ListTagsForResource",