diff --git a/addons/cssresources/README.md b/addons/cssresources/README.md deleted file mode 100644 index fad0c977444b..000000000000 --- a/addons/cssresources/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Storybook Addon Cssresources - -Storybook Addon Cssresources to switch between css resources at runtime for your story [Storybook](https://storybook.js.org). - -[Framework Support](https://github.com/storybookjs/storybook/blob/master/ADDONS_SUPPORT.md) - -![Storybook Addon Cssresources Demo](docs/demo.gif) - -## Installation - -```sh -yarn add -D @storybook/addon-cssresources -``` - -## Configuration - -Then create a file called `main.js` in your storybook config. - -Add following content to it: - -```js -module.exports = { - addons: ['@storybook/addon-cssresources'], -}; -``` - -## Usage - -You need add the all the css resources at compile time using the `withCssResources` decorator. They can be added globally or per story. You can then choose which ones to load from the cssresources addon UI: - -```js -import { withCssResources } from '@storybook/addon-cssresources'; - -export default { - title: 'CssResources', - parameters: { - cssresources: [ - { - id: `bluetheme`, - code: ``, - picked: false, - hideCode: false, // Defaults to false, this enables you to hide the code snippet and only displays the style selector - }, - ], - }, - decorators: [withCssResources], -}; - -export const defaultView = () =>
; -``` diff --git a/addons/cssresources/docs/demo.gif b/addons/cssresources/docs/demo.gif deleted file mode 100644 index 75bc3685edf6..000000000000 Binary files a/addons/cssresources/docs/demo.gif and /dev/null differ diff --git a/addons/cssresources/package.json b/addons/cssresources/package.json deleted file mode 100644 index a75a76d3097e..000000000000 --- a/addons/cssresources/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "name": "@storybook/addon-cssresources", - "version": "6.3.0-alpha.21", - "description": "A storybook addon to switch between css resources at runtime for your story", - "keywords": [ - "addon", - "cssresources", - "react", - "storybook", - "style" - ], - "homepage": "https://storybook.js.org", - "bugs": { - "url": "https://github.com/storybookjs/storybook/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/storybookjs/storybook.git", - "directory": "addons/cssresources" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "license": "MIT", - "author": "nm123github", - "main": "dist/cjs/index.js", - "module": "dist/esm/index.js", - "types": "dist/ts3.9/index.d.ts", - "typesVersions": { - "<3.8": { - "*": [ - "dist/ts3.4/*" - ] - } - }, - "files": [ - "dist/**/*", - "README.md", - "*.js", - "*.d.ts" - ], - "scripts": { - "prepare": "node ../../scripts/prepare.js" - }, - "dependencies": { - "@storybook/addons": "6.3.0-alpha.21", - "@storybook/api": "6.3.0-alpha.21", - "@storybook/components": "6.3.0-alpha.21", - "@storybook/core-events": "6.3.0-alpha.21", - "@storybook/theming": "6.3.0-alpha.21", - "core-js": "^3.8.2", - "global": "^4.4.0", - "regenerator-runtime": "^0.13.7" - }, - "devDependencies": { - "@types/webpack-env": "^1.16.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - }, - "publishConfig": { - "access": "public" - }, - "gitHead": "c3ffd75d5ae104f678f2f0bea2042b017373aa4a", - "storybook": { - "displayName": "CSS Resources", - "unsupportedFrameworks": [ - "react-native" - ] - } -} diff --git a/addons/cssresources/preset.js b/addons/cssresources/preset.js deleted file mode 100644 index a1382ab7c27c..000000000000 --- a/addons/cssresources/preset.js +++ /dev/null @@ -1,5 +0,0 @@ -function managerEntries(entry = [], options) { - return [...entry, require.resolve('./dist/esm/register')]; -} - -module.exports = { managerEntries }; diff --git a/addons/cssresources/register.js b/addons/cssresources/register.js deleted file mode 100644 index 257d32c01f8f..000000000000 --- a/addons/cssresources/register.js +++ /dev/null @@ -1 +0,0 @@ -require('./dist/esm/register.js'); diff --git a/addons/cssresources/src/CssResource.ts b/addons/cssresources/src/CssResource.ts deleted file mode 100644 index ee67b93e2a7c..000000000000 --- a/addons/cssresources/src/CssResource.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface CssResource { - id: string; - code: string; - picked: boolean; - hideCode: boolean; -} diff --git a/addons/cssresources/src/constants.ts b/addons/cssresources/src/constants.ts deleted file mode 100644 index 1a0f36540353..000000000000 --- a/addons/cssresources/src/constants.ts +++ /dev/null @@ -1,8 +0,0 @@ -export const ADDON_ID = 'storybook/cssresources'; -export const PANEL_ID = `${ADDON_ID}/panel`; -export const PARAM_KEY = 'cssresources'; - -export const EVENTS = { - SET: `${ADDON_ID}:set`, - UNSET: `${ADDON_ID}:unset`, -}; diff --git a/addons/cssresources/src/css-resource-panel.test.tsx b/addons/cssresources/src/css-resource-panel.test.tsx deleted file mode 100644 index e189d865118a..000000000000 --- a/addons/cssresources/src/css-resource-panel.test.tsx +++ /dev/null @@ -1,214 +0,0 @@ -import React from 'react'; -import userEvent from '@testing-library/user-event'; -import { render, screen } from '@testing-library/react'; -import { STORY_RENDERED } from '@storybook/core-events'; -import { ThemeProvider, themes, convert } from '@storybook/theming'; -import { API } from '@storybook/api'; -import { EVENTS, PARAM_KEY } from './constants'; -import { CssResourcePanel } from './css-resource-panel'; - -const defaultParameters = [ - { - id: 'fake-css-id-1', - code: 'fake-css-code-1', - picked: true, - }, - { - id: 'fake-css-id-2', - code: 'fake-css-code-2', - picked: false, - }, -]; - -const mockedApi = ({ - emit: jest.fn(), - on: jest.fn(), - off: jest.fn(), - getCurrentParameter: jest.fn(() => defaultParameters), -} as unknown) as API; - -function ThemedCSSResourcePanel({ api }: { api: API }) { - return ( - - - - ); -} - -const renderWithData = (api: Partial = {}) => { - const apiAdd = jest.fn(); - render( - - ); - apiAdd.mock.calls[0][1]('fake-story-id'); - return { - onStoryChange: apiAdd.mock.calls[0][1], - }; -}; - -describe('CSSResourcePanel', () => { - it('should mount', () => { - const { container } = render(); - expect(container).toBeInTheDocument(); - }); - - it('should add STORY_RENDERED listener to the api', () => { - const apiAdd = jest.fn(); - render( - - ); - expect(apiAdd).toHaveBeenCalledWith(STORY_RENDERED, expect.any(Function)); - }); - - it('should remove STORY_RENDERED listener from the api', () => { - const apiRemove = jest.fn(); - const { unmount } = render( - - ); - unmount(); - expect(apiRemove).toHaveBeenCalledWith(STORY_RENDERED, expect.any(Function)); - }); - - it('should populate list with the default items', () => { - const apiAdd = jest.fn(); - render( - - ); - apiAdd.mock.calls[0][1]('fake-story-id'); - expect(screen.getByText(/fake-css-id-1/)).toBeInTheDocument(); - expect(screen.getByText(/fake-css-id-2/)).toBeInTheDocument(); - }); - - it('should pull default items from getCurrentParameter', () => { - const getCurrentParameter = jest.fn(); - const apiAdd = jest.fn(); - render( - - ); - apiAdd.mock.calls[0][1]('fake-story-id'); - expect(getCurrentParameter).toHaveBeenCalledWith(PARAM_KEY); - }); - - // it('should maintain picked attribute for matching ids', () => { - // const getCurrentParameter = jest.fn(() => [ - // { - // ...defaultParameters[0], - // picked: !defaultParameters[0].picked, - // }, - // ]); - // const { onStoryChange } = renderWithData({ - // getCurrentParameter: getCurrentParameter as any, - // }); - // expect( - // screen.getByRole('checkbox', { name: `# ${defaultParameters[0].id}` }) - // ).not.toBeChecked(); - // getCurrentParameter.mockReturnValueOnce([ - // { - // ...defaultParameters[0], - // picked: defaultParameters[0].picked, - // }, - // ]); - // onStoryChange('fake-story-id'); - // expect( - // screen.getByRole('checkbox', { name: `# ${defaultParameters[0].id}` }) - // ).not.toBeChecked(); - // }); - - // it('should update the list with new picked items', () => { - // renderWithData(); - // expect(screen.getByRole('checkbox', { name: `# ${defaultParameters[0].id}` })).toBeChecked(); - // userEvent.click(screen.getByRole('checkbox', { name: `# ${defaultParameters[0].id}` })); - // expect( - // screen.getByRole('checkbox', { name: `# ${defaultParameters[0].id}` }) - // ).not.toBeChecked(); - // }); - - // it('should call emit method with updated list', () => { - // const emit = jest.fn(); - // renderWithData({ emit }); - // userEvent.click(screen.getByRole('checkbox', { name: `# ${defaultParameters[0].id}` })); - // expect(emit).toHaveBeenLastCalledWith(EVENTS.SET, []); - // }); - - it('should not render anything when not active', () => { - const { container } = render(); - expect(container.firstChild).toBeFalsy(); - }); - - // it('should render list items', () => { - // renderWithData(); - - // defaultParameters.forEach((param) => { - // expect(screen.getByText(new RegExp(param.id))).toBeInTheDocument(); - // const checkbox = screen.getByRole('checkbox', { name: `# ${param.id}` }); - // if (param.picked) { - // expect(checkbox).toBeChecked(); - // } else { - // expect(checkbox).not.toBeChecked(); - // } - // }); - // }); - - // it('should render code for items with the `hideCode` flag', () => { - // const getCurrentParameter = jest.fn(() => [ - // { - // id: 'local-fake-id-1', - // code: 'local-fake-code-1', - // picked: true, - // hideCode: false, - // }, - // ]); - - // renderWithData({ - // getCurrentParameter: getCurrentParameter as any, - // }); - - // expect(screen.queryByText('local-fake-code-1')).toBeInTheDocument(); - // }); - - it('should not render code for items /w the `hideCode` flag', () => { - const getCurrentParameter = jest.fn(() => [ - { - id: 'local-fake-id-1', - code: 'local-fake-code-1', - picked: true, - hideCode: true, - }, - ]); - - renderWithData({ - getCurrentParameter: getCurrentParameter as any, - }); - - expect(screen.queryByText('local-fake-code-1')).not.toBeInTheDocument(); - }); -}); diff --git a/addons/cssresources/src/css-resource-panel.tsx b/addons/cssresources/src/css-resource-panel.tsx deleted file mode 100644 index a2780acefe7c..000000000000 --- a/addons/cssresources/src/css-resource-panel.tsx +++ /dev/null @@ -1,140 +0,0 @@ -import React, { Component } from 'react'; -import { SyntaxHighlighter, Placeholder, Spaced, Icons } from '@storybook/components'; -import { STORY_RENDERED } from '@storybook/core-events'; -import { API } from '@storybook/api'; -import { styled } from '@storybook/theming'; - -import { EVENTS, PARAM_KEY } from './constants'; -import { CssResource } from './CssResource'; - -interface Props { - active: boolean; - api: API; -} - -interface State { - currentStoryId: string; - list: CssResource[]; -} - -interface CssResourceLookup { - [key: string]: CssResource; -} - -const maxLimitToUseSyntaxHighlighter = 100000; - -const PlainCode = styled.pre({ - textAlign: 'left', - fontWeight: 'normal', -}); - -const Warning = styled.div({ - display: 'flex', - padding: '10px', - justifyContent: 'center', - alignItems: 'center', - background: '#fff3cd', - fontSize: 12, - '& svg': { - marginRight: 10, - width: 24, - height: 24, - }, -}); - -export class CssResourcePanel extends Component { - constructor(props: Props) { - super(props); - - this.state = { - currentStoryId: '', - list: [], - }; - } - - componentDidMount() { - const { api } = this.props; - api.on(STORY_RENDERED, this.onStoryChange); - } - - componentWillUnmount() { - const { api } = this.props; - api.off(STORY_RENDERED, this.onStoryChange); - } - - onStoryChange = (id: string) => { - const { list: currentList, currentStoryId } = this.state; - const { api } = this.props; - const list = api.getCurrentParameter(PARAM_KEY); - - if (list && currentStoryId !== id) { - const existingIds = currentList.reduce((lookup: CssResourceLookup, res) => { - // eslint-disable-next-line no-param-reassign - lookup[res.id] = res; - return lookup; - }, {}) as CssResourceLookup; - const mergedList = list.map((res) => { - const existingItem = existingIds[res.id]; - return existingItem - ? { - ...res, - picked: existingItem.picked, - } - : res; - }); - const picked = mergedList.filter((res) => res.picked); - this.setState({ list: mergedList, currentStoryId: id }, () => this.emit(picked)); - } - }; - - onChange = (event: any) => { - const { list: oldList } = this.state; - const list = oldList.map((i) => ({ - ...i, - picked: i.id === event.target.id ? event.target.checked : i.picked, - })); - this.setState({ list }, () => this.emit(list.filter((res: any) => res.picked))); - }; - - emit(list: CssResource[]) { - const { api } = this.props; - api.emit(EVENTS.SET, list); - } - - render() { - const { list } = this.state; - const { active } = this.props; - - if (!active) { - return null; - } - - return ( -
- {list && - list.map(({ id, code, picked, hideCode = false }) => ( -
- - {code && !hideCode && code.length < maxLimitToUseSyntaxHighlighter && ( - {code} - )} - {code && !hideCode && code.length >= maxLimitToUseSyntaxHighlighter && ( - - - {code.substring(0, maxLimitToUseSyntaxHighlighter)} ... - - - Rest of the content cannot be displayed - - - - )} -
- ))} -
- ); - } -} diff --git a/addons/cssresources/src/index.ts b/addons/cssresources/src/index.ts deleted file mode 100644 index 98f9c9387d5a..000000000000 --- a/addons/cssresources/src/index.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { document } from 'global'; -import { addons, makeDecorator } from '@storybook/addons'; -import { EVENTS, PARAM_KEY } from './constants'; - -const changeMediaAttribute = (element: HTMLElement, enabled: boolean) => { - const current = element.getAttribute('media'); - if ((enabled && !current) || (!enabled && current === 'max-width: 1px')) { - // don't do anything - } else if (enabled && current === 'max-width: 1px') { - // remove the attribute - element.removeAttribute('media'); - } else if (enabled) { - // add the disable attribute - const value = current.replace(' and max-width: 1px', ''); - element.setAttribute('media', value); - } else { - // modify the existing attribute so it disables - const value = current ? `${current} and max-width: 1px` : 'max-width: 1px'; - element.setAttribute('media', value); - } -}; - -const createElement = (id: string, code: string): HTMLDivElement => { - const element: HTMLDivElement = document.createElement('div'); - element.setAttribute('id', `storybook-addon-resource_${id}`); - element.innerHTML = code; - return element; -}; - -const getElement = (id: string, code: string) => { - const found: Element = document.querySelector(`[id="storybook-addon-resource_${id}"]`); - return { element: found || createElement(id, code), created: !found }; -}; - -const updateElement = (id: string, code: string, value: boolean) => { - const { element, created } = getElement(id, code); - - element.querySelectorAll('link').forEach((child) => changeMediaAttribute(child, value)); - element.querySelectorAll('style').forEach((child) => changeMediaAttribute(child, value)); - - if (created) { - document.body.appendChild(element); - } -}; - -const list: any[] = []; - -const setResources = (resources: { code: string; id: string }[]) => { - const added = resources.filter((i) => !list.find((r) => r.code === i.code)); - const removed = list.filter((i) => !resources.find((r) => r.code === i.code)); - - added.forEach((r) => list.push(r)); - - resources.forEach((r) => { - const { id, code } = r; - updateElement(id, code, true); - }); - removed.forEach((r) => { - const { id, code } = r; - updateElement(id, code, false); - }); -}; - -export const withCssResources = makeDecorator({ - name: 'withCssResources', - parameterName: PARAM_KEY, - skipIfNoParametersOrOptions: true, - - wrapper: (getStory, context, { options, parameters }) => { - const storyOptions = parameters || options; - addons.getChannel().on(EVENTS.SET, setResources); - - if (!Array.isArray(storyOptions) && !Array.isArray(storyOptions.cssresources)) { - throw new Error('The `cssresources` parameter needs to be an Array'); - } - - return getStory(context); - }, -}); - -if (module && module.hot && module.hot.decline) { - module.hot.decline(); -} diff --git a/addons/cssresources/src/register.tsx b/addons/cssresources/src/register.tsx deleted file mode 100644 index e34e1fc64494..000000000000 --- a/addons/cssresources/src/register.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import * as React from 'react'; -import { addons, types } from '@storybook/addons'; - -import { ADDON_ID, PANEL_ID, PARAM_KEY } from './constants'; -import { CssResourcePanel } from './css-resource-panel'; - -addons.register(ADDON_ID, (api) => { - // Need to cast as any as it's not matching Addon type, to investigate - addons.add(PANEL_ID, { - type: types.PANEL, - title: 'CSS resources', - render: ({ active }) => , - paramKey: PARAM_KEY, - }); -}); diff --git a/addons/cssresources/src/typings.d.ts b/addons/cssresources/src/typings.d.ts deleted file mode 100644 index a41bf8a45b79..000000000000 --- a/addons/cssresources/src/typings.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -// TODO: following packages need definition files or a TS migration -declare module 'global'; diff --git a/addons/cssresources/tsconfig.json b/addons/cssresources/tsconfig.json deleted file mode 100644 index b17b463e1da1..000000000000 --- a/addons/cssresources/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "rootDir": "./src", - "types": ["webpack-env", "jest", "@testing-library/jest-dom"] - }, - "include": [ - "src/**/*" - ], - "exclude": [ - "src/**/*.test.*", - "src/**/tests/**/*", - "src/**/__tests__/**/*", - "src/**/*.stories.*", - "src/**/*.mockdata.*", - "src/**/__testfixtures__/**" - ] -} diff --git a/examples/official-storybook/main.ts b/examples/official-storybook/main.ts index 452b071a0518..fc7e22ce16a5 100644 --- a/examples/official-storybook/main.ts +++ b/examples/official-storybook/main.ts @@ -25,7 +25,6 @@ const config: StorybookConfig = { '@storybook/addon-links', '@storybook/addon-events', '@storybook/addon-knobs', - '@storybook/addon-cssresources', '@storybook/addon-a11y', '@storybook/addon-jest', '@storybook/addon-graphql', diff --git a/examples/official-storybook/package.json b/examples/official-storybook/package.json index 5f7418b3cc8f..12b3944dd7cf 100644 --- a/examples/official-storybook/package.json +++ b/examples/official-storybook/package.json @@ -19,7 +19,6 @@ "@storybook/addon-actions": "6.3.0-alpha.21", "@storybook/addon-backgrounds": "6.3.0-alpha.21", "@storybook/addon-controls": "6.3.0-alpha.21", - "@storybook/addon-cssresources": "6.3.0-alpha.21", "@storybook/addon-design-assets": "6.3.0-alpha.21", "@storybook/addon-docs": "6.3.0-alpha.21", "@storybook/addon-events": "6.3.0-alpha.21", diff --git a/examples/official-storybook/preview.js b/examples/official-storybook/preview.js index de8519a6425b..c147185db884 100644 --- a/examples/official-storybook/preview.js +++ b/examples/official-storybook/preview.js @@ -10,7 +10,6 @@ import { styled, useTheme, } from '@storybook/theming'; -import { withCssResources } from '@storybook/addon-cssresources'; import { DocsPage } from '@storybook/addon-docs'; import { Symbols } from '@storybook/components'; @@ -87,7 +86,6 @@ const ThemedSetRoot = () => { }; export const decorators = [ - withCssResources, (StoryFn, { globals: { theme = 'light' } }) => { switch (theme) { case 'side-by-side': { diff --git a/examples/official-storybook/stories/addon-cssresources.stories.js b/examples/official-storybook/stories/addon-cssresources.stories.js deleted file mode 100644 index 92d4ef7af595..000000000000 --- a/examples/official-storybook/stories/addon-cssresources.stories.js +++ /dev/null @@ -1,51 +0,0 @@ -import React from 'react'; - -export default { - title: 'Addons/Cssresources', -}; - -export const PrimaryLargeButton = () => ( - -); -PrimaryLargeButton.storyName = 'Primary Large Button'; - -PrimaryLargeButton.parameters = { - cssresources: [ - { - id: `bootstrap v4.1.3`, - code: ``, - picked: true, - }, - { - id: `bootstrap v3.3.5`, - code: ``, - picked: false, - }, - ], - options: { - selectedPanel: 'storybook/cssresources/panel', - }, -}; - -export const CameraIcon = () => Camera Icon; -CameraIcon.storyName = 'Camera Icon'; - -CameraIcon.parameters = { - cssresources: [ - { - id: `fontawesome`, - code: ``, - picked: true, - }, - { - id: `whitetheme`, - code: ``, - picked: false, - }, - ], - options: { - selectedPanel: 'storybook/cssresources/panel', - }, -}; diff --git a/lib/cli/src/versions.json b/lib/cli/src/versions.json index 98eaf62df8c2..10747880ebb9 100644 --- a/lib/cli/src/versions.json +++ b/lib/cli/src/versions.json @@ -3,7 +3,6 @@ "@storybook/addon-actions": "6.3.0-alpha.21", "@storybook/addon-backgrounds": "6.3.0-alpha.21", "@storybook/addon-controls": "6.3.0-alpha.21", - "@storybook/addon-cssresources": "6.3.0-alpha.21", "@storybook/addon-design-assets": "6.3.0-alpha.21", "@storybook/addon-docs": "6.3.0-alpha.21", "@storybook/addon-essentials": "6.3.0-alpha.21", diff --git a/nx.json b/nx.json index a75ad528a53f..aad07e91eb96 100644 --- a/nx.json +++ b/nx.json @@ -31,9 +31,6 @@ "@storybook/addon-controls": { "implicitDependencies": [] }, - "@storybook/addon-cssresources": { - "implicitDependencies": [] - }, "@storybook/addon-design-assets": { "implicitDependencies": [] }, diff --git a/package.json b/package.json index 24f5ba0894a4..a9e64596e77e 100644 --- a/package.json +++ b/package.json @@ -124,7 +124,6 @@ "@storybook/addon-actions": "workspace:*", "@storybook/addon-backgrounds": "workspace:*", "@storybook/addon-controls": "workspace:*", - "@storybook/addon-cssresources": "workspace:*", "@storybook/addon-design-assets": "workspace:*", "@storybook/addon-docs": "workspace:*", "@storybook/addon-essentials": "workspace:*", diff --git a/workspace.json b/workspace.json index 369d9905af4c..4c9f6f443aca 100644 --- a/workspace.json +++ b/workspace.json @@ -17,10 +17,6 @@ "root": "addons/controls", "type": "library" }, - "@storybook/addon-cssresources": { - "root": "addons/cssresources", - "type": "library" - }, "@storybook/addon-design-assets": { "root": "addons/design-assets", "type": "library" diff --git a/yarn.lock b/yarn.lock index 9797eafd6d42..b0c8c2374938 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5569,30 +5569,6 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-cssresources@6.3.0-alpha.21, @storybook/addon-cssresources@workspace:*, @storybook/addon-cssresources@workspace:addons/cssresources": - version: 0.0.0-use.local - resolution: "@storybook/addon-cssresources@workspace:addons/cssresources" - dependencies: - "@storybook/addons": 6.3.0-alpha.21 - "@storybook/api": 6.3.0-alpha.21 - "@storybook/components": 6.3.0-alpha.21 - "@storybook/core-events": 6.3.0-alpha.21 - "@storybook/theming": 6.3.0-alpha.21 - "@types/webpack-env": ^1.16.0 - core-js: ^3.8.2 - global: ^4.4.0 - regenerator-runtime: ^0.13.7 - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - languageName: unknown - linkType: soft - "@storybook/addon-design-assets@6.3.0-alpha.21, @storybook/addon-design-assets@workspace:*, @storybook/addon-design-assets@workspace:addons/design-assets": version: 0.0.0-use.local resolution: "@storybook/addon-design-assets@workspace:addons/design-assets" @@ -7158,7 +7134,6 @@ __metadata: "@storybook/addon-actions": "workspace:*" "@storybook/addon-backgrounds": "workspace:*" "@storybook/addon-controls": "workspace:*" - "@storybook/addon-cssresources": "workspace:*" "@storybook/addon-design-assets": "workspace:*" "@storybook/addon-docs": "workspace:*" "@storybook/addon-essentials": "workspace:*" @@ -31367,7 +31342,6 @@ fsevents@^1.2.7: "@storybook/addon-actions": 6.3.0-alpha.21 "@storybook/addon-backgrounds": 6.3.0-alpha.21 "@storybook/addon-controls": 6.3.0-alpha.21 - "@storybook/addon-cssresources": 6.3.0-alpha.21 "@storybook/addon-design-assets": 6.3.0-alpha.21 "@storybook/addon-docs": 6.3.0-alpha.21 "@storybook/addon-events": 6.3.0-alpha.21