diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index a7b9ac366..ea3a2488c 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -14,3 +14,32 @@ All work on VTEX Styleguide happens directly on GitHub. Both core team members a ### Branch Organization According to our [release schedule](#release-schedule), we maintain two branches: `master` and `features`. Bug fixes should have `master` as it base branch, while new features should be merged into `features`. + +### Storybook Organization + +#### Story file location + +Our stories are located alongside with the components they document and the Playground are located in `react/playground`. + +Example: + +``` +• +└── react + └── components + └── Button + ├── index.tsx + └── button.stories.tsx + +``` + +#### Conventions + +1. The `Default` stories must allow to edit all the component props through Knobs. +2. The name of the stories that shows different states or variations should start with `with`. Examples: `withTitle`, `withCustomColor`. +3. Don't use external images in the stories, prefer to add images in the `.storybook/public/` folder. +4. Component stories must be in a single file with the name `{componentName}.stories.tsx`. Examples: `button.stories.tsx`, `modal.stories.tsx`. +5. Try not to add custom CSS in the stories. + + +Help us add the missing component stories through this [issue](https://github.com/vtex/styleguide/issues/1157). \ No newline at end of file diff --git a/.storybook/config.js b/.storybook/config.js deleted file mode 100644 index 0d3047d68..000000000 --- a/.storybook/config.js +++ /dev/null @@ -1 +0,0 @@ -import 'vtex-tachyons' \ No newline at end of file diff --git a/.storybook/main.js b/.storybook/main.js index d05dd0c7f..59f584515 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -3,7 +3,13 @@ const path = require('path'); const custom = require('../config/webpack.config.js') module.exports = { - stories: ['../react/components/**/*.stories.tsx'], + stories: ['../react/playground/stories.tsx', '../react/components/**/*.stories.tsx'], + addons: [ + '@storybook/addon-viewport', + '@storybook/addon-knobs/register', + '@storybook/addon-actions/register', + '@storybook/addon-a11y/register' + ], webpackFinal: (config) => { config.resolve.extensions.push('.ts', '.tsx') return { ...config, module: { ...config.module, rules: custom.module.rules } } diff --git a/.storybook/manager.js b/.storybook/manager.js new file mode 100644 index 000000000..ebab14a58 --- /dev/null +++ b/.storybook/manager.js @@ -0,0 +1,25 @@ +import {addons} from '@storybook/addons'; +import {create} from '@storybook/theming'; + +addons.setConfig({ + panelPosition: 'bottom', + + theme: create({ + base: 'light', + + // UI + appBorderRadius: 4, + appBg: '#FFFFFF', + contentBg: '#FFFFFF', + textColor: '#3f3f40', + + // Typography + fontBase: '"Fabriga", sans-serif', + fontCode: 'monospace', + + + brandTitle: 'VTEX Styleguide', + brandUrl: '/', + brandImage: null, + }), +}); diff --git a/.storybook/preview.js b/.storybook/preview.js new file mode 100644 index 000000000..4320b3d5a --- /dev/null +++ b/.storybook/preview.js @@ -0,0 +1,13 @@ +import React from 'react' +import { addParameters, addDecorator } from '@storybook/react' +import '@storybook/addon-console' +import 'vtex-tachyons' + +addParameters({ + options: { + showNav: true, + showPanel: true, // show the code panel by default + }, +}) + +addDecorator(story => (
{story()}
)) // Add padding in the canvas \ No newline at end of file diff --git a/README.md b/README.md index 8ff60b140..3602ee496 100755 --- a/README.md +++ b/README.md @@ -28,6 +28,16 @@ yarn install yarn styleguide ``` +### Storybook + +We use [Storybook](https://storybook.js.org/) environment to help us build and test our components in real time. You can edit the Playground file and add the components you are working on, after this run the command below to see your changes in http://localhost:6006/ : + +```shell +yarn storybook +``` + +If you want to change or add stories, take a look at this [guide](https://github.com/vtex/styleguide/blob/master/.github/CONTRIBUTING.md#storybook-organization) before. + ## Developing using `npm link` Run this in this repo: diff --git a/package.json b/package.json index 8cf7b59dc..9b99954b1 100644 --- a/package.json +++ b/package.json @@ -39,8 +39,12 @@ "@babel/preset-env": "^7.5.5", "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.3.3", + "@storybook/addon-a11y": "^5.3.18", "@storybook/addon-actions": "^5.3.18", + "@storybook/addon-console": "^1.2.1", + "@storybook/addon-knobs": "^5.3.18", "@storybook/addon-links": "^5.3.18", + "@storybook/addon-viewport": "^5.3.18", "@storybook/addons": "^5.3.18", "@storybook/react": "^5.3.18", "@testing-library/jest-dom": "^5.1.1", diff --git a/react/components/Button/button.stories.tsx b/react/components/Button/button.stories.tsx index b969c5cb0..b9b0b6056 100644 --- a/react/components/Button/button.stories.tsx +++ b/react/components/Button/button.stories.tsx @@ -1,14 +1,61 @@ import React from 'react' +import { withA11y } from '@storybook/addon-a11y' +import { withKnobs, text, boolean, select } from "@storybook/addon-knobs" +import { action } from '@storybook/addon-actions' import Button from '.' export default { - title: 'Button', + title: 'Components|Button', component: Button, + decorators: [withA11y, withKnobs] } -export const withText = () => ( - +) + +export const withLoadingState = () => ( + +) + +export const withDiffentVariations = () => ( + <> + {variations.map(variation => ( + <> + +
+
+ + ))} + +) + +export const withOnMouseEvents = () => ( + ) diff --git a/react/components/Tooltip/tooltip.stories.tsx b/react/components/Tooltip/tooltip.stories.tsx index 3402679a8..36dec62d9 100644 --- a/react/components/Tooltip/tooltip.stories.tsx +++ b/react/components/Tooltip/tooltip.stories.tsx @@ -1,14 +1,28 @@ import React from 'react' +import { withKnobs, text, boolean, select } from "@storybook/addon-knobs" import Tooltip from '.' +import Button from '../Button' export default { - title: 'Tooltip', + title: 'Components|Tooltip', component: Tooltip, + decorators: [withKnobs] } -export const tooltipTop = () => ( - - oi +export const Default = () => ( + + + +) + +export const AlwaysVisible = () => ( + + ) diff --git a/react/playground/All.tsx b/react/playground/All.tsx new file mode 100644 index 000000000..67c41aadc --- /dev/null +++ b/react/playground/All.tsx @@ -0,0 +1,7 @@ +import React from 'react' +/* + This story should contain all our components. +*/ +const All = () => (

Under construction

) + +export default All \ No newline at end of file diff --git a/react/playground/ExamplePage.tsx b/react/playground/ExamplePage.tsx new file mode 100644 index 000000000..22b5ad5b7 --- /dev/null +++ b/react/playground/ExamplePage.tsx @@ -0,0 +1,8 @@ +import React from 'react' + +/* + This story should have an example page using our components. +*/ +const ExamplePage = () => (

Under construction

) + +export default ExamplePage \ No newline at end of file diff --git a/react/playground/Playground.tsx b/react/playground/Playground.tsx new file mode 100644 index 000000000..ba5eb0371 --- /dev/null +++ b/react/playground/Playground.tsx @@ -0,0 +1,17 @@ +import React from 'react' +import PageHeader from '../PageHeader' +import PageBlock from '../PageBlock' +import Layout from '../Layout' + +const Playground = () => ( + } + > + + {/* Add your code here, don't forget to delete after */} + + +) + +export default Playground \ No newline at end of file diff --git a/react/playground/stories.tsx b/react/playground/stories.tsx new file mode 100644 index 000000000..9ceaa62b7 --- /dev/null +++ b/react/playground/stories.tsx @@ -0,0 +1,9 @@ +import Playground from './Playground' +import ExamplePage from './ExamplePage' +import All from './All' + +export default { + title: 'Playground|Playground' +} + +export { Playground, ExamplePage, All } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index caf39874a..c27de6a42 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1224,7 +1224,7 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.9.2": version "7.9.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== @@ -1320,7 +1320,7 @@ find-root "^1.1.0" source-map "^0.7.2" -"@emotion/cache@^10.0.27": +"@emotion/cache@^10.0.27", "@emotion/cache@^10.0.9": version "10.0.29" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" integrity sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== @@ -1330,7 +1330,7 @@ "@emotion/utils" "0.11.3" "@emotion/weak-memoize" "0.2.5" -"@emotion/core@^10.0.20": +"@emotion/core@^10.0.20", "@emotion/core@^10.0.9": version "10.0.28" resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.28.tgz#bb65af7262a234593a9e952c041d0f1c9b9bef3d" integrity sha512-pH8UueKYO5jgg0Iq+AmCLxBsvuGtvlmiDCOuv8fGNYn3cowFpLN98L8zO56U0H1PjDIyAlXymgL3Wu7u7v6hbA== @@ -1342,7 +1342,7 @@ "@emotion/sheet" "0.9.4" "@emotion/utils" "0.11.3" -"@emotion/css@^10.0.27": +"@emotion/css@^10.0.27", "@emotion/css@^10.0.9": version "10.0.27" resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== @@ -1716,6 +1716,28 @@ dependencies: type-detect "4.0.8" +"@storybook/addon-a11y@^5.3.18": + version "5.3.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-a11y/-/addon-a11y-5.3.18.tgz#3f35b2f03a0f292c415d659b5f6f8c00a029c9f7" + integrity sha512-DySJg3Q+GqLhVdQNsGwdO7V0cewSzhWdK3LDkZxF0eTvP8rTWG6+SyNFPClYO/MR/i1M6zKMMOoJoT++fu866A== + dependencies: + "@storybook/addons" "5.3.18" + "@storybook/api" "5.3.18" + "@storybook/client-logger" "5.3.18" + "@storybook/components" "5.3.18" + "@storybook/core-events" "5.3.18" + "@storybook/theming" "5.3.18" + axe-core "^3.3.2" + core-js "^3.0.1" + global "^4.3.2" + memoizerific "^1.11.3" + react "^16.8.3" + react-redux "^7.0.2" + react-sizeme "^2.5.2" + redux "^4.0.1" + ts-dedent "^1.1.0" + util-deprecate "^1.0.2" + "@storybook/addon-actions@^5.3.18": version "5.3.18" resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-5.3.18.tgz#e3e3b1475cebc9bdd2d563822fba9ac662b2601a" @@ -1736,6 +1758,37 @@ react-inspector "^4.0.0" uuid "^3.3.2" +"@storybook/addon-console@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@storybook/addon-console/-/addon-console-1.2.1.tgz#f338401661b4636118b13839848061e996d4e104" + integrity sha512-2iDbDTipWonvRpIqLLntfhCGvawFFvoG1xyErpyL7K/HRdQ1zzIvR1Qm83S7TK8Vg+RzZWm4wcDbxx7WOsFCNg== + dependencies: + global "^4.3.2" + +"@storybook/addon-knobs@^5.3.18": + version "5.3.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-5.3.18.tgz#60365bb179699cd8dc91df8be947469266012847" + integrity sha512-X0WxGKoso3j5mS4c4enM8BvCjbO6Wwfxc++swQTqtANpBZ8k+w0piiEF1fiJf+ssgEAWe5brgIqnQ9kiBGLqKA== + dependencies: + "@storybook/addons" "5.3.18" + "@storybook/api" "5.3.18" + "@storybook/client-api" "5.3.18" + "@storybook/components" "5.3.18" + "@storybook/core-events" "5.3.18" + "@storybook/theming" "5.3.18" + "@types/react-color" "^3.0.1" + copy-to-clipboard "^3.0.8" + core-js "^3.0.1" + escape-html "^1.0.3" + fast-deep-equal "^2.0.1" + global "^4.3.2" + lodash "^4.17.15" + prop-types "^15.7.2" + qs "^6.6.0" + react-color "^2.17.0" + react-lifecycles-compat "^3.0.4" + react-select "^3.0.8" + "@storybook/addon-links@^5.3.18": version "5.3.18" resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-5.3.18.tgz#6b4aec83e158c000221bfe1f43e4a473f0727193" @@ -1752,6 +1805,23 @@ qs "^6.6.0" ts-dedent "^1.1.0" +"@storybook/addon-viewport@^5.3.18": + version "5.3.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-5.3.18.tgz#9cfeb93e473845436e0c7fb74d590305ff7ef48e" + integrity sha512-9ofmbhYm4fU28u9Gasywwul8OLVhKlu1aiLnLfYUd+ZE2r9WuNxGW93m3iIgtccynpANn9phFcgEmWGKfY3vIw== + dependencies: + "@storybook/addons" "5.3.18" + "@storybook/api" "5.3.18" + "@storybook/client-logger" "5.3.18" + "@storybook/components" "5.3.18" + "@storybook/core-events" "5.3.18" + "@storybook/theming" "5.3.18" + core-js "^3.0.1" + global "^4.3.2" + memoizerific "^1.11.3" + prop-types "^15.7.2" + util-deprecate "^1.0.2" + "@storybook/addons@5.3.18", "@storybook/addons@^5.3.18": version "5.3.18" resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-5.3.18.tgz#5cbba6407ef7a802041c5ee831473bc3bed61f64" @@ -2380,6 +2450,13 @@ "@types/history" "*" "@types/react" "*" +"@types/react-color@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/react-color/-/react-color-3.0.1.tgz#5433e2f503ea0e0831cbc6fd0c20f8157d93add0" + integrity sha512-J6mYm43Sid9y+OjZ7NDfJ2VVkeeuTPNVImNFITgQNXodHteKfl/t/5pAR5Z9buodZ2tCctsZjgiMlQOpfntakw== + dependencies: + "@types/react" "*" + "@types/react-dom@*": version "16.9.5" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.5.tgz#5de610b04a35d07ffd8f44edad93a71032d9aaa7" @@ -3414,6 +3491,11 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== +axe-core@^3.3.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.3.tgz#5b7c0ee7c5197d546bd3a07c3ef701896f5773e9" + integrity sha512-HZpLE7xu05+8AbpqXITGdxp1Xwk8ysAXrg7MiKRY27py3DAyEJpoJQo1727pWF3F+O79V3r+cTWhOzfB49P89w== + axobject-query@^2.0.2: version "2.1.2" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.2.tgz#2bdffc0371e643e5f03ba99065d5179b9ca79799" @@ -6020,6 +6102,14 @@ dom-helpers@^5.0.0: "@babel/runtime" "^7.6.3" csstype "^2.6.7" +dom-helpers@^5.0.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.1.4.tgz#4609680ab5c79a45f2531441f1949b79d6587f4b" + integrity sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^2.6.7" + dom-serializer@0: version "0.2.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" @@ -6346,7 +6436,7 @@ es6-shim@^0.35.5: resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.5.tgz#46f59dc0a84a1c5029e8ff1166ca0a902077a9ab" integrity sha512-E9kK/bjtCQRpN1K28Xh4BlmP8egvZBGJJ+9GtnzOwt7mdqtrjHFuVGr7QJfdjBIKqrlU5duPf3pCBoDrkjVYFg== -escape-html@~1.0.3: +escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= @@ -11614,7 +11704,7 @@ react-icons@^3.7.0: dependencies: camelcase "^5.0.0" -react-input-autosize@^2.2.1: +react-input-autosize@^2.2.1, react-input-autosize@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.2.2.tgz#fcaa7020568ec206bc04be36f4eb68e647c4d8c2" integrity sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw== @@ -11710,6 +11800,17 @@ react-popper@^1.3.2, react-popper@^1.3.4, react-popper@^1.3.7: typed-styles "^0.0.7" warning "^4.0.2" +react-redux@^7.0.2: + version "7.2.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.0.tgz#f970f62192b3981642fec46fd0db18a074fe879d" + integrity sha512-EvCAZYGfOLqwV7gh849xy9/pt55rJXPwmYvI4lilPM5rUT/1NxuuN59ipdBksRVSvz0KInbPnp4IfoXJXCqiDA== + dependencies: + "@babel/runtime" "^7.5.5" + hoist-non-react-statics "^3.3.0" + loose-envify "^1.4.0" + prop-types "^15.7.2" + react-is "^16.9.0" + react-responsive-modal@^3.1.0: version "3.6.0" resolved "https://registry.yarnpkg.com/react-responsive-modal/-/react-responsive-modal-3.6.0.tgz#fb983977f165742a6382ab28ba7442194ef37b39" @@ -11736,12 +11837,26 @@ react-select@^2.1.2: react-input-autosize "^2.2.1" react-transition-group "^2.2.1" +react-select@^3.0.8: + version "3.1.0" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-3.1.0.tgz#ab098720b2e9fe275047c993f0d0caf5ded17c27" + integrity sha512-wBFVblBH1iuCBprtpyGtd1dGMadsG36W5/t2Aj8OE6WbByDg5jIFyT7X5gT+l0qmT5TqWhxX+VsKJvCEl2uL9g== + dependencies: + "@babel/runtime" "^7.4.4" + "@emotion/cache" "^10.0.9" + "@emotion/core" "^10.0.9" + "@emotion/css" "^10.0.9" + memoize-one "^5.0.0" + prop-types "^15.6.0" + react-input-autosize "^2.2.2" + react-transition-group "^4.3.0" + react-simple-code-editor@^0.9.7: version "0.9.15" resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.9.15.tgz#59e3583832e9e98992d3674b2d7673b4cd1c5709" integrity sha512-M8iKgjBTBZK92tZYgOEfMuR7c3zZ0q0v3QYllSxIPx3SU+w003VofH50txXQSBTu92pSOm2tidON1HbQ1l8BDA== -react-sizeme@^2.6.7: +react-sizeme@^2.5.2, react-sizeme@^2.6.7: version "2.6.12" resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.6.12.tgz#ed207be5476f4a85bf364e92042520499455453e" integrity sha512-tL4sCgfmvapYRZ1FO2VmBmjPVzzqgHA7kI8lSJ6JS6L78jXFNRdOZFpXyK6P1NBZvKPPCZxReNgzZNUajAerZw== @@ -11866,6 +11981,16 @@ react-transition-group@^2.2.1, react-transition-group@^2.4.0: prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" +react-transition-group@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.3.0.tgz#fea832e386cf8796c58b61874a3319704f5ce683" + integrity sha512-1qRV1ZuVSdxPlPf4O8t7inxUGpdyO5zG9IoNfJxSO0ImU2A1YWkEQvFPuIPZmMLkg5hYs7vv5mMOyfgSkvAwvw== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react-virtualized@^9.19.1: version "9.21.2" resolved "https://registry.yarnpkg.com/react-virtualized/-/react-virtualized-9.21.2.tgz#02e6df65c1e020c8dbf574ec4ce971652afca84e" @@ -12029,6 +12154,14 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +redux@^4.0.1: + version "4.0.5" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" + integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + reflect.ownkeys@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" @@ -13412,7 +13545,7 @@ svgo@^1.2.2: unquote "~1.1.1" util.promisify "~1.0.0" -symbol-observable@^1.1.0: +symbol-observable@^1.1.0, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==