From fb3550893df00ad1e9e56ea0ee966947060fc496 Mon Sep 17 00:00:00 2001 From: winches <329487092@qq.com> Date: Sat, 2 Mar 2024 23:00:00 +0800 Subject: [PATCH 01/70] Fix search result color easier to read --- code/ui/manager/src/components/sidebar/SearchResults.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/ui/manager/src/components/sidebar/SearchResults.tsx b/code/ui/manager/src/components/sidebar/SearchResults.tsx index bfbdde53ce34..c8b0e185edcd 100644 --- a/code/ui/manager/src/components/sidebar/SearchResults.tsx +++ b/code/ui/manager/src/components/sidebar/SearchResults.tsx @@ -128,7 +128,6 @@ const Title = styled.div(({ theme }) => ({ justifyContent: 'start', gridAutoColumns: 'auto', gridAutoFlow: 'column', - color: theme.textMutedColor, '& > span': { display: 'block', @@ -143,7 +142,6 @@ const Path = styled.div(({ theme }) => ({ justifyContent: 'start', gridAutoColumns: 'auto', gridAutoFlow: 'column', - color: theme.textMutedColor, fontSize: `${theme.typography.size.s1 - 1}px`, '& > span': { From 9fdc7a23a91aa0f9cbc1e502f5b30751a291583e Mon Sep 17 00:00:00 2001 From: jonniebigodes Date: Tue, 5 Mar 2024 12:12:20 +0000 Subject: [PATCH 02/70] Docs: Snapshot testing updates --- ...napshot-tests-portable-stories.jest.js.mdx | 69 ++++++++ ...napshot-tests-portable-stories.jest.ts.mdx | 82 +++++++++ ...pshot-tests-portable-stories.vitest.js.mdx | 64 +++++++ ...pshot-tests-portable-stories.vitest.ts.mdx | 74 ++++++++ ...napshot-tests-portable-stories.jest.js.mdx | 64 +++++++ ...napshot-tests-portable-stories.jest.ts.mdx | 72 ++++++++ ...pshot-tests-portable-stories.vitest.js.mdx | 62 +++++++ ...pshot-tests-portable-stories.vitest.ts.mdx | 72 ++++++++ ...-snapshot-resolver-custom-directory.js.mdx | 19 ++ ...snapshot-test-portable-stories.jest.js.mdx | 14 ++ ...apshot-test-portable-stories.vitest.js.mdx | 18 ++ ...-testing-addon-optional-config.vite.js.mdx | 20 +++ ...-testing-addon-optional-config.vite.ts.mdx | 21 +++ ...tton-snapshot-test-portable-stories.js.mdx | 18 ++ docs/toc.js | 4 +- docs/writing-tests/snapshot-testing.md | 165 +++++++++++++----- docs/writing-tests/storyshots-fail.png | Bin 81300 -> 0 bytes docs/writing-tests/storyshots-pass.png | Bin 52729 -> 0 bytes 18 files changed, 792 insertions(+), 46 deletions(-) create mode 100644 docs/snippets/common/individual-snapshot-tests-portable-stories.jest.js.mdx create mode 100644 docs/snippets/common/individual-snapshot-tests-portable-stories.jest.ts.mdx create mode 100644 docs/snippets/common/individual-snapshot-tests-portable-stories.vitest.js.mdx create mode 100644 docs/snippets/common/individual-snapshot-tests-portable-stories.vitest.ts.mdx create mode 100644 docs/snippets/common/snapshot-tests-portable-stories.jest.js.mdx create mode 100644 docs/snippets/common/snapshot-tests-portable-stories.jest.ts.mdx create mode 100644 docs/snippets/common/snapshot-tests-portable-stories.vitest.js.mdx create mode 100644 docs/snippets/common/snapshot-tests-portable-stories.vitest.ts.mdx create mode 100644 docs/snippets/common/test-runner-snapshot-resolver-custom-directory.js.mdx create mode 100644 docs/snippets/react/button-snapshot-test-portable-stories.jest.js.mdx create mode 100644 docs/snippets/react/button-snapshot-test-portable-stories.vitest.js.mdx create mode 100644 docs/snippets/react/storybook-testing-addon-optional-config.vite.js.mdx create mode 100644 docs/snippets/react/storybook-testing-addon-optional-config.vite.ts.mdx create mode 100644 docs/snippets/vue/button-snapshot-test-portable-stories.js.mdx delete mode 100644 docs/writing-tests/storyshots-fail.png delete mode 100644 docs/writing-tests/storyshots-pass.png diff --git a/docs/snippets/common/individual-snapshot-tests-portable-stories.jest.js.mdx b/docs/snippets/common/individual-snapshot-tests-portable-stories.jest.js.mdx new file mode 100644 index 000000000000..e9523fa3b322 --- /dev/null +++ b/docs/snippets/common/individual-snapshot-tests-portable-stories.jest.js.mdx @@ -0,0 +1,69 @@ +```js +// storybook.test.js +import path from 'path'; +import * as glob from 'glob'; + +//👇 Augment expect with jest-specific-snapshot +import 'jest-specific-snapshot'; + +import { describe, test, expect } from '@jest/globals'; + +// Replace your-testing-library with one of the supported testing libraries (e.g., react, vue) +import { render } from '@testing-library/your-testing-library'; + +// Adjust the import based on the supported framework or Storybook's testing libraries (e.g., react, vue3) +import { composeStories } from '@storybook/your-framework'; + +const compose = (entry) => { + try { + return composeStories(entry); + } catch (e) { + throw new Error( + `There was an issue composing stories for the module: ${JSON.stringify(entry)}, ${e}`, + ); + } +}; + +function getAllStoryFiles() { + // Place the glob you want to match your stories files + const storyFiles = glob.sync( + path.join(__dirname, 'stories/**/*.{stories,story}.{js,jsx,mjs,ts,tsx}'), + ); + + return storyFiles.map((filePath) => { + const storyFile = require(filePath); + const storyDir = path.dirname(filePath); + const componentName = path.basename(filePath).replace(/\.(stories|story)\.[^/.]+$/, ''); + + return { filePath, storyFile, storyDir, componentName }; + }); +} + +describe('Stories Snapshots', () => { + getAllStoryFiles().forEach(({ storyFile, componentName }) => { + const meta = storyFile.default; + const title = meta.title || componentName; + + describe(title, () => { + const stories = Object.entries(compose(storyFile)).map(([name, story]) => ({ name, story })); + + if (stories.length <= 0) { + throw new Error( + `No stories found for this module: ${title}. Make sure there is at least one valid story for this module.`, + ); + } + + stories.forEach(({ name, story }) => { + test(name, async () => { + const mounted = render(story()); + // Ensures a consistent snapshot by waiting for the component to render by adding a delay of 1 ms before taking the snapshot. + await new Promise((resolve) => setTimeout(resolve, 1)); + // Defines the custom snapshot path location and file name + const customSnaphotPath = `./__snapshots__/${componentName}.test.js.snap`; + expect(mounted.container).toMatchSpecificSnapshot(customSnaphotPath); + }); + }); + }); + }); +}); +``` diff --git a/docs/snippets/common/individual-snapshot-tests-portable-stories.jest.ts.mdx b/docs/snippets/common/individual-snapshot-tests-portable-stories.jest.ts.mdx new file mode 100644 index 000000000000..e245ec4c1ee9 --- /dev/null +++ b/docs/snippets/common/individual-snapshot-tests-portable-stories.jest.ts.mdx @@ -0,0 +1,82 @@ +```ts +// storybook.test.ts +// Replace your-framework with one of the supported Storybook frameworks (react, vue3) +import type { Meta, StoryFn } from '@storybook/your-framework'; + +import path from "path"; +import * as glob from "glob"; + +//👇 Augment expect with jest-specific-snapshot +import "jest-specific-snapshot"; + +import { describe, test, expect } from "@jest/globals"; + +// Replace your-testing-library with one of the supported testing libraries (e.g., react, vue) +import { render } from '@testing-library/your-testing-library'; + +// Adjust the import based on the supported framework or Storybook's testing libraries (e.g., react, vue3) +import { composeStories } from '@storybook/your-framework'; + +type StoryFile = { + default: Meta; + [name: string]: StoryFn | Meta; +}; + +const compose = ( + entry: StoryFile +): ReturnType> => { + try { + return composeStories(entry); + } catch (e) { + throw new Error( + `There was an issue composing stories for the module: ${JSON.stringify(entry)}, ${e}` + ); + } +}; + +function getAllStoryFiles() { + // Place the glob you want to match your stories files + const storyFiles = glob.sync( + path.join(__dirname, 'stories/**/*.{stories,story}.{js,jsx,mjs,ts,tsx}'), + ); + + return storyFiles.map((filePath) => { + const storyFile = require(filePath); + const storyDir = path.dirname(filePath); + const componentName = path + .basename(filePath) + .replace(/\.(stories|story)\.[^/.]+$/, ""); + + return { filePath, storyFile, storyDir, componentName }; + }); +} + +describe("Stories Snapshots", () => { + getAllStoryFiles().forEach(({ storyFile, componentName }) => { + const meta = storyFile.default; + const title = meta.title || componentName; + + describe(title, () => { + const stories = Object.entries(compose(storyFile)).map( + ([name, story]) => ({ name, story }) + ); + + if (stories.length <= 0) { + throw new Error( + `No stories found for this module: ${title}. Make sure there is at least one valid story for this module.` + ); + } + + stories.forEach(({ name, story }) => { + test(name, async () => { + const mounted = render(story()); + // Ensures a consistent snapshot by waiting for the component to render by adding a delay of 1 ms before taking the snapshot. + await new Promise((resolve) => setTimeout(resolve, 1)); + // Defines the custom snapshot path location and file name + const customSnaphotPath = `./__snapshots__/${componentName}.test.ts.snap`; + expect(mounted.container).toMatchSpecificSnapshot(customSnaphotPath); + }); + }); + }); +}); +``` diff --git a/docs/snippets/common/individual-snapshot-tests-portable-stories.vitest.js.mdx b/docs/snippets/common/individual-snapshot-tests-portable-stories.vitest.js.mdx new file mode 100644 index 000000000000..111149d958bb --- /dev/null +++ b/docs/snippets/common/individual-snapshot-tests-portable-stories.vitest.js.mdx @@ -0,0 +1,64 @@ +```js +// storybook.test.js +// @vitest-environment jsdom + +import path from 'path'; +import { describe, expect, test } from 'vitest'; + +// Replace your-testing-library with one of the supported testing libraries (e.g., react, vue) +import { render } from '@testing-library/your-testing-library'; + +// Adjust the import based on the supported framework or Storybook's testing libraries (e.g., react, vue3) +import { composeStories } from '@storybook/your-framework'; + +const compose = (entry) => { + try { + return composeStories(entry); + } catch (error) { + throw new Error( + `There was an issue composing stories for the module: ${JSON.stringify(entry)}, ${error}`, + ); + } +}; +function getAllStoryFiles() { + // Place the glob you want to match your story files + const storyFiles = Object.entries( + import.meta.glob('./stories/**/*.(stories|story).@(js|jsx|mjs|ts|tsx)', { + eager: true, + }), + ); + + return storyFiles.map(([filePath, storyFile]) => { + const storyDir = path.dirname(filePath); + const componentName = path.basename(filePath).replace(/\.(stories|story)\.[^/.]+$/, ''); + return { filePath, storyFile, componentName, storyDir }; + }); +} +describe('Stories Snapshots', () => { + getAllStoryFiles().forEach(({ storyFile, componentName }) => { + const meta = storyFile.default; + const title = meta.title || componentName; + + describe(title, () => { + const stories = Object.entries(compose(storyFile)).map(([name, story]) => ({ name, story })); + + if (stories.length <= 0) { + throw new Error( + `No stories found for this module: ${title}. Make sure there is at least one valid story for this module.`, + ); + } + + stories.forEach(({ name, story }) => { + test(name, async () => { + const mounted = render(story()); + // Ensures a consistent snapshot by waiting for the component to render by adding a delay of 1 ms before taking the snapshot. + await new Promise((resolve) => setTimeout(resolve, 1)); + // Defines the custom snapshot path location and file name + const customSnaphotPath = `./__snapshots__/${componentName}.spec.js.snap`; + expect(mounted.container).toMatchFileSnapshot(customSnaphotPath); + }); + }); + }); + }); +}); +``` diff --git a/docs/snippets/common/individual-snapshot-tests-portable-stories.vitest.ts.mdx b/docs/snippets/common/individual-snapshot-tests-portable-stories.vitest.ts.mdx new file mode 100644 index 000000000000..5c3f6097dae8 --- /dev/null +++ b/docs/snippets/common/individual-snapshot-tests-portable-stories.vitest.ts.mdx @@ -0,0 +1,74 @@ +```ts +// storybook.test.ts +// @vitest-environment jsdom + +// Replace your-framework with one of the supported Storybook frameworks (react, vue3) +import type { Meta, StoryFn } from '@storybook/your-framework'; + +import path from 'path'; +import { describe, expect, test } from 'vitest'; + +// Replace your-testing-library with one of the supported testing libraries (e.g., react, vue) +import { render } from '@testing-library/your-testing-library'; + +// Adjust the import based on the supported framework or Storybook's testing libraries (e.g., react, vue3) +import { composeStories } from '@storybook/your-framework'; + +type StoryFile = { + default: Meta; + [name: string]: StoryFn | Meta; +}; + +const compose = (entry: StoryFile): ReturnType> => { + try { + return composeStories(entry); + } catch (e) { + throw new Error( + `There was an issue composing stories for the module: ${JSON.stringify(entry)}, ${e}`, + ); + } +}; + +function getAllStoryFiles() { + // Place the glob you want to match your story files + const storyFiles = Object.entries( + import.meta.glob('./stories/**/*.(stories|story).@(js|jsx|mjs|ts|tsx)', { + eager: true, + }), + ); + + return storyFiles.map(([filePath, storyFile]) => { + const storyDir = path.dirname(filePath); + const componentName = path.basename(filePath).replace(/\.(stories|story)\.[^/.]+$/, ''); + return { filePath, storyFile, componentName, storyDir }; + }); +} + +describe('Stories Snapshots', () => { + getAllStoryFiles().forEach(({ storyFile, componentName }) => { + const meta = storyFile.default; + const title = meta.title || componentName; + + describe(title, () => { + const stories = Object.entries(compose(storyFile)).map(([name, story]) => ({ name, story })); + + if (stories.length <= 0) { + throw new Error( + `No stories found for this module: ${title}. Make sure there is at least one valid story for this module.`, + ); + } + + stories.forEach(({ name, story }) => { + test(name, async () => { + const mounted = render(story()); + // Ensures a consistent snapshot by waiting for the component to render by adding a delay of 1 ms before taking the snapshot. + await new Promise((resolve) => setTimeout(resolve, 1)); + // Defines the custom snapshot path location and file name + const customSnaphotPath = `./__snapshots__/${componentName}.spec.ts.snap`; + expect(mounted.container).toMatchFileSnapshot(customSnaphotPath); + }); + }); + }); + }); +}); +``` diff --git a/docs/snippets/common/snapshot-tests-portable-stories.jest.js.mdx b/docs/snippets/common/snapshot-tests-portable-stories.jest.js.mdx new file mode 100644 index 000000000000..eddd82a08227 --- /dev/null +++ b/docs/snippets/common/snapshot-tests-portable-stories.jest.js.mdx @@ -0,0 +1,64 @@ +```js +// storybook.test.js +import path from 'path'; +import * as glob from 'glob'; + +import { describe, test, expect } from '@jest/globals'; + +// Replace your-testing-library with one of the supported testing libraries (e.g., react, vue) +import { render } from '@testing-library/your-testing-library'; + +// Adjust the import based on the supported framework or Storybook's testing libraries (e.g., react, vue3) +import { composeStories } from '@storybook/your-framework'; + +const compose = (entry) => { + try { + return composeStories(entry); + } catch (e) { + throw new Error( + `There was an issue composing stories for the module: ${JSON.stringify(entry)}, ${e}`, + ); + } +}; + +function getAllStoryFiles() { + // Place the glob you want to match your stories files + const storyFiles = glob.sync( + path.join(__dirname, 'stories/**/*.{stories,story}.{js,jsx,mjs,ts,tsx}'), + ); + + return storyFiles.map((filePath) => { + const storyFile = require(filePath); + const storyDir = path.dirname(filePath); + const componentName = path.basename(filePath).replace(/\.(stories|story)\.[^/.]+$/, ''); + + return { filePath, storyFile, storyDir, componentName }; + }); +} + +describe('Stories Snapshots', () => { + getAllStoryFiles().forEach(({ storyFile, componentName }) => { + const meta = storyFile.default; + const title = meta.title || componentName; + + describe(title, () => { + const stories = Object.entries(compose(storyFile)).map(([name, story]) => ({ name, story })); + + if (stories.length <= 0) { + throw new Error( + `No stories found for this module: ${title}. Make sure there is at least one valid story for this module.`, + ); + } + + stories.forEach(({ name, story }) => { + test(name, async () => { + const mounted = render(story()); + // Ensures a consistent snapshot by waiting for the component to render by adding a delay of 1 ms before taking the snapshot. + await new Promise((resolve) => setTimeout(resolve, 1)); + expect(mounted.container).toMatchSnapshot(); + }); + }); + }); + }); +}); +``` diff --git a/docs/snippets/common/snapshot-tests-portable-stories.jest.ts.mdx b/docs/snippets/common/snapshot-tests-portable-stories.jest.ts.mdx new file mode 100644 index 000000000000..1cfbe1bdbb35 --- /dev/null +++ b/docs/snippets/common/snapshot-tests-portable-stories.jest.ts.mdx @@ -0,0 +1,72 @@ +```ts +// storybook.test.ts +// Replace your-framework with one of the supported Storybook frameworks (react, vue3) +import type { Meta, StoryFn } from '@storybook/your-framework'; + +import path from 'path'; +import * as glob from 'glob'; + +import { describe, test, expect } from '@jest/globals'; + +// Replace your-testing-library with one of the supported testing libraries (e.g., react, vue) +import { render } from '@testing-library/your-testing-library'; + +// Adjust the import based on the supported framework or Storybook's testing libraries (e.g., react, vue3) +import { composeStories } from '@storybook/your-framework'; + +type StoryFile = { + default: Meta; + [name: string]: StoryFn | Meta; +}; + +const compose = (entry: StoryFile): ReturnType> => { + try { + return composeStories(entry); + } catch (e) { + throw new Error( + `There was an issue composing stories for the module: ${JSON.stringify(entry)}, ${e}`, + ); + } +}; + +function getAllStoryFiles() { + // Place the glob you want to match your stories files + const storyFiles = glob.sync( + path.join(__dirname, 'stories/**/*.{stories,story}.{js,jsx,mjs,ts,tsx}'), + ); + + return storyFiles.map((filePath) => { + const storyFile = require(filePath); + const storyDir = path.dirname(filePath); + const componentName = path.basename(filePath).replace(/\.(stories|story)\.[^/.]+$/, ''); + + return { filePath, storyFile, storyDir, componentName }; + }); +} + +describe('Stories Snapshots', () => { + getAllStoryFiles().forEach(({ storyFile, componentName }) => { + const meta = storyFile.default; + const title = meta.title || componentName; + + describe(title, () => { + const stories = Object.entries(compose(storyFile)).map(([name, story]) => ({ name, story })); + + if (stories.length <= 0) { + throw new Error( + `No stories found for this module: ${title}. Make sure there is at least one valid story for this module.`, + ); + } + + stories.forEach(({ name, story }) => { + test(name, async () => { + const mounted = render(story()); + // Ensures a consistent snapshot by waiting for the component to render by adding a delay of 1 ms before taking the snapshot. + await new Promise((resolve) => setTimeout(resolve, 1)); + expect(mounted.container).toMatchSnapshot(); + }); + }); + }); + }); +}); +``` diff --git a/docs/snippets/common/snapshot-tests-portable-stories.vitest.js.mdx b/docs/snippets/common/snapshot-tests-portable-stories.vitest.js.mdx new file mode 100644 index 000000000000..dbaa397f1bb3 --- /dev/null +++ b/docs/snippets/common/snapshot-tests-portable-stories.vitest.js.mdx @@ -0,0 +1,62 @@ +```js +// storybook.test.js +// @vitest-environment jsdom + +import path from 'path'; +import { describe, expect, test } from 'vitest'; + +// Replace your-testing-library with one of the supported testing libraries (e.g., react, vue) +import { render } from '@testing-library/your-testing-library'; + +// Adjust the import based on the supported framework or Storybook's testing libraries (e.g., react, vue3) +import { composeStories } from '@storybook/your-framework'; + +const compose = (entry) => { + try { + return composeStories(entry); + } catch (error) { + throw new Error( + `There was an issue composing stories for the module: ${JSON.stringify(entry)}, ${error}`, + ); + } +}; +function getAllStoryFiles() { + // Place the glob you want to match your story files + const storyFiles = Object.entries( + import.meta.glob('./stories/**/*.(stories|story).@(js|jsx|mjs|ts|tsx)', { + eager: true, + }), + ); + + return storyFiles.map(([filePath, storyFile]) => { + const storyDir = path.dirname(filePath); + const componentName = path.basename(filePath).replace(/\.(stories|story)\.[^/.]+$/, ''); + return { filePath, storyFile, componentName, storyDir }; + }); +} +describe('Stories Snapshots', () => { + getAllStoryFiles().forEach(({ storyFile, componentName }) => { + const meta = storyFile.default; + const title = meta.title || componentName; + + describe(title, () => { + const stories = Object.entries(compose(storyFile)).map(([name, story]) => ({ name, story })); + + if (stories.length <= 0) { + throw new Error( + `No stories found for this module: ${title}. Make sure there is at least one valid story for this module.`, + ); + } + + stories.forEach(({ name, story }) => { + test(name, async () => { + const mounted = render(story()); + // Ensures a consistent snapshot by waiting for the component to render by adding a delay of 1 ms before taking the snapshot. + await new Promise((resolve) => setTimeout(resolve, 1)); + expect(mounted.container).toMatchSnapshot(); + }); + }); + }); + }); +}); +``` diff --git a/docs/snippets/common/snapshot-tests-portable-stories.vitest.ts.mdx b/docs/snippets/common/snapshot-tests-portable-stories.vitest.ts.mdx new file mode 100644 index 000000000000..456bf5a1ae9d --- /dev/null +++ b/docs/snippets/common/snapshot-tests-portable-stories.vitest.ts.mdx @@ -0,0 +1,72 @@ +```ts +// storybook.test.ts +// @vitest-environment jsdom + +// Replace your-framework with one of the supported Storybook frameworks (react, vue3) +import type { Meta, StoryFn } from '@storybook/your-framework'; + +import path from 'path'; +import { describe, expect, test } from 'vitest'; + +// Replace your-testing-library with one of the supported testing libraries (e.g., react, vue) +import { render } from '@testing-library/your-testing-library'; + +// Adjust the import based on the supported framework or Storybook's testing libraries (e.g., react, vue3) +import { composeStories } from '@storybook/your-framework'; + +type StoryFile = { + default: Meta; + [name: string]: StoryFn | Meta; +}; + +const compose = (entry: StoryFile): ReturnType> => { + try { + return composeStories(entry); + } catch (e) { + throw new Error( + `There was an issue composing stories for the module: ${JSON.stringify(entry)}, ${e}`, + ); + } +}; + +function getAllStoryFiles() { + // Place the glob you want to match your story files + const storyFiles = Object.entries( + import.meta.glob('./stories/**/*.(stories|story).@(js|jsx|mjs|ts|tsx)', { + eager: true, + }), + ); + + return storyFiles.map(([filePath, storyFile]) => { + const storyDir = path.dirname(filePath); + const componentName = path.basename(filePath).replace(/\.(stories|story)\.[^/.]+$/, ''); + return { filePath, storyFile, componentName, storyDir }; + }); +} + +describe('Stories Snapshots', () => { + getAllStoryFiles().forEach(({ storyFile, componentName }) => { + const meta = storyFile.default; + const title = meta.title || componentName; + + describe(title, () => { + const stories = Object.entries(compose(storyFile)).map(([name, story]) => ({ name, story })); + + if (stories.length <= 0) { + throw new Error( + `No stories found for this module: ${title}. Make sure there is at least one valid story for this module.`, + ); + } + + stories.forEach(({ name, story }) => { + test(name, async () => { + const mounted = render(story()); + // Ensures a consistent snapshot by waiting for the component to render by adding a delay of 1 ms before taking the snapshot. + await new Promise((resolve) => setTimeout(resolve, 1)); + expect(mounted.container).toMatchSnapshot(); + }); + }); + }); + }); +}); +``` diff --git a/docs/snippets/common/test-runner-snapshot-resolver-custom-directory.js.mdx b/docs/snippets/common/test-runner-snapshot-resolver-custom-directory.js.mdx new file mode 100644 index 000000000000..203c8d30cbb2 --- /dev/null +++ b/docs/snippets/common/test-runner-snapshot-resolver-custom-directory.js.mdx @@ -0,0 +1,19 @@ +```js +// ./snapshot-resolver.js +import path from 'path'; + +export default { + resolveSnapshotPath: (testPath) => { + const fileName = path.basename(testPath); + const fileNameWithoutExtension = fileName.replace(/\.[^/.]+$/, ''); + // Defines the file extension for the snapshot file + const modifiedFileName = `${fileNameWithoutExtension}.snap`; + + // Configure Jest to generate snapshot files using the following convention (./src/test/__snapshots__/Button.stories.snap) + return path.join('./src/test/__snapshots__', modifiedFileName); + }, + resolveTestPath: (snapshotFilePath, snapshotExtension) => + path.basename(snapshotFilePath, snapshotExtension), + testPathForConsistencyCheck: 'example', +}; +``` diff --git a/docs/snippets/react/button-snapshot-test-portable-stories.jest.js.mdx b/docs/snippets/react/button-snapshot-test-portable-stories.jest.js.mdx new file mode 100644 index 000000000000..335eb461d736 --- /dev/null +++ b/docs/snippets/react/button-snapshot-test-portable-stories.jest.js.mdx @@ -0,0 +1,14 @@ +```js +// test/Button.test.js|ts +import { render } from '@testing-library/react'; + +import { composeStories } from '@storybook/react'; + +import * as stories from '../stories/Button.stories'; + +const { Primary } = composeStories(stories); +test('Button snapshot', async () => { + const mounted = render(); + expect(mounted.container).toMatchSnapshot(); +}); +``` diff --git a/docs/snippets/react/button-snapshot-test-portable-stories.vitest.js.mdx b/docs/snippets/react/button-snapshot-test-portable-stories.vitest.js.mdx new file mode 100644 index 000000000000..982992cc65aa --- /dev/null +++ b/docs/snippets/react/button-snapshot-test-portable-stories.vitest.js.mdx @@ -0,0 +1,18 @@ +```js +// test/Button.test.js|ts +// @vitest-environment jsdom + +import { expect, test } from 'vitest'; + +import { render } from '@testing-library/react'; + +import { composeStories } from '@storybook/react'; + +import * as stories from '../stories/Button.stories'; + +const { Primary } = composeStories(stories); +test('Button snapshot', async () => { + const mounted = render(Primary()); + expect(mounted.container).toMatchSnapshot(); +}); +``` diff --git a/docs/snippets/react/storybook-testing-addon-optional-config.vite.js.mdx b/docs/snippets/react/storybook-testing-addon-optional-config.vite.js.mdx new file mode 100644 index 000000000000..a50bd78cb49b --- /dev/null +++ b/docs/snippets/react/storybook-testing-addon-optional-config.vite.js.mdx @@ -0,0 +1,20 @@ +```js +// vitest.config.js + +import { defineConfig } from 'vitest/config'; +import { mergeConfig } from 'vite'; + +import viteConfig from './vite.config'; + +export default mergeConfig( + viteConfig, + defineConfig({ + test: { + globals: true, + environment: 'jsdom', + clearMocks: true, + setupFiles: './src/setupTests.js', //👈 Our configuration file enabled here + }, + }), +); +``` diff --git a/docs/snippets/react/storybook-testing-addon-optional-config.vite.ts.mdx b/docs/snippets/react/storybook-testing-addon-optional-config.vite.ts.mdx new file mode 100644 index 000000000000..3161eb45448c --- /dev/null +++ b/docs/snippets/react/storybook-testing-addon-optional-config.vite.ts.mdx @@ -0,0 +1,21 @@ +```ts +// vitest.config.ts + +/// +import { defineConfig } from 'vitest/config'; +import { mergeConfig } from 'vite'; + +import viteConfig from './vite.config'; + +export default mergeConfig( + viteConfig, + defineConfig({ + test: { + globals: true, + environment: 'jsdom', + clearMocks: true, + setupFiles: './src/setupTests.ts', //👈 Our configuration file enabled here + }, + }), +); +``` diff --git a/docs/snippets/vue/button-snapshot-test-portable-stories.js.mdx b/docs/snippets/vue/button-snapshot-test-portable-stories.js.mdx new file mode 100644 index 000000000000..06d28200e454 --- /dev/null +++ b/docs/snippets/vue/button-snapshot-test-portable-stories.js.mdx @@ -0,0 +1,18 @@ +```js +// __tests__/Button.spec.js|ts +// @vitest-environment jsdom + +import { expect, test } from 'vitest'; + +import { render } from '@testing-library/vue'; + +import { composeStories } from '@storybook/vue3'; + +import * as stories from '../stories/Button.stories'; + +const { Primary } = composeStories(stories); +test('Button snapshot', async () => { + const mounted = render(Primary()); + expect(mounted.container).toMatchSnapshot(); +}); +``` diff --git a/docs/toc.js b/docs/toc.js index b7ee152fb8c6..c15cda4c5bec 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -173,12 +173,12 @@ module.exports = { children: [ { pathSegment: 'snapshot-testing', - title: 'Storyshots', + title: 'Write', type: 'link', }, { pathSegment: 'storyshots-migration-guide', - title: 'Migration guide', + title: 'Storyshots migration guide', type: 'link', }, ], diff --git a/docs/writing-tests/snapshot-testing.md b/docs/writing-tests/snapshot-testing.md index 438258b36adb..36616674380d 100644 --- a/docs/writing-tests/snapshot-testing.md +++ b/docs/writing-tests/snapshot-testing.md @@ -1,5 +1,5 @@ --- -title: 'Snapshot testing with Storyshots' +title: 'Write snapshot tests' --- Snapshot tests compare the rendered markup of every story against known baselines. It’s a way to identify markup changes that trigger rendering errors and warnings. @@ -8,118 +8,195 @@ Storybook is a helpful tool for snapshot testing because every story is essentia ![Example Snapshot test](./snapshot-test.png) -## Migrating Tests + -The Storyshots addon was the original testing solution for Storybook, offering a highly extensible API and a wide range of configuration options for testing. However, it was difficult to set up and maintain, and it needed to be compatible with the latest version of Storybook, which introduced some significant architectural changes, including a high-performance [on-demand story loading](../configure/index.md#on-demand-story-loading) feature. As a result, Storyshots is now officially deprecated, is no longer being maintained, and will be removed in the next major release of Storybook. We recommend following the [migration guide](./storyshots-migration-guide.md) we've prepared to help you during this transition period. +If you're [upgrading](../configure/upgrading.md) to Storybook 8.0 and were using the Storyshots addon for snapshot testing, it was officially deprecated and removed with this release. See the [migration guide](./storyshots-migration-guide.md) for more information. -## Set up Storyshots + + +## Automate snapshot tests with the test-runner + +Storybook test-runner turns all of your stories into executable tests. Powered by [Jest](https://jestjs.io/) and [Playwright](https://playwright.dev/). It's a standalone, framework-agnostic utility that runs parallel to your Storybook. It enables you to run multiple testing patterns in a multi-browser environment, including interaction testing with the [play function](./interaction-testing.md), DOM snapshot, and [accessibility testing](./accessibility-testing.md). - +### Setup -The Storyshots addon was deprecated and has been removed in Storybook 8. See the [migration guide](./storyshots-migration-guide.md) for more information. +To enable snapshot testing with the test-runner, you'll need to take additional steps to set it up properly. We recommend you go through the [test-runner documentation](./test-runner.md) before proceeding with the rest of the required configuration to learn more about the available options and APIs. + +Add a new [configuration file](./test-runner.md#test-hook-api) inside your Storybook directory with the following inside: + + + + + + + + + +The `postVisit` hook allows you to extend the test runner's default configuration. Read more about them [here](./test-runner.md#test-hook-api). -[Storyshots](https://storybook.js.org/addons/@storybook/addon-storyshots/) is a Storybook addon that enables snapshot testing, powered by [Jest](https://jestjs.io/docs/getting-started). +When you execute the test-runner (for example, with `yarn test-storybook`), it will run through all of your stories and run the snapshot tests, generating a snapshot file for each story in your project located in the `__snapshots__` directory. + +### Configure -Run the following command to install Storyshots: +Out of the box, the test-runner provides an inbuilt snapshot testing configuration covering most use cases. You can also fine-tune the configuration to fit your needs via `test-storybook --eject` or by creating a `test-runner-jest.config.js` file at the root of your project. + +#### Override the default snapshot directory + +The test-runner uses a specific naming convention and path for the generated snapshot files by default. If you need to customize the snapshot directory, you can define a custom snapshot resolver to specify the directory where the snapshots are stored. + +Create a `snapshot-resolver.js` file to implement a custom snapshot resolver: -Add a test file to your environment with the following contents to configure Storyshots: +Update the `test-runner-jest.config.js` file and enable the `snapshotResolver` option to use the custom snapshot resolver: - +When the test-runner is executed, it will cycle through all of your stories and run the snapshot tests, generating a snapshot file for each story in your project located in the custom directory you specified. -You can name the test file differently to suit your needs. Bear in mind that it requires to be picked up by Jest. +#### Customize snapshot serialization - +By default, the test-runner uses [`jest-serializer-html`](https://github.com/algolia/jest-serializer-html) to serialize HTML snapshots. This may cause issues if you use specific CSS-in-JS libraries like [Emotion](https://emotion.sh/docs/introduction), Angular's `ng` attributes, or similar libraries that generate hash-based identifiers for CSS classes. If you need to customize the serialization of your snapshots, you can define a custom snapshot serializer to specify how the snapshots are serialized. -Run your first test. Storyshots will recognize your stories (based on [.storybook/main.js's setup](../configure/story-rendering.md)) and save them in the **snapshots** directory. +Create a `snapshot-serializer.js` file to implement a custom snapshot serializer: -```shell -npm test storybook.test.js -``` + -![Successful snapshot tests](./storyshots-pass.png) + -When you make changes to your components or stories, rerun the test to identify the changes to the rendered markup. + -![Failing snapshots](./storyshots-fail.png) +Update the `test-runner-jest.config.js` file and enable the `snapshotSerializers` option to use the custom snapshot resolver: -If they're intentional, accept them as new baselines. If the changes are bugs, fix the underlying code, then rerun the snapshot tests. + -### Configure the snapshot's directory + -If your project has a custom setup for snapshot testing, you'll need to take additional steps to run Storyshots. You'll need to install both [@storybook/addon-storyshots-puppeteer](https://storybook.js.org/addons/@storybook/addon-storyshots-puppeteer) and [puppeteer](https://github.com/puppeteer/puppeteer): + + +When the test-runner executes your tests, it will introspect the resulting HTML, replacing the dynamically generated attributes with the static ones provided by the regular expression in the custom serializer file before snapshotting the component. This ensures that the snapshots are consistent across different test runs. + + + + -```shell -# With npm -npm i -D @storybook/addon-storyshots-puppeteer puppeteer +## Snapshot tests with Portable Stories -# With yarn -yarn add @storybook/addon-storyshots-puppeteer puppeteer -``` +Storybook provides a `composeStories` utility that helps convert stories from a test file into renderable elements that can be reused in your Node tests with JSDOM. It also allows you to apply other Storybook features that you have enabled your project (e.g., [decorators](../writing-stories/decorators.md), [args](../writing-stories/args.md)) into your tests, enabling you to reuse your stories in your testing environment of choice (e.g., [Jest](https://jestjs.io/), [Vitest](https://vitest.dev/)), ensuring your tests are always in sync with your stories without having to rewrite them. This is what we refer to as portable stories in Storybook. -Next, update your test file (for example, `storybook.test.js`) to the following: +### Configure + +By default, Storybook offers a zero-config setup for React, Vue, and other frameworks via addons, allowing you to run your stories as tests with your testing environment of choice. However, if you're running tests and you've set up specific configurations in your Storybook instance (e.g., global [decorators](../writing-stories/decorators.md#global-decorators), [parameters](../writing-stories/parameters.md#global-parameters)) that you want to use in your tests, you'll need to extend your test setup to include these configurations. To do so, create a `setup.js|ts` file as follows: - +Update your test configuration file (e.g., `vite.config.js|ts`) if you're using [Vitest](https://vitest.dev/) or your test script if you're using [Jest](https://jestjs.io/): -Don't forget to replace your-custom-directory with your own. + - + -When you run your tests, the snapshots will be available in your specified directory. + -### Framework configuration +### Run tests on a single story -By default, Storyshots detects your project's framework. If you encounter a situation where this is not the case, you can adjust the configuration object and specify your framework. For example, if you wanted to configure the addon for a Vue 3 project: +If you need to run tests on a single story, you can use the `composeStories` function from the appropriate framework to process it and apply any configuration you've defined in your stories (e.g., [decorators](../writing-stories/decorators.md), [args](../writing-stories/args.md)) and combine it with your testing environment to generate a snapshot file. For example, if you're working on a component and you want to test its default state, ensuring the expected DOM structure doesn't change, here's how you could write your test: -These are the frameworks currently supported by Storyshots: `angular`, `html`, `preact`, `react`, `react-native`, `svelte`, `vue`, `vue3`, and `web-components`. +### Execute tests on multiple stories -### Additional customization +You can also use the `composeStories` function to test multiple stories. This is useful when you want to extend your test coverage to generate snapshots for the different states of the components in your project. To do so, you can write your test as follows: -Storyshots is highly customizable and includes options for various advanced use cases. You can read more in the [addon’s documentation](https://github.com/storybookjs/storybook/tree/master/addons/storyshots/storyshots-core#options). + ---- + + + + +When your tests are executed in your testing environment, they will generate a single snapshot file with all the stories in your project (i.e.,`storybook.test.ts|js.snap`). However, if you need, you can extend your test file to generate individual snapshot files for each story in your project with Vitest's [`toMatchFileSnapshot`](https://vitest.dev/guide/snapshot.html#file-snapshots) API or Jest's [`jest-specific-snapshot`](https://github.com/igor-dv/jest-specific-snapshot) package. For example: + + + + + + + + #### What’s the difference between snapshot tests and visual tests? diff --git a/docs/writing-tests/storyshots-fail.png b/docs/writing-tests/storyshots-fail.png deleted file mode 100644 index 1cf3677509f5fdc1bf2646253eeb722acc5c7164..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81300 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 diff --git a/docs/writing-tests/storyshots-pass.png b/docs/writing-tests/storyshots-pass.png deleted file mode 100644 index b93d218c8f34add60e35825c47a2fe05082265ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52729 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 LNkvXXu0mjfBJkj; From f352857f1f1151895482017b1ef877eb53259308 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 6 Mar 2024 09:25:17 +0100 Subject: [PATCH 03/70] use npm to create qwik sandbox --- code/lib/cli/src/sandbox-templates.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/sandbox-templates.ts b/code/lib/cli/src/sandbox-templates.ts index 182e49798148..b28021be7049 100644 --- a/code/lib/cli/src/sandbox-templates.ts +++ b/code/lib/cli/src/sandbox-templates.ts @@ -443,7 +443,7 @@ const baseTemplates = { }, 'qwik-vite/default-ts': { name: 'Qwik CLI Latest (Vite | TypeScript)', - script: 'yarn create qwik basic {{beforeDir}}', + script: 'npm create qwik basic {{beforeDir}}', // TODO: The community template does not provide standard stories, which is required for e2e tests. Reenable once it does. inDevelopment: true, expected: { From e4a47f577b3b07986962811118ed954d7351cb3a Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Wed, 6 Mar 2024 14:55:23 +0100 Subject: [PATCH 04/70] replace testing-library with test in monorepo --- .../stories/docspage/autoplay.stories.ts | 3 +- code/addons/interactions/package.json | 2 +- .../src/components/Interaction.stories.tsx | 3 +- .../components/InteractionsPanel.stories.tsx | 3 +- code/addons/onboarding/package.json | 1 - .../src/components/List/List.stories.tsx | 3 +- .../src/components/Modal/Modal.stories.tsx | 3 +- .../PulsatingEffect.stories.tsx | 3 +- .../WriteStoriesModal.stories.tsx | 3 +- .../with-browser-animations.stories.ts | 3 +- .../with-noop-browser-animations.stories.ts | 3 +- .../nextjs/template/stories/Image.stories.jsx | 1 - .../Head.stories.jsx | 3 +- .../template/stories/argMapping.stories.ts | 3 +- .../template/stories/argTypes.stories.ts | 3 +- .../template/stories/args.stories.ts | 3 +- .../stories/component-play.stories.ts | 3 +- .../template/stories/decorators.stories.ts | 3 +- .../template/stories/globals.stories.ts | 3 +- .../template/stories/hooks.stories.ts | 2 +- .../template/stories/loaders.stories.ts | 3 +- .../template/stories/parameters.stories.ts | 3 +- .../template/stories/rendering.stories.ts | 3 +- .../template/stories/shortcuts.stories.ts | 3 +- .../template/stories/tags.stories.ts | 3 +- .../svelte/template/stories/args.stories.js | 10 +-- .../GlobalSetup.stories.ts | 3 +- .../ReactiveArgs.stories.ts | 3 +- .../ReactiveDecorators.stories.ts | 2 +- .../ReactiveSlots.stories.ts | 3 +- .../ScopedSlots.stories.ts | 3 +- .../blocks/src/components/Story.stories.tsx | 2 +- .../blocks/src/controls/Boolean.stories.tsx | 3 +- .../ui/blocks/src/examples/Button.stories.tsx | 3 +- .../src/components/tabs/tabs.stories.tsx | 9 +-- .../mobile/about/MobileAbout.stories.tsx | 2 +- .../navigation/MobileNavigation.stories.tsx | 2 +- .../src/components/sidebar/Menu.stories.tsx | 3 +- .../src/components/sidebar/Tree.stories.tsx | 4 +- code/yarn.lock | 75 +++---------------- scripts/yarn.lock | 9 +-- 41 files changed, 49 insertions(+), 156 deletions(-) diff --git a/code/addons/docs/template/stories/docspage/autoplay.stories.ts b/code/addons/docs/template/stories/docspage/autoplay.stories.ts index 36fc395949d8..6ebdc43b3ad7 100644 --- a/code/addons/docs/template/stories/docspage/autoplay.stories.ts +++ b/code/addons/docs/template/stories/docspage/autoplay.stories.ts @@ -1,6 +1,5 @@ import { global as globalThis } from '@storybook/global'; -import { expect } from '@storybook/test'; -import { within } from '@storybook/testing-library'; +import { expect, within } from '@storybook/test'; export default { component: globalThis.Components.Pre, diff --git a/code/addons/interactions/package.json b/code/addons/interactions/package.json index 29d753da6fbf..851843fe0e2b 100644 --- a/code/addons/interactions/package.json +++ b/code/addons/interactions/package.json @@ -65,7 +65,7 @@ "@storybook/instrumenter": "workspace:*", "@storybook/manager-api": "workspace:*", "@storybook/preview-api": "workspace:*", - "@storybook/testing-library": "next", + "@storybook/test": "workspace:*", "@storybook/theming": "workspace:*", "@types/node": "^18.0.0", "formik": "^2.2.9", diff --git a/code/addons/interactions/src/components/Interaction.stories.tsx b/code/addons/interactions/src/components/Interaction.stories.tsx index b18cd7136c6a..a6f8bd3a3b46 100644 --- a/code/addons/interactions/src/components/Interaction.stories.tsx +++ b/code/addons/interactions/src/components/Interaction.stories.tsx @@ -1,7 +1,6 @@ import type { StoryObj, Meta } from '@storybook/react'; -import { expect } from '@storybook/test'; import { CallStates } from '@storybook/instrumenter'; -import { userEvent, within } from '@storybook/testing-library'; +import { userEvent, within, expect } from '@storybook/test'; import { getCalls } from '../mocks'; import { Interaction } from './Interaction'; diff --git a/code/addons/interactions/src/components/InteractionsPanel.stories.tsx b/code/addons/interactions/src/components/InteractionsPanel.stories.tsx index a2435113ef02..89f7ef115b59 100644 --- a/code/addons/interactions/src/components/InteractionsPanel.stories.tsx +++ b/code/addons/interactions/src/components/InteractionsPanel.stories.tsx @@ -2,8 +2,7 @@ import React from 'react'; import type { StoryObj, Meta } from '@storybook/react'; import { CallStates } from '@storybook/instrumenter'; import { styled } from '@storybook/theming'; -import { userEvent, within, waitFor } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { userEvent, within, waitFor, expect } from '@storybook/test'; import isChromatic from 'chromatic/isChromatic'; import { getCalls, getInteractions } from '../mocks'; diff --git a/code/addons/onboarding/package.json b/code/addons/onboarding/package.json index 5064aa48addb..e38e1243bc09 100644 --- a/code/addons/onboarding/package.json +++ b/code/addons/onboarding/package.json @@ -55,7 +55,6 @@ "@storybook/react": "workspace:*", "@storybook/telemetry": "workspace:*", "@storybook/test": "workspace:*", - "@storybook/testing-library": "next", "@storybook/theming": "workspace:*", "@storybook/types": "workspace:*", "framer-motion": "^11.0.3", diff --git a/code/addons/onboarding/src/components/List/List.stories.tsx b/code/addons/onboarding/src/components/List/List.stories.tsx index 380fd07ca4cc..9ff667586fc3 100644 --- a/code/addons/onboarding/src/components/List/List.stories.tsx +++ b/code/addons/onboarding/src/components/List/List.stories.tsx @@ -1,7 +1,6 @@ import React, { useState } from 'react'; import type { Meta, StoryObj } from '@storybook/react'; -import { userEvent, waitFor, within } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { userEvent, waitFor, within, expect } from '@storybook/test'; import { List } from './List'; import { ListItem } from './ListItem/ListItem'; diff --git a/code/addons/onboarding/src/components/Modal/Modal.stories.tsx b/code/addons/onboarding/src/components/Modal/Modal.stories.tsx index 51d19c49b4f5..527aa87d4323 100644 --- a/code/addons/onboarding/src/components/Modal/Modal.stories.tsx +++ b/code/addons/onboarding/src/components/Modal/Modal.stories.tsx @@ -1,7 +1,6 @@ import React, { useState } from 'react'; import type { Meta, StoryObj } from '@storybook/react'; -import { userEvent, within } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { userEvent, within, expect } from '@storybook/test'; import { Modal } from './Modal'; diff --git a/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.stories.tsx b/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.stories.tsx index 67b31843dc45..6a87a2147c0a 100644 --- a/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.stories.tsx +++ b/code/addons/onboarding/src/components/PulsatingEffect/PulsatingEffect.stories.tsx @@ -1,8 +1,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import { PulsatingEffect } from './PulsatingEffect'; import React from 'react'; -import { within } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { within, expect } from '@storybook/test'; const meta: Meta = { component: PulsatingEffect, diff --git a/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx b/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx index d2284dbd913f..d2fe6ba470b4 100644 --- a/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx +++ b/code/addons/onboarding/src/features/WriteStoriesModal/WriteStoriesModal.stories.tsx @@ -1,8 +1,7 @@ import React from 'react'; import type { Meta, StoryObj } from '@storybook/react'; -import { waitFor, within } from '@storybook/testing-library'; -import { expect, fn } from '@storybook/test'; +import { waitFor, within, expect, fn } from '@storybook/test'; import { STORY_INDEX_INVALIDATED, STORY_RENDERED } from '@storybook/core-events'; import { WriteStoriesModal } from './WriteStoriesModal'; import typescriptSnippet from './code/typescript'; diff --git a/code/frameworks/angular/template/stories/core/applicationConfig/with-browser-animations.stories.ts b/code/frameworks/angular/template/stories/core/applicationConfig/with-browser-animations.stories.ts index f61db00d8f0e..ef30854c26f9 100644 --- a/code/frameworks/angular/template/stories/core/applicationConfig/with-browser-animations.stories.ts +++ b/code/frameworks/angular/template/stories/core/applicationConfig/with-browser-animations.stories.ts @@ -1,7 +1,6 @@ import { Meta, StoryObj, applicationConfig } from '@storybook/angular'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { within, userEvent } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { within, userEvent, expect } from '@storybook/test'; import { importProvidersFrom } from '@angular/core'; import { OpenCloseComponent } from '../moduleMetadata/angular-src/open-close-component/open-close.component'; diff --git a/code/frameworks/angular/template/stories/core/applicationConfig/with-noop-browser-animations.stories.ts b/code/frameworks/angular/template/stories/core/applicationConfig/with-noop-browser-animations.stories.ts index 1a4341ec77cf..3369b9949d33 100644 --- a/code/frameworks/angular/template/stories/core/applicationConfig/with-noop-browser-animations.stories.ts +++ b/code/frameworks/angular/template/stories/core/applicationConfig/with-noop-browser-animations.stories.ts @@ -1,7 +1,6 @@ import { Meta, StoryObj } from '@storybook/angular'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { within, userEvent } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { within, userEvent, expect } from '@storybook/test'; import { importProvidersFrom } from '@angular/core'; import { OpenCloseComponent } from '../moduleMetadata/angular-src/open-close-component/open-close.component'; diff --git a/code/frameworks/nextjs/template/stories/Image.stories.jsx b/code/frameworks/nextjs/template/stories/Image.stories.jsx index 8fa4f6a53de1..79ab308e1286 100644 --- a/code/frameworks/nextjs/template/stories/Image.stories.jsx +++ b/code/frameworks/nextjs/template/stories/Image.stories.jsx @@ -1,6 +1,5 @@ import React, { useRef, useState } from 'react'; import Image from 'next/image'; -import { waitFor } from '@storybook/testing-library'; import Accessibility from '../../assets/accessibility.svg'; import AvifImage from '../../assets/avif-test-image.avif'; diff --git a/code/frameworks/nextjs/template/stories_nextjs-default-js/Head.stories.jsx b/code/frameworks/nextjs/template/stories_nextjs-default-js/Head.stories.jsx index f031096d6ced..1e43bb39eba6 100644 --- a/code/frameworks/nextjs/template/stories_nextjs-default-js/Head.stories.jsx +++ b/code/frameworks/nextjs/template/stories_nextjs-default-js/Head.stories.jsx @@ -1,7 +1,6 @@ -import { expect } from '@storybook/test'; import Head from 'next/head'; import React from 'react'; -import { within, userEvent, waitFor } from '@storybook/testing-library'; +import { waitFor, expect } from '@storybook/test'; function Component() { return ( diff --git a/code/lib/preview-api/template/stories/argMapping.stories.ts b/code/lib/preview-api/template/stories/argMapping.stories.ts index cd41237d17af..11322e8b22d7 100644 --- a/code/lib/preview-api/template/stories/argMapping.stories.ts +++ b/code/lib/preview-api/template/stories/argMapping.stories.ts @@ -1,7 +1,6 @@ import { global as globalThis } from '@storybook/global'; import type { PartialStoryFn, PlayFunctionContext, StoryContext } from '@storybook/types'; -import { within } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { within, expect } from '@storybook/test'; const arrows = { ArrowUp: { name: 'ArrowUp' }, diff --git a/code/lib/preview-api/template/stories/argTypes.stories.ts b/code/lib/preview-api/template/stories/argTypes.stories.ts index 5f2b81c004fc..3998ce68f8ad 100644 --- a/code/lib/preview-api/template/stories/argTypes.stories.ts +++ b/code/lib/preview-api/template/stories/argTypes.stories.ts @@ -1,7 +1,6 @@ import { global as globalThis } from '@storybook/global'; import type { PartialStoryFn, PlayFunctionContext, StoryContext } from '@storybook/types'; -import { within } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { expect, within } from '@storybook/test'; export default { component: globalThis.Components.Pre, diff --git a/code/lib/preview-api/template/stories/args.stories.ts b/code/lib/preview-api/template/stories/args.stories.ts index 5315fb2a3dbf..68e601c350e6 100644 --- a/code/lib/preview-api/template/stories/args.stories.ts +++ b/code/lib/preview-api/template/stories/args.stories.ts @@ -1,7 +1,6 @@ import { global as globalThis } from '@storybook/global'; import type { PartialStoryFn, PlayFunctionContext, StoryContext } from '@storybook/types'; -import { within } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { within, expect } from '@storybook/test'; import pick from 'lodash/pick'; import { STORY_ARGS_UPDATED, UPDATE_STORY_ARGS, RESET_STORY_ARGS } from '@storybook/core-events'; diff --git a/code/lib/preview-api/template/stories/component-play.stories.ts b/code/lib/preview-api/template/stories/component-play.stories.ts index 08efe9847b1f..f4611d7219ce 100644 --- a/code/lib/preview-api/template/stories/component-play.stories.ts +++ b/code/lib/preview-api/template/stories/component-play.stories.ts @@ -1,7 +1,6 @@ import { global as globalThis } from '@storybook/global'; import type { PartialStoryFn, PlayFunctionContext, StoryContext } from '@storybook/types'; -import { within } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { within, expect } from '@storybook/test'; export default { component: globalThis.Components.Pre, diff --git a/code/lib/preview-api/template/stories/decorators.stories.ts b/code/lib/preview-api/template/stories/decorators.stories.ts index f374bcf1d640..467f7245f383 100644 --- a/code/lib/preview-api/template/stories/decorators.stories.ts +++ b/code/lib/preview-api/template/stories/decorators.stories.ts @@ -5,8 +5,7 @@ import type { PlayFunctionContext, StoryContext, } from '@storybook/types'; -import { within } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { within, expect } from '@storybook/test'; import { useEffect } from '@storybook/preview-api'; import { STORY_ARGS_UPDATED, UPDATE_STORY_ARGS, RESET_STORY_ARGS } from '@storybook/core-events'; diff --git a/code/lib/preview-api/template/stories/globals.stories.ts b/code/lib/preview-api/template/stories/globals.stories.ts index ff66a964766e..8e49f4b0095d 100644 --- a/code/lib/preview-api/template/stories/globals.stories.ts +++ b/code/lib/preview-api/template/stories/globals.stories.ts @@ -1,7 +1,6 @@ import { global as globalThis } from '@storybook/global'; import type { PartialStoryFn, PlayFunctionContext, StoryContext } from '@storybook/types'; -import { within } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { within, expect } from '@storybook/test'; export default { component: globalThis.Components.Pre, diff --git a/code/lib/preview-api/template/stories/hooks.stories.ts b/code/lib/preview-api/template/stories/hooks.stories.ts index 15a4fe90a2ea..b2c31429359e 100644 --- a/code/lib/preview-api/template/stories/hooks.stories.ts +++ b/code/lib/preview-api/template/stories/hooks.stories.ts @@ -1,7 +1,7 @@ import { global as globalThis } from '@storybook/global'; import type { PartialStoryFn, PlayFunctionContext } from '@storybook/types'; import { useEffect, useState } from '@storybook/preview-api'; -import { within, userEvent } from '@storybook/testing-library'; +import { within, userEvent } from '@storybook/test'; export default { component: globalThis.Components.Button, diff --git a/code/lib/preview-api/template/stories/loaders.stories.ts b/code/lib/preview-api/template/stories/loaders.stories.ts index 000bfe5dc159..dadb82a236f2 100644 --- a/code/lib/preview-api/template/stories/loaders.stories.ts +++ b/code/lib/preview-api/template/stories/loaders.stories.ts @@ -1,7 +1,6 @@ import { global as globalThis } from '@storybook/global'; import type { PartialStoryFn, PlayFunctionContext, StoryContext } from '@storybook/types'; -import { within } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { within, expect } from '@storybook/test'; export default { component: globalThis.Components.Pre, diff --git a/code/lib/preview-api/template/stories/parameters.stories.ts b/code/lib/preview-api/template/stories/parameters.stories.ts index be0a84582ae3..06e9b94ae84b 100644 --- a/code/lib/preview-api/template/stories/parameters.stories.ts +++ b/code/lib/preview-api/template/stories/parameters.stories.ts @@ -1,7 +1,6 @@ import { global as globalThis } from '@storybook/global'; import type { PartialStoryFn, PlayFunctionContext, StoryContext } from '@storybook/types'; -import { within } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { within, expect } from '@storybook/test'; export default { component: globalThis.Components.Pre, diff --git a/code/lib/preview-api/template/stories/rendering.stories.ts b/code/lib/preview-api/template/stories/rendering.stories.ts index ff36890bf265..477e07137987 100644 --- a/code/lib/preview-api/template/stories/rendering.stories.ts +++ b/code/lib/preview-api/template/stories/rendering.stories.ts @@ -1,7 +1,6 @@ import { global as globalThis } from '@storybook/global'; import type { PlayFunctionContext } from '@storybook/types'; -import { within, waitFor } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { within, waitFor, expect } from '@storybook/test'; import { FORCE_REMOUNT, RESET_STORY_ARGS, diff --git a/code/lib/preview-api/template/stories/shortcuts.stories.ts b/code/lib/preview-api/template/stories/shortcuts.stories.ts index 91a597427bb6..be748fb27ea2 100644 --- a/code/lib/preview-api/template/stories/shortcuts.stories.ts +++ b/code/lib/preview-api/template/stories/shortcuts.stories.ts @@ -1,7 +1,6 @@ import { global as globalThis } from '@storybook/global'; -import { userEvent, within } from '@storybook/testing-library'; +import { userEvent, within, expect, fn } from '@storybook/test'; import { PREVIEW_KEYDOWN } from '@storybook/core-events'; -import { expect, fn } from '@storybook/test'; import type { PlayFunctionContext } from '@storybook/csf'; export default { diff --git a/code/lib/preview-api/template/stories/tags.stories.ts b/code/lib/preview-api/template/stories/tags.stories.ts index 96209421f5d6..61ffe8811429 100644 --- a/code/lib/preview-api/template/stories/tags.stories.ts +++ b/code/lib/preview-api/template/stories/tags.stories.ts @@ -1,7 +1,6 @@ import { global as globalThis } from '@storybook/global'; import type { PartialStoryFn, PlayFunctionContext, StoryContext } from '@storybook/types'; -import { within } from '@storybook/testing-library'; -import { expect } from '@storybook/test'; +import { within, expect } from '@storybook/test'; export default { component: globalThis.Components.Pre, diff --git a/code/renderers/svelte/template/stories/args.stories.js b/code/renderers/svelte/template/stories/args.stories.js index 493b5519e6e2..71544066ecd1 100644 --- a/code/renderers/svelte/template/stories/args.stories.js +++ b/code/renderers/svelte/template/stories/args.stories.js @@ -1,11 +1,5 @@ -import { expect } from '@storybook/test'; -import { within, userEvent, waitFor } from '@storybook/testing-library'; -import { - UPDATE_STORY_ARGS, - STORY_ARGS_UPDATED, - RESET_STORY_ARGS, - STORY_RENDERED, -} from '@storybook/core-events'; +import { within, userEvent, waitFor, expect } from '@storybook/test'; +import { UPDATE_STORY_ARGS, RESET_STORY_ARGS, STORY_RENDERED } from '@storybook/core-events'; import { addons } from '@storybook/preview-api'; import ButtonView from './views/ButtonJavaScript.svelte'; diff --git a/code/renderers/vue3/template/stories_vue3-vite-default-ts/GlobalSetup.stories.ts b/code/renderers/vue3/template/stories_vue3-vite-default-ts/GlobalSetup.stories.ts index 5e01135e20c0..725b0e65ee93 100644 --- a/code/renderers/vue3/template/stories_vue3-vite-default-ts/GlobalSetup.stories.ts +++ b/code/renderers/vue3/template/stories_vue3-vite-default-ts/GlobalSetup.stories.ts @@ -1,6 +1,5 @@ -import { expect } from '@storybook/test'; import type { Meta, StoryObj } from '@storybook/vue3'; -import { within } from '@storybook/testing-library'; +import { within, expect } from '@storybook/test'; import { inject } from 'vue'; import GlobalSetup from './GlobalSetup.vue'; diff --git a/code/renderers/vue3/template/stories_vue3-vite-default-ts/ReactiveArgs.stories.ts b/code/renderers/vue3/template/stories_vue3-vite-default-ts/ReactiveArgs.stories.ts index 536c962c2ee1..ff076fcca733 100644 --- a/code/renderers/vue3/template/stories_vue3-vite-default-ts/ReactiveArgs.stories.ts +++ b/code/renderers/vue3/template/stories_vue3-vite-default-ts/ReactiveArgs.stories.ts @@ -1,7 +1,6 @@ -import { expect } from '@storybook/test'; import { global as globalThis } from '@storybook/global'; import type { Meta, StoryObj, StoryFn } from '@storybook/vue3'; -import { within, userEvent } from '@storybook/testing-library'; +import { within, userEvent, expect } from '@storybook/test'; import { UPDATE_STORY_ARGS, STORY_ARGS_UPDATED, RESET_STORY_ARGS } from '@storybook/core-events'; import ReactiveArgs from './ReactiveArgs.vue'; diff --git a/code/renderers/vue3/template/stories_vue3-vite-default-ts/ReactiveDecorators.stories.ts b/code/renderers/vue3/template/stories_vue3-vite-default-ts/ReactiveDecorators.stories.ts index 143cd1784559..d6a7e743d778 100644 --- a/code/renderers/vue3/template/stories_vue3-vite-default-ts/ReactiveDecorators.stories.ts +++ b/code/renderers/vue3/template/stories_vue3-vite-default-ts/ReactiveDecorators.stories.ts @@ -1,5 +1,5 @@ import { global as globalThis } from '@storybook/global'; -import { userEvent, within } from '@storybook/testing-library'; +import { userEvent, within } from '@storybook/test'; import type { Meta, StoryObj } from '@storybook/vue3'; import { h } from 'vue'; import { RESET_STORY_ARGS, STORY_ARGS_UPDATED, UPDATE_STORY_ARGS } from '@storybook/core-events'; diff --git a/code/renderers/vue3/template/stories_vue3-vite-default-ts/ReactiveSlots.stories.ts b/code/renderers/vue3/template/stories_vue3-vite-default-ts/ReactiveSlots.stories.ts index d0042b65a2a5..bde19efc07e8 100644 --- a/code/renderers/vue3/template/stories_vue3-vite-default-ts/ReactiveSlots.stories.ts +++ b/code/renderers/vue3/template/stories_vue3-vite-default-ts/ReactiveSlots.stories.ts @@ -1,6 +1,5 @@ -import { expect } from '@storybook/test'; import { global as globalThis } from '@storybook/global'; -import { within } from '@storybook/testing-library'; +import { within, expect } from '@storybook/test'; import { STORY_ARGS_UPDATED, RESET_STORY_ARGS, UPDATE_STORY_ARGS } from '@storybook/core-events'; import { h } from 'vue'; import type { Meta, StoryObj } from '@storybook/vue3'; diff --git a/code/renderers/vue3/template/stories_vue3-vite-default-ts/ScopedSlots.stories.ts b/code/renderers/vue3/template/stories_vue3-vite-default-ts/ScopedSlots.stories.ts index ef7a625ea413..b255be571d43 100644 --- a/code/renderers/vue3/template/stories_vue3-vite-default-ts/ScopedSlots.stories.ts +++ b/code/renderers/vue3/template/stories_vue3-vite-default-ts/ScopedSlots.stories.ts @@ -1,7 +1,6 @@ -import { expect } from '@storybook/test'; import { global as globalThis } from '@storybook/global'; import type { Channel } from '@storybook/channels'; -import { within } from '@storybook/testing-library'; +import { within, expect } from '@storybook/test'; import { UPDATE_STORY_ARGS, STORY_ARGS_UPDATED, RESET_STORY_ARGS } from '@storybook/core-events'; import type { Meta, StoryObj } from '@storybook/vue3'; diff --git a/code/ui/blocks/src/components/Story.stories.tsx b/code/ui/blocks/src/components/Story.stories.tsx index ae9a277a9425..fa1767d747af 100644 --- a/code/ui/blocks/src/components/Story.stories.tsx +++ b/code/ui/blocks/src/components/Story.stories.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type { Meta, ReactRenderer, StoryObj } from '@storybook/react'; -import { within } from '@storybook/testing-library'; +import { within } from '@storybook/test'; import type { PlayFunctionContext } from '@storybook/csf'; import type { WebRenderer, ModuleExport } from '@storybook/types'; import { RESET_STORY_ARGS, STORY_ARGS_UPDATED, UPDATE_STORY_ARGS } from '@storybook/core-events'; diff --git a/code/ui/blocks/src/controls/Boolean.stories.tsx b/code/ui/blocks/src/controls/Boolean.stories.tsx index e83338c41241..8f7c043701c6 100644 --- a/code/ui/blocks/src/controls/Boolean.stories.tsx +++ b/code/ui/blocks/src/controls/Boolean.stories.tsx @@ -1,6 +1,5 @@ -import { expect } from '@storybook/test'; import type { Meta, StoryObj } from '@storybook/react'; -import { within, fireEvent, waitFor } from '@storybook/testing-library'; +import { within, fireEvent, waitFor, expect } from '@storybook/test'; import { addons } from '@storybook/preview-api'; import { RESET_STORY_ARGS, STORY_ARGS_UPDATED } from '@storybook/core-events'; import { BooleanControl } from './Boolean'; diff --git a/code/ui/blocks/src/examples/Button.stories.tsx b/code/ui/blocks/src/examples/Button.stories.tsx index 7e22aef00064..d99917fdfee8 100644 --- a/code/ui/blocks/src/examples/Button.stories.tsx +++ b/code/ui/blocks/src/examples/Button.stories.tsx @@ -1,6 +1,5 @@ -import { expect } from '@storybook/test'; import type { Meta, StoryObj } from '@storybook/react'; -import { within, fireEvent } from '@storybook/testing-library'; +import { within, fireEvent, expect } from '@storybook/test'; import React from 'react'; import { Button } from './Button'; diff --git a/code/ui/components/src/components/tabs/tabs.stories.tsx b/code/ui/components/src/components/tabs/tabs.stories.tsx index 9312c70c8bec..46a332a87f1f 100644 --- a/code/ui/components/src/components/tabs/tabs.stories.tsx +++ b/code/ui/components/src/components/tabs/tabs.stories.tsx @@ -2,14 +2,7 @@ import { expect } from '@storybook/test'; import React, { Fragment } from 'react'; import { action } from '@storybook/addon-actions'; import type { Meta, StoryObj } from '@storybook/react'; -import { - within, - fireEvent, - waitFor, - screen, - userEvent, - findByText, -} from '@storybook/testing-library'; +import { within, fireEvent, waitFor, screen, userEvent, findByText } from '@storybook/test'; import { CPUIcon, MemoryIcon } from '@storybook/icons'; import { Tabs, TabsState, TabWrapper } from './tabs'; import type { ChildrenList } from './tabs.helpers'; diff --git a/code/ui/manager/src/components/mobile/about/MobileAbout.stories.tsx b/code/ui/manager/src/components/mobile/about/MobileAbout.stories.tsx index 7ef6f9d89f92..b36e2e0854f7 100644 --- a/code/ui/manager/src/components/mobile/about/MobileAbout.stories.tsx +++ b/code/ui/manager/src/components/mobile/about/MobileAbout.stories.tsx @@ -1,7 +1,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import { ManagerContext } from '@storybook/manager-api'; import React, { useEffect } from 'react'; -import { within } from '@storybook/testing-library'; +import { within } from '@storybook/test'; import { MobileAbout } from './MobileAbout'; import { LayoutProvider, useLayout } from '../../layout/LayoutProvider'; diff --git a/code/ui/manager/src/components/mobile/navigation/MobileNavigation.stories.tsx b/code/ui/manager/src/components/mobile/navigation/MobileNavigation.stories.tsx index 7617574cdd4e..8978534f6890 100644 --- a/code/ui/manager/src/components/mobile/navigation/MobileNavigation.stories.tsx +++ b/code/ui/manager/src/components/mobile/navigation/MobileNavigation.stories.tsx @@ -1,7 +1,7 @@ import type { Meta, StoryObj } from '@storybook/react'; import React from 'react'; import { ManagerContext } from '@storybook/manager-api'; -import { within } from '@storybook/testing-library'; +import { within } from '@storybook/test'; import { startCase } from 'lodash'; import { MobileNavigation } from './MobileNavigation'; import { LayoutProvider, useLayout } from '../../layout/LayoutProvider'; diff --git a/code/ui/manager/src/components/sidebar/Menu.stories.tsx b/code/ui/manager/src/components/sidebar/Menu.stories.tsx index 98788518db4b..ca57b4780a67 100644 --- a/code/ui/manager/src/components/sidebar/Menu.stories.tsx +++ b/code/ui/manager/src/components/sidebar/Menu.stories.tsx @@ -1,11 +1,10 @@ import type { ComponentProps } from 'react'; import React from 'react'; -import { expect } from '@storybook/test'; import type { Meta, StoryObj } from '@storybook/react'; import { TooltipLinkList } from '@storybook/components'; import { styled } from '@storybook/theming'; -import { screen, userEvent, within } from '@storybook/testing-library'; +import { screen, userEvent, within, expect } from '@storybook/test'; import type { State } from '@storybook/manager-api'; import { LinkIcon } from '@storybook/icons'; import { SidebarMenu } from './Menu'; diff --git a/code/ui/manager/src/components/sidebar/Tree.stories.tsx b/code/ui/manager/src/components/sidebar/Tree.stories.tsx index eb2aa83959fc..00036a574db5 100644 --- a/code/ui/manager/src/components/sidebar/Tree.stories.tsx +++ b/code/ui/manager/src/components/sidebar/Tree.stories.tsx @@ -4,9 +4,7 @@ import type { ComponentEntry, IndexHash } from '@storybook/manager-api'; import { action } from '@storybook/addon-actions'; import type { StoryObj, Meta } from '@storybook/react'; -import { within } from '@storybook/testing-library'; - -import { expect } from '@storybook/test'; +import { within, expect } from '@storybook/test'; import { Tree } from './Tree'; import { index } from './mockdata.large'; import { DEFAULT_REF_ID } from './Sidebar'; diff --git a/code/yarn.lock b/code/yarn.lock index 5e19c4ce9845..da0e12d44fb8 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -5114,7 +5114,7 @@ __metadata: "@storybook/instrumenter": "workspace:*" "@storybook/manager-api": "workspace:*" "@storybook/preview-api": "workspace:*" - "@storybook/testing-library": "npm:next" + "@storybook/test": "workspace:*" "@storybook/theming": "workspace:*" "@storybook/types": "workspace:*" "@types/node": "npm:^18.0.0" @@ -5216,7 +5216,6 @@ __metadata: "@storybook/react": "workspace:*" "@storybook/telemetry": "workspace:*" "@storybook/test": "workspace:*" - "@storybook/testing-library": "npm:next" "@storybook/theming": "workspace:*" "@storybook/types": "workspace:*" framer-motion: "npm:^11.0.3" @@ -7086,7 +7085,7 @@ __metadata: languageName: node linkType: hard -"@sveltejs/vite-plugin-svelte-inspector@npm:^2.0.0, @sveltejs/vite-plugin-svelte-inspector@npm:^2.0.0-next.0 || ^2.0.0": +"@sveltejs/vite-plugin-svelte-inspector@npm:^2.0.0": version: 2.0.0 resolution: "@sveltejs/vite-plugin-svelte-inspector@npm:2.0.0" dependencies: @@ -7099,25 +7098,7 @@ __metadata: languageName: node linkType: hard -"@sveltejs/vite-plugin-svelte@npm:^3.0.1": - version: 3.0.1 - resolution: "@sveltejs/vite-plugin-svelte@npm:3.0.1" - dependencies: - "@sveltejs/vite-plugin-svelte-inspector": "npm:^2.0.0-next.0 || ^2.0.0" - debug: "npm:^4.3.4" - deepmerge: "npm:^4.3.1" - kleur: "npm:^4.1.5" - magic-string: "npm:^0.30.5" - svelte-hmr: "npm:^0.15.3" - vitefu: "npm:^0.2.5" - peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 - checksum: 889d41014d4cc5dfb578cb0a80e64f72c0f8c143e9a299c3a4e2372fd582d982ce118dad5e158e0b747d1df7354a909ed9490b1adcd1bf982b56c82fffd4652c - languageName: node - linkType: hard - -"@sveltejs/vite-plugin-svelte@npm:^3.0.2": +"@sveltejs/vite-plugin-svelte@npm:^3.0.1, @sveltejs/vite-plugin-svelte@npm:^3.0.2": version: 3.0.2 resolution: "@sveltejs/vite-plugin-svelte@npm:3.0.2" dependencies: @@ -7594,10 +7575,10 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.1": - version: 1.0.2 - resolution: "@types/estree@npm:1.0.2" - checksum: 4b5c601d435ea8e2205458de15fd1556b5ae6c9a8323bad8a940ea502d6c824664faca94234c0bf76bf9c87cbf6ac41abee550c9e20433256549d589c9b543bd +"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.1, @types/estree@npm:^1.0.5": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d languageName: node linkType: hard @@ -7608,13 +7589,6 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:^1.0.5": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d - languageName: node - linkType: hard - "@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": version: 4.17.37 resolution: "@types/express-serve-static-core@npm:4.17.37" @@ -9557,16 +9531,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.10.0, acorn@npm:^8.11.2, acorn@npm:^8.4.1, acorn@npm:^8.6.0, acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.11.2 - resolution: "acorn@npm:8.11.2" - bin: - acorn: bin/acorn - checksum: a3ed76c761b75ec54b1ec3068fb7f113a182e95aea7f322f65098c2958d232e3d211cb6dac35ff9c647024b63714bc528a26d54a925d1fef2c25585b4c8e4017 - languageName: node - linkType: hard - -"acorn@npm:^8.11.3": +"acorn@npm:^8.0.0, acorn@npm:^8.10.0, acorn@npm:^8.11.2, acorn@npm:^8.11.3, acorn@npm:^8.4.1, acorn@npm:^8.6.0, acorn@npm:^8.7.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": version: 8.11.3 resolution: "acorn@npm:8.11.3" bin: @@ -25016,20 +24981,7 @@ __metadata: languageName: node linkType: hard -"recast@npm:^0.23.1, recast@npm:^0.23.3": - version: 0.23.4 - resolution: "recast@npm:0.23.4" - dependencies: - assert: "npm:^2.0.0" - ast-types: "npm:^0.16.1" - esprima: "npm:~4.0.0" - source-map: "npm:~0.6.1" - tslib: "npm:^2.0.1" - checksum: d719633be8029e28f23b8191d4a525c5dbdac721792ab3cb5e9dfcf1694fb93f3c147b186916195a9c7fa0711f1e4990ba457cdcee02faed3899d4a80da1bd1f - languageName: node - linkType: hard - -"recast@npm:^0.23.5": +"recast@npm:^0.23.1, recast@npm:^0.23.3, recast@npm:^0.23.5": version: 0.23.5 resolution: "recast@npm:0.23.5" dependencies: @@ -28067,14 +28019,7 @@ __metadata: languageName: node linkType: hard -"tiny-invariant@npm:^1.3.1": - version: 1.3.1 - resolution: "tiny-invariant@npm:1.3.1" - checksum: 5b87c1d52847d9452b60d0dcb77011b459044e0361ca8253bfe7b43d6288106e12af926adb709a6fc28900e3864349b91dad9a4ac93c39aa15f360b26c2ff4db - languageName: node - linkType: hard - -"tiny-invariant@npm:^1.3.3": +"tiny-invariant@npm:^1.3.1, tiny-invariant@npm:^1.3.3": version: 1.3.3 resolution: "tiny-invariant@npm:1.3.3" checksum: 65af4a07324b591a059b35269cd696aba21bef2107f29b9f5894d83cc143159a204b299553435b03874ebb5b94d019afa8b8eff241c8a4cfee95872c2e1c1c4a diff --git a/scripts/yarn.lock b/scripts/yarn.lock index c87d27c84be7..6ca86bb51922 100644 --- a/scripts/yarn.lock +++ b/scripts/yarn.lock @@ -14553,14 +14553,7 @@ __metadata: languageName: node linkType: hard -"tiny-invariant@npm:^1.3.1": - version: 1.3.1 - resolution: "tiny-invariant@npm:1.3.1" - checksum: 5b87c1d52847d9452b60d0dcb77011b459044e0361ca8253bfe7b43d6288106e12af926adb709a6fc28900e3864349b91dad9a4ac93c39aa15f360b26c2ff4db - languageName: node - linkType: hard - -"tiny-invariant@npm:^1.3.3": +"tiny-invariant@npm:^1.3.1, tiny-invariant@npm:^1.3.3": version: 1.3.3 resolution: "tiny-invariant@npm:1.3.3" checksum: 65af4a07324b591a059b35269cd696aba21bef2107f29b9f5894d83cc143159a204b299553435b03874ebb5b94d019afa8b8eff241c8a4cfee95872c2e1c1c4a From b3fa8c56daa4d57e62b34a01b20f993ae3fc74a2 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Wed, 6 Mar 2024 18:10:41 +0100 Subject: [PATCH 05/70] load refs in sequence, await writing to state --- code/lib/manager-api/src/modules/refs.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code/lib/manager-api/src/modules/refs.ts b/code/lib/manager-api/src/modules/refs.ts index bc4b94755a53..34e1574b3e2a 100644 --- a/code/lib/manager-api/src/modules/refs.ts +++ b/code/lib/manager-api/src/modules/refs.ts @@ -276,7 +276,7 @@ export const init: ModuleFn = ( return refs; }, - setRef: (id, { storyIndex, setStoriesData, ...rest }, ready = false) => { + setRef: async (id, { storyIndex, setStoriesData, ...rest }, ready = false) => { if (singleStory) { return; } @@ -307,10 +307,10 @@ export const init: ModuleFn = ( index = addRefIds(index, ref); } - api.updateRef(id, { ...ref, ...rest, index, internal_index }); + await api.updateRef(id, { ...ref, ...rest, index, internal_index }); }, - updateRef: (id, data) => { + updateRef: async (id, data) => { const { [id]: ref, ...updated } = api.getRefs(); updated[id] = { ...ref, ...data }; @@ -320,7 +320,7 @@ export const init: ModuleFn = ( return obj; }, {}); - store.setState({ + await store.setState({ refs: ordered, }); }, @@ -331,9 +331,10 @@ export const init: ModuleFn = ( const initialState: SubState['refs'] = refs; if (runCheck) { - Object.entries(refs).forEach(([id, ref]) => { - api.checkRef({ ...ref!, stories: {} } as API_SetRefData); - }); + Object.entries(refs).reduce(async (accc, [id, ref]) => { + await accc; + await api.checkRef({ ...ref!, stories: {} } as API_SetRefData); + }, Promise.resolve()); } return { From b045da1682eebf623f822e044df1069fd70b4298 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Wed, 6 Mar 2024 19:56:18 +0100 Subject: [PATCH 06/70] rename & fix test --- code/lib/manager-api/src/modules/refs.ts | 4 ++-- code/lib/manager-api/src/tests/refs.test.ts | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/code/lib/manager-api/src/modules/refs.ts b/code/lib/manager-api/src/modules/refs.ts index 34e1574b3e2a..f783f7db6496 100644 --- a/code/lib/manager-api/src/modules/refs.ts +++ b/code/lib/manager-api/src/modules/refs.ts @@ -331,8 +331,8 @@ export const init: ModuleFn = ( const initialState: SubState['refs'] = refs; if (runCheck) { - Object.entries(refs).reduce(async (accc, [id, ref]) => { - await accc; + Object.entries(refs).reduce(async (acc, [id, ref]) => { + await acc; await api.checkRef({ ...ref!, stories: {} } as API_SetRefData); }, Promise.resolve()); } diff --git a/code/lib/manager-api/src/tests/refs.test.ts b/code/lib/manager-api/src/tests/refs.test.ts index 791325c27337..af16eee0bbfa 100644 --- a/code/lib/manager-api/src/tests/refs.test.ts +++ b/code/lib/manager-api/src/tests/refs.test.ts @@ -171,6 +171,9 @@ describe('Refs API', () => { // given initRefs({ provider, store } as any); + // the `runCheck` is async, so we need to wait for it to finish + await Promise.resolve(); + expect(fetchMock.mock.calls).toMatchInlineSnapshot(` [ [ @@ -207,6 +210,9 @@ describe('Refs API', () => { }; initRefs({ provider, store } as any); + // the `runCheck` is async, so we need to wait for it to finish + await Promise.resolve(); + expect(fetchMock.mock.calls).toMatchInlineSnapshot(` [ [ From 414193b9365fe7a9f6735e50cc6b7beb8365ef04 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Wed, 6 Mar 2024 21:12:26 +0100 Subject: [PATCH 07/70] improve understandability of the test --- code/lib/manager-api/src/tests/refs.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/lib/manager-api/src/tests/refs.test.ts b/code/lib/manager-api/src/tests/refs.test.ts index af16eee0bbfa..950b5e3e7a63 100644 --- a/code/lib/manager-api/src/tests/refs.test.ts +++ b/code/lib/manager-api/src/tests/refs.test.ts @@ -172,7 +172,7 @@ describe('Refs API', () => { initRefs({ provider, store } as any); // the `runCheck` is async, so we need to wait for it to finish - await Promise.resolve(); + await vi.waitFor(() => fetchMock.mock.calls.length > 0); expect(fetchMock.mock.calls).toMatchInlineSnapshot(` [ @@ -211,7 +211,7 @@ describe('Refs API', () => { initRefs({ provider, store } as any); // the `runCheck` is async, so we need to wait for it to finish - await Promise.resolve(); + await vi.waitFor(() => fetchMock.mock.calls.length > 0); expect(fetchMock.mock.calls).toMatchInlineSnapshot(` [ From e76e062988e8599f1fe65ad21ab6063ac473eb22 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Thu, 29 Feb 2024 16:44:23 -0700 Subject: [PATCH 08/70] Add `angular` framework doc --- code/frameworks/angular/README.md | 323 +------------ docs/get-started/angular.md | 440 ++++++++++++++++++ .../angular/angular-add-framework.js.mdx | 7 + .../angular/angular-add-framework.ts.mdx | 11 + .../angular/angular-install.npm.js.mdx | 3 + .../angular/angular-install.pnpm.js.mdx | 3 + .../angular/angular-install.yarn.js.mdx | 3 + docs/toc.js | 5 + 8 files changed, 473 insertions(+), 322 deletions(-) create mode 100644 docs/get-started/angular.md create mode 100644 docs/snippets/angular/angular-add-framework.js.mdx create mode 100644 docs/snippets/angular/angular-add-framework.ts.mdx create mode 100644 docs/snippets/angular/angular-install.npm.js.mdx create mode 100644 docs/snippets/angular/angular-install.pnpm.js.mdx create mode 100644 docs/snippets/angular/angular-install.yarn.js.mdx diff --git a/code/frameworks/angular/README.md b/code/frameworks/angular/README.md index d97e1ab93f2a..4bfadb7f16f4 100644 --- a/code/frameworks/angular/README.md +++ b/code/frameworks/angular/README.md @@ -1,324 +1,3 @@ # Storybook for Angular -- [Storybook for Angular](#storybook-for-angular) - - [Getting Started](#getting-started) - - [Setup Storybook for your Angular projects](#setup-storybook-for-your-angular-projects) - - [Run Storybook](#run-storybook) - - [Setup Compodoc](#setup-compodoc) - - [Automatic setup](#automatic-setup) - - [Manual setup](#manual-setup) - - [moduleMetadata decorator](#modulemetadata-decorator) - - [applicationConfig decorator](#applicationconfig-decorator) - - [FAQ](#faq) - - [How do I migrate to an Angular Storybook builder?](#how-do-i-migrate-to-an-angular-storybook-builder) - - [Do you have only one Angular project in your workspace?](#do-you-have-only-one-angular-project-in-your-workspace) - - [Adjust your `package.json`](#adjust-your-packagejson) - - [I have multiple projects in my Angular workspace](#i-have-multiple-projects-in-my-angular-workspace) - -Storybook for Angular is a UI development environment for your Angular components. -With it, you can visualize different states of your UI components and develop them interactively. - -![Storybook Screenshot](https://github.com/storybookjs/storybook/blob/main/media/storybook-intro.gif) - -Storybook runs outside of your app. -So you can develop UI components in isolation without worrying about app specific dependencies and requirements. - -## Getting Started - -```sh -cd my-angular-app -npx storybook@latest init -``` - -## Setup Storybook for your Angular projects - -Storybook supports Angular multi-project workspace. You can setup Storybook for each project in the workspace. When running `npx storybook@latest init` you will be asked for which project Storybook should be set up. Essentially, during initialization, the `.storybook` folder will be created and the `angular.json` will be edited to add the Storybook configuration for the selected project. The configuration looks approximately like this: - -```json -// angular.json -{ - ... - "projects": { - ... - "your-project": { - ... - "architect": { - ... - "storybook": { - "builder": "@storybook/angular:start-storybook", - "options": { - // the path to the storybook config directory - "configDir": ".storybook", - // the build target of your project - "browserTarget": "your-project:build", - // the port you want to start Storybook on - "port": 6006 - // further options are available and can be found in - // https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular/src/builders/start-storybook/schema.json - } - }, - "build-storybook": { - "builder": "@storybook/angular:build-storybook", - "options": { - "configDir": ".storybook", - "browserTarget": "your-project:build", - "outputDir": "dist/storybook/your-project" - // further options are available and can be found in - // https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular/src/builders/build-storybook/schema.json - } - } - } - } - } -} -``` - -## Run Storybook - -To run Storybook for a particular project, please run: - -```sh -ng run :storybook -``` - -To build Storybook, run: - -```sh -ng run :build-storybook -``` - -You will find the output in `dist/storybook/your-project`. - -For more information visit: [storybook.js.org](https://storybook.js.org) - -## Setup Compodoc - -You can include JSDoc comments above components, directives, and other parts of your Angular code to include documentation for those elements. Compodoc uses these comments to generate documentation for your application. In Storybook, it is useful to add explanatory comments above @Inputs and @Outputs, since these are the main elements that Storybook displays in its user interface. The @Inputs and @Outputs are the elements that you can interact with in Storybook, such as controls. - -### Automatic setup - -When installing Storybook via `sb init`, you will be given the option to set up Compodoc automatically. - -### Manual setup - -If you have already installed Storybook, you can set up Compodoc manually. - -Install the following dependencies: - -```sh -npm i -D @compodoc/compodoc -``` - -Add the following option to your to the Storybook Builder: - -```json -{ - ... - "projects": { - ... - "your-project": { - ... - "architect": { - ... - "storybook": { - "builder": "@storybook/angular:start-storybook", - "options": { - ... - "compodoc": true, - "compodocArgs": [ - "-e", - "json", - "-d", - // Where to store the generated documentation. It's usually the root of your Angular project. It's not necessarily the root of your Angular Workspace! - "." - ], - } - }, - "build-storybook": { - "builder": "@storybook/angular:build-storybook", - "options": { - ... - "compodoc": true, - "compodocArgs": [ - "-e", - "json", - "-d", - "." - ], - } - } - } - } - } -} -``` - -Go to your `.storybook/preview.js` and add the following: - -```js -import { setCompodocJson } from '@storybook/addon-docs/angular'; -import docJson from '../documentation.json'; -setCompodocJson(docJson); - -const preview: Preview = { - ... -}; - -export default preview; -``` - -## moduleMetadata decorator - -If your component has dependencies on other Angular directives and modules, these can be supplied using the moduleMetadata decorator either for all stories or for individual stories. - -```js -import { StoryFn, Meta, moduleMetadata } from '@storybook/angular'; -import { SomeComponent } from './some.component'; - -export default { - component: SomeComponent, - decorators: [ - // Apply metadata to all stories - moduleMetadata({ - // import necessary ngModules or standalone components - imports: [...], - // declare components that are used in the template - declarations: [...], - // List of providers that should be available to the root component and all its children. - providers: [...], - }), - ], -} as Meta; - -const Template = (): StoryFn => (args) => ({ - props: args, -}); - -export const Base = Template(); - -export const WithCustomProvider = Template(); -WithCustomProvider.decorators = [ - // Apply metadata to a specific story - moduleMetadata({ - imports: [...], - declarations: [...], - providers: [...] - }), -]; -``` - -## applicationConfig decorator - -If your component relies on application-wide providers, like the ones defined by BrowserAnimationsModule or any other modules which use the forRoot pattern to provide a ModuleWithProviders, you can use the applicationConfig decorator on the meta default export to provide them to the [bootstrapApplication function](https://angular.io/guide/standalone-components#configuring-dependency-injection), which we use to bootstrap the component in Storybook. - -```js - -import { StoryObj, Meta, applicationConfig } from '@storybook/angular'; -import { BrowserAnimationsModule, provideAnimations } from '@angular/platform-browser/animations'; -import { importProvidersFrom } from '@angular/core'; -import { ChipsModule } from './angular-src/chips.module'; - -const meta: Meta = { - component: ChipsGroupComponent, - decorators: [ - // Apply application config to all stories - applicationConfig({ - // List of providers and environment providers that should be available to the root component and all its children. - providers: [ - ... - // Import application-wide providers from a module - importProvidersFrom(BrowserAnimationsModule) - // Or use provide-style functions if available instead, e.g. - provideAnimations() - ], - }), - ], -}; - -export default meta; - -type Story = StoryObj; - -export const WithCustomApplicationProvider: Story = { - render: () => ({ - // Apply application config to a specific story - applicationConfig: { - // The providers will be merged with the ones defined in the applicationConfig decorators providers array of the global meta object - providers: [...] - } - }) -} -``` - -## FAQ - -### How do I migrate to an Angular Storybook builder? - -The Storybook [Angular builder](https://angular.io/guide/glossary#builder) is a new way to run Storybook in an Angular workspace. It is a drop-in replacement for running `storybook dev` and `storybook build` directly. - -You can run `npx storybook@next automigrate` to try let Storybook detect and automatically fix your configuration. Otherwise, you can follow the next steps to manually adjust your configuration. - -#### Do you have only one Angular project in your workspace? - -In this case go to your `angular.json` and add `storybook` and `build-storybook` entries in `architect` section of your project like shown above. - -##### Adjust your `package.json` - -Go to your `package.json` and adjust your script section. Usually, it will look like this: - -```json -{ - "scripts": { - "storybook": "start-storybook -p 6006", // or `storybook dev -p 6006` - "build-storybook": "build-storybook" // or `storybook build` - } -} -``` - -Now, you can run Storybook with `ng run :storybook` and build it with `ng run :build-storybook`. Adjust the scripts in your `package.json` accordingly. - -```json -{ - "scripts": { - "storybook": "ng run :storybook", // or `storybook dev -p 6006` - "build-storybook": "ng run :build-storybook" // or `storybook build` - } -} -``` - -Also remove the compodoc part in your script section if you have set it up previously. -It is now built-in in `@storybook/angular` and you don't have to call it explicitly: - -```json -{ - "scripts": { - "docs:json": "compodoc -p tsconfig.json -e json -d ./documentation", - "storybook": "npm run docs:json && start-storybook -p 6006", - "build-storybook": "npm run docs:json && build-storybook" - } -} -``` - -Change it to: - -```json -{ - "scripts": { - "storybook": "ng run :storybook", - "build-storybook": "ng run :build-storybook" - } -} -``` - -#### I have multiple projects in my Angular workspace - -In this case you have to adjust your `angular.json` and `package.json` as described above for each project in which you want to use Storybook. Please note, that each project should have a dedicated `.storybook` folder, which should be placed in the root of the project. - -You can run `npx sb init` sequentially for each project to setup Storybook for each of them to automatically create the `.storybook` folder and create the necessary configuration in your `angular.json`. - -You can then use [Storybook composition](https://storybook.js.org/docs/angular/sharing/storybook-composition) to composite multiple Storybooks into one. - ---- - -Storybook also comes with a lot of [addons](https://storybook.js.org/addons) and a great API to customize as you wish. -You can also build a [static version](https://storybook.js.org/docs/angular/sharing/publish-storybook) of your Storybook and deploy it anywhere you want. +See [documentation](https://storybook.js.org/docs/8.0/get-started/angular?renderer=angular) for installation instructions, usage examples, APIs, and more. diff --git a/docs/get-started/angular.md b/docs/get-started/angular.md new file mode 100644 index 000000000000..0ba81ea5c1e9 --- /dev/null +++ b/docs/get-started/angular.md @@ -0,0 +1,440 @@ +--- +title: Storybook for Angular +--- + +export const SUPPORTED_RENDERER = 'angular'; + +Storybook for Angular is a [framework](../contribute/framework.md) that makes it easy to develop and test UI components in isolation for [Angular](https://angular.io/) applications. It includes: + +- 🧱 Uses Angular builders +- 🎛️ Compodoc integration +- 💫 and more! + + + + + +Storybook for Angular is only supported in [Angular](?renderer=angular) projects. + + + + + + + + + +## Requirements + +- Angular ≥ 14.1.0 < 18.0.0 +- Webpack ≥ 5.0 +- Storybook ≥ 7.0 + +## Getting started + +### In a project without Storybook + +Follow the prompts after running this command in your Angular project's root directory: + + + + + + + +[More on getting started with Storybook.](./install.md) + +### In a project with Storybook + +This framework is designed to work with Storybook 7+. If you’re not already using v7, upgrade with this command: + + + + + + + +#### Automatic migration + +When running the `upgrade` command above, you should get a prompt asking you to migrate to `@storybook/angular`, which should handle everything for you. In case that auto-migration does not work for your project, refer to the manual migration below. + +#### Manual migration + +First, install the framework: + + + + + + + +Then, update your `.storybook/main.js|ts` to change the framework property: + + + + + + + +Finally, update your `angular.json` to include the Storybook builder: + +```jsonc +// angular.json +{ + ... + "projects": { + ... + "your-project": { + ... + "architect": { + ... + "storybook": { + "builder": "@storybook/angular:start-storybook", + "options": { + // The path to the storybook config directory + "configDir": ".storybook", + // The build target of your project + "browserTarget": "your-project:build", + // The port you want to start Storybook on + "port": 6006 + // More options available, documented here: + // https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular/src/builders/start-storybook/schema.json + } + }, + "build-storybook": { + "builder": "@storybook/angular:build-storybook", + "options": { + "configDir": ".storybook", + "browserTarget": "your-project:build", + "outputDir": "dist/storybook/your-project" + // More options available, documented here: + // https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular/src/builders/build-storybook/schema.json + } + } + } + } + } +} +``` + +## Run Storybook + +To run Storybook for a particular project, please run: + +```sh +ng run :storybook +``` + +To build Storybook, run: + +```sh +ng run :build-storybook +``` + +You will find the output in the configured `outputDir` (default is `dist/storybook/`). + +## Setup Compodoc + +You can include JSDoc comments above components, directives, and other parts of your Angular code to include documentation for those elements. Compodoc uses these comments to [generate documentation](../writing-docs/autodocs.md) for your application. In Storybook, it is useful to add explanatory comments above `@Inputs` and `@Outputs`, since these are the main elements that Storybook displays in its user interface. The `@Inputs` and `@Outputs` are the elements that you can interact with in Storybook, such as [controls](../essentials/controls.md). + +### Automatic setup + +When installing Storybook via `npx storybook@latest init`, you will be given the option to set up Compodoc automatically. + +### Manual setup + +If you have already installed Storybook, you can set up Compodoc manually. + +Install the following dependencies: + +```sh +npm install --save-dev @compodoc/compodoc +``` + +Add the following option to your Storybook Builder: + +```jsonc +// angular.json +{ + ... + "projects": { + ... + "your-project": { + ... + "architect": { + ... + "storybook": { + "builder": "@storybook/angular:start-storybook", + "options": { + ... + // 👇 Add these + "compodoc": true, + "compodocArgs": [ + "-e", + "json", + "-d", + // Where to store the generated documentation. It's usually the root of your Angular project. It's not necessarily the root of your Angular Workspace! + "." + ], + } + }, + "build-storybook": { + "builder": "@storybook/angular:build-storybook", + "options": { + ... + // 👇 Add these + "compodoc": true, + "compodocArgs": [ + "-e", + "json", + "-d", + "." + ], + } + } + } + } + } +} +``` + +Go to your `.storybook/preview.js` and add the following: + +```js +// .storybook/preview.js +// 👇 Add these +import { setCompodocJson } from '@storybook/addon-docs/angular'; +import docJson from '../documentation.json'; +setCompodocJson(docJson); + +// ... rest of file +``` + +## `applicationConfig` decorator + +If your component relies on application-wide providers, like the ones defined by BrowserAnimationsModule or any other modules which use the forRoot pattern to provide a ModuleWithProviders, you can apply the `applicationConfig` [decorator](../writing-stories/decorators.md) to all stories for that component. This will provide them to the [bootstrapApplication function](https://angular.io/guide/standalone-components#configuring-dependency-injection), which is used to bootstrap the component in Storybook. + +```ts +// ChipsModule.stories.ts +import { Meta, applicationConfig, StoryObj } from '@storybook/angular'; +import { BrowserAnimationsModule, provideAnimations } from '@angular/platform-browser/animations'; +import { importProvidersFrom } from '@angular/core'; + +import { ChipsModule } from './angular-src/chips.module'; + +const meta: Meta = { + component: ChipsModule, + decorators: [ + // Apply application config to all stories + applicationConfig({ + // List of providers and environment providers that should be available to the root component and all its children. + providers: [ + ... + // Import application-wide providers from a module + importProvidersFrom(BrowserAnimationsModule) + // Or use provide-style functions if available instead, e.g. + provideAnimations() + ], + }), + ], +}; + +export default meta; + +type Story = StoryObj; + +export const WithCustomApplicationProvider: Story = { + render: () => ({ + // Apply application config to a specific story + applicationConfig: { + // The providers will be merged with the ones defined in the applicationConfig decorators providers array of the global meta object + providers: [...], + } + }) +} +``` + +## `moduleMetadata` decorator + +If your component has dependencies on other Angular directives and modules, these can be supplied using the `moduleMetadata` [decorator](../writing-stories/decorators.md) either for all stories of a component or for individual stories. + +```ts +// YourComponent.stories.ts +import { Meta, moduleMetadata, StoryObj } from '@storybook/angular'; + +import { YourComponent } from './your.component'; + +const meta: Meta = { + component: YourComponent, + decorators: [ + // Apply metadata to all stories + moduleMetadata({ + // import necessary ngModules or standalone components + imports: [...], + // declare components that are used in the template + declarations: [...], + // List of providers that should be available to the root component and all its children. + providers: [...], + }), + ], +}; +export default meta; + +type Story = StoryObj; + +export const Base: Story = {}; + +export const WithCustomProvider: Story = { + decorators: [ + // Apply metadata to a specific story + moduleMetadata({ + imports: [...], + declarations: [...], + providers: [...], + }), + ], +}; +``` + +## FAQ + +### How do I migrate to an Angular Storybook builder? + +The Storybook [Angular builder](https://angular.io/guide/glossary#builder) is a way to run Storybook in an Angular workspace. It is a drop-in replacement for running `storybook dev` and `storybook build` directly. + +You can run `npx storybook@next automigrate` to try let Storybook detect and automatically fix your configuration. Otherwise, you can follow the next steps to manually adjust your configuration. + +#### Do you have only one Angular project in your workspace? + +First, go to your `angular.json` and add `storybook` and `build-storybook` entries in `architect` section of your project like shown above. + +Second, adjust your `package.json` script section. Usually, it will look like this: + +```jsonc +{ + "scripts": { + "storybook": "start-storybook -p 6006", // or `storybook dev -p 6006` + "build-storybook": "build-storybook" // or `storybook build` + } +} +``` + +Now, you can run Storybook with `ng run :storybook` and build it with `ng run :build-storybook`. Adjust the scripts in your `package.json` accordingly. + +```json +{ + "scripts": { + "storybook": "ng run :storybook", + "build-storybook": "ng run :build-storybook" + } +} +``` + +Also compodoc is now built-in in `@storybook/angular` and you don't have to call it explicitly. If were running compodoc in your `package.json` scripts like this: + +```json +{ + "scripts": { + "docs:json": "compodoc -p tsconfig.json -e json -d ./documentation", + "storybook": "npm run docs:json && start-storybook -p 6006", + "build-storybook": "npm run docs:json && build-storybook" + } +} +``` + +Change it to: + +```json +{ + "scripts": { + "storybook": "ng run :storybook", + "build-storybook": "ng run :build-storybook" + } +} +``` + +#### I have multiple projects in my Angular workspace + +In this case you have to adjust your `angular.json` and `package.json` as described above for each project in which you want to use Storybook. Please note, that each project should have a dedicated `.storybook` folder, which should be placed in the root of the project. + +You can run `npx storybook@latest init` sequentially for each project to setup Storybook for each of them to automatically create the `.storybook` folder and create the necessary configuration in your `angular.json`. + +You can then use [Storybook composition](https://storybook.js.org/docs/angular/sharing/storybook-composition) to composite multiple Storybooks into one. + +### How do I configure Angular's builder for Storybook?v + +These are the supported options for the Angular builder: + +| Configuration element | Description | +| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `"browserTarget"` | Build target to be served using the following format.
`"example-project:builder:config"` | +| `"tsConfig"` | Location of the TypeScript configuration file, relative to the current workspace.
`"tsConfig": "./tsconfig.json"`. | +| `"port"` | Port used by Storybook.
`"port": 6006` | +| `"host"` | Set up a custom host for Storybook.
`"host": "http://my-custom-host"` | +| `"configDir"` | Storybook configuration directory location.
`"configDir": ".storybook"` | +| `"https"` | Starts Storybook with HTTPS enabled.
`"https": true`
Requires custom certificate information. | +| `"sslCa"` | Provides an SSL certificate authority.
`"sslCa": "your-custom-certificate-authority"`
Optional usage with `"https"` | +| `"sslCert"` | Provides an SSL certificate.
`"sslCert": "your-custom-certificate"`
Required for `https` | +| `"sslKey"` | Provides an SSL key to serve Storybook.
`"sslKey": "your-ssl-key"` | +| `"smokeTest"` | Exit Storybook after successful start.
`"smokeTest": true` | +| `"ci"` | Starts Storybook in CI mode (skips interactive prompts and will not open browser window).
`"ci": true` | +| `"quiet"` | Filters Storybook verbose build output.
`"quiet": true` | +| `"docs"` | Starts Storybook in [documentation mode](../writing-docs/build-documentation.md#preview-storybooks-documentation).
`"docs": true` | +| `"styles"` | Provide the location of the [application's styles](../configure/styling-and-css.md#importing-css-files) to be used with Storybook.
`"styles": ["src/styles.css", "src/styles.scss"]`
| +| `"stylePreprocessorOptions"` | Provides further customization for style preprocessors resolved to the workspace root.
`"stylePreprocessorOptions": { "includePaths": ["src/styles"] }` | + +## API + +### Options + +You can pass an options object for additional configuration if needed: + +```js +// .storybook/main.js +import * as path from 'path'; + +export default { + // ... + framework: { + name: '@storybook/angular', + options: { + // ... + }, + }, +}; +``` + +The available options are: + +#### `builder` + +Type: `Record` + +Configure options for the [framework's builder](../api/main-config-framework.md#optionsbuilder). For Angular, , available options can be found in the [Webpack builder docs](../builders/webpack.md). + + + +
diff --git a/docs/snippets/angular/angular-add-framework.js.mdx b/docs/snippets/angular/angular-add-framework.js.mdx new file mode 100644 index 000000000000..00e5c2474ab6 --- /dev/null +++ b/docs/snippets/angular/angular-add-framework.js.mdx @@ -0,0 +1,7 @@ +```js +// .storybook/main.js +export default { + // ... + framework: '@storybook/angular', // 👈 Add this +}; +``` diff --git a/docs/snippets/angular/angular-add-framework.ts.mdx b/docs/snippets/angular/angular-add-framework.ts.mdx new file mode 100644 index 000000000000..cdc3c6ccd1e3 --- /dev/null +++ b/docs/snippets/angular/angular-add-framework.ts.mdx @@ -0,0 +1,11 @@ +```ts +// .storybook/main.ts +import { StorybookConfig } from '@storybook/angular'; + +const config: StorybookConfig = { + // ... + framework: '@storybook/angular', // 👈 Add this +}; + +export default config; +``` diff --git a/docs/snippets/angular/angular-install.npm.js.mdx b/docs/snippets/angular/angular-install.npm.js.mdx new file mode 100644 index 000000000000..c8728d58c565 --- /dev/null +++ b/docs/snippets/angular/angular-install.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm install --save-dev @storybook/angular +``` diff --git a/docs/snippets/angular/angular-install.pnpm.js.mdx b/docs/snippets/angular/angular-install.pnpm.js.mdx new file mode 100644 index 000000000000..5467721722b2 --- /dev/null +++ b/docs/snippets/angular/angular-install.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm install --save-dev @storybook/angular +``` diff --git a/docs/snippets/angular/angular-install.yarn.js.mdx b/docs/snippets/angular/angular-install.yarn.js.mdx new file mode 100644 index 000000000000..9943e0163db2 --- /dev/null +++ b/docs/snippets/angular/angular-install.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn add --dev @storybook/angular +``` diff --git a/docs/toc.js b/docs/toc.js index b7ee152fb8c6..afaf9ea6164d 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -23,6 +23,11 @@ module.exports = { title: 'Frameworks', type: 'menu', children: [ + { + pathSegment: 'angular', + title: 'Angular', + type: 'link', + }, { pathSegment: 'nextjs', title: 'Next.js', From 8f3b3b84eef04798c043eadb7cfe9b299740177d Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Thu, 7 Mar 2024 11:30:41 +0100 Subject: [PATCH 09/70] CLI: Fix doctor compatibility check --- .../src/doctor/getIncompatibleStorybookPackages.ts | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts index d27694136074..09f0c40d5bb9 100644 --- a/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts +++ b/code/lib/cli/src/doctor/getIncompatibleStorybookPackages.ts @@ -19,12 +19,6 @@ type Context = { skipErrors?: boolean; }; -const isPackageIncompatible = (installedVersion: string, currentStorybookVersion: string) => { - const storybookVersion = semver.coerce(currentStorybookVersion); - const packageVersion = semver.coerce(installedVersion); - return storybookVersion?.major !== packageVersion?.major; -}; - export const checkPackageCompatibility = async (dependency: string, context: Context) => { const { currentStorybookVersion, skipErrors, packageManager } = context; try { @@ -46,12 +40,12 @@ export const checkPackageCompatibility = async (dependency: string, context: Con ...peerDependencies, }) .filter(([dep]) => storybookCorePackages[dep as keyof typeof storybookCorePackages]) - .find(([, version]) => { + .find(([_, versionRange]) => { // prevent issues with "tag" based versions e.g. "latest" or "next" instead of actual numbers return ( - version && - semver.validRange(version) && - isPackageIncompatible(version, currentStorybookVersion) + versionRange && + semver.validRange(versionRange) && + !semver.satisfies(currentStorybookVersion, versionRange) ); }); From 880479789f6cdadf5b47874ae1eb78ecd64ba786 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 7 Mar 2024 14:54:07 +0100 Subject: [PATCH 10/70] add an automigration for upgrading dependencies --- code/lib/cli/src/automigrate/fixes/index.ts | 8 +- .../upgrade-storybook-related-dependencies.ts | 105 ++++++++++++++++++ code/lib/cli/src/automigrate/index.ts | 21 +++- code/lib/cli/src/automigrate/types.ts | 7 +- .../getIncompatibleStorybookPackages.ts | 12 ++ code/lib/cli/src/upgrade.ts | 3 +- 6 files changed, 144 insertions(+), 12 deletions(-) create mode 100644 code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts diff --git a/code/lib/cli/src/automigrate/fixes/index.ts b/code/lib/cli/src/automigrate/fixes/index.ts index 17b3d4942be1..01bdc2b2aa94 100644 --- a/code/lib/cli/src/automigrate/fixes/index.ts +++ b/code/lib/cli/src/automigrate/fixes/index.ts @@ -26,10 +26,11 @@ import { removeJestTestingLibrary } from './remove-jest-testing-library'; import { addonsAPI } from './addons-api'; import { mdx1to3 } from './mdx-1-to-3'; import { addonPostCSS } from './addon-postcss'; +import { upgradeStorybookRelatedDependencies } from './upgrade-storybook-related-dependencies'; export * from '../types'; -export const allFixes: Fix[] = [ +export const allFixes = [ addonsAPI, newFrameworks, cra5, @@ -56,6 +57,7 @@ export const allFixes: Fix[] = [ removeLegacyMDX1, webpack5CompilerSetup, mdx1to3, -]; + upgradeStorybookRelatedDependencies, +] satisfies Fix[]; -export const initFixes: Fix[] = [eslintPlugin]; +export const initFixes = [eslintPlugin] satisfies Fix[]; diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts new file mode 100644 index 000000000000..234b35a1451c --- /dev/null +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -0,0 +1,105 @@ +import { dedent } from 'ts-dedent'; +import type { Fix } from '../types'; +import { underline } from 'chalk'; +import { getIncompatibleStorybookPackages } from '../../doctor/getIncompatibleStorybookPackages'; + +interface Options { + list: { packageName: string; version: string }[]; +} + +type ExcludesFalse = (x: T | undefined) => x is T; + +/** + * Is the user upgrading to the `latest` version of Storybook? + * Let's try to pull along some of the storybook related dependencies to `latest` as well! + * + * We communicate clearly that this migration is a helping hand, but not a complete solution. + * The user should still manually check for other dependencies that might be incompatible. + * + * see: https://github.com/storybookjs/storybook/issues/25731#issuecomment-1977346398 + */ +export const upgradeStorybookRelatedDependencies = { + id: 'upgradeStorybookRelatedDependencies', + + versionRange: ['<8', '>=8'], + + async check({ packageManager, storybookVersion }) { + const out = await getIncompatibleStorybookPackages({ + currentStorybookVersion: storybookVersion, + packageManager, + skipErrors: true, + }); + + const list = await Promise.all( + out.map(async ({ packageName, hasIncompatibleDependencies }) => { + if (!hasIncompatibleDependencies) { + return; + } + + return { + packageName, + version: await packageManager.latestVersion(packageName), + }; + }) + ); + + const filtered = list.filter(Boolean as any as ExcludesFalse); + return { list: filtered }; + }, + + promptType: 'auto-no', + + prompt({ list }) { + return dedent` + You're upgrading to the latest version of Storybook. We recommend upgrading the following packages: + ${list.map(({ packageName, version }) => `${packageName}@${version}`).join(', ')} + + We detected those packages are incompatible with the latest version of Storybook. + ${underline( + `The list might be incomplete, so it's advised to upgrade dependencies manually, but this automigration can help you get started.` + )} + + After upgrading, we will run the dedupe command, which could possibly have effects on dependencies that are not storybook related. + see: https://docs.npmjs.com/cli/commands/npm-dedupe + + Do you want to proceed (upgrade the detected packages)? + `; + }, + + async run({ result: { list }, packageManager, dryRun, mainConfigPath }) { + if (dryRun) { + console.log(dedent` + would have upgrade the following: + ${list.map(({ packageName, version }) => `${packageName}@${version}`).join('\n')} + `); + return; + } + + const packageJson = await packageManager.readPackageJson(); + + // mutate the packageJson data + list.forEach((item) => { + if (!item) { + return; + } + + const { packageName, version } = item; + const prefixed = `^${version}`; + + if (packageJson.dependencies?.[packageName]) { + packageJson.dependencies[packageName] = prefixed; + } + if (packageJson.devDependencies?.[packageName]) { + packageJson.devDependencies[packageName] = prefixed; + } + if (packageJson.peerDependencies?.[packageName]) { + packageJson.peerDependencies[packageName] = prefixed; + } + }); + + await packageManager.writePackageJson(packageJson); + await packageManager.installDependencies(); + + await packageManager.getRunCommand('dedupe'); + }, +} satisfies Fix; diff --git a/code/lib/cli/src/automigrate/index.ts b/code/lib/cli/src/automigrate/index.ts index 8a84476b5e93..843b8f4371d6 100644 --- a/code/lib/cli/src/automigrate/index.ts +++ b/code/lib/cli/src/automigrate/index.ts @@ -29,6 +29,8 @@ import { getMigrationSummary } from './helpers/getMigrationSummary'; import { getStorybookData } from './helpers/mainConfigFile'; import { doctor } from '../doctor'; +import { upgradeStorybookRelatedDependencies } from './fixes/upgrade-storybook-related-dependencies'; + const logger = console; const LOG_FILE_NAME = 'migration-storybook.log'; const LOG_FILE_PATH = join(process.cwd(), LOG_FILE_NAME); @@ -121,8 +123,17 @@ export const automigrate = async ({ return null; } - const selectedFixes = inputFixes || allFixes; - const fixes = fixId ? selectedFixes.filter((f) => f.id === fixId) : selectedFixes; + const selectedFixes: Fix[] = + inputFixes || + allFixes.filter((fix) => { + // we only allow this automigration when the user explicitly asks for it, or they are upgrading to the latest version of storybook + if (fix.id === upgradeStorybookRelatedDependencies.id && isUpgrade !== 'latest') { + return false; + } + + return true; + }); + const fixes: Fix[] = fixId ? selectedFixes.filter((f) => f.id === fixId) : selectedFixes; if (fixId && fixes.length === 0) { logger.info(`📭 No migrations found for ${chalk.magenta(fixId)}.`); @@ -143,7 +154,7 @@ export const automigrate = async ({ mainConfigPath, storybookVersion, beforeVersion, - isUpgrade, + isUpgrade: !!isUpgrade, dryRun, yes, }); @@ -308,13 +319,13 @@ export async function runFixes({ fixResults[f.id] = FixStatus.MANUAL_SKIPPED; break; } - } else if (promptType === 'auto') { + } else if (promptType === 'auto' || promptType === 'auto-no') { runAnswer = await prompts( { type: 'confirm', name: 'fix', message: `Do you want to run the '${chalk.cyan(f.id)}' migration on your project?`, - initial: true, + initial: promptType === 'auto-no' ? false : true, }, { onCancel: () => { diff --git a/code/lib/cli/src/automigrate/types.ts b/code/lib/cli/src/automigrate/types.ts index d8cc9f06af3e..45f2b4b72c01 100644 --- a/code/lib/cli/src/automigrate/types.ts +++ b/code/lib/cli/src/automigrate/types.ts @@ -22,10 +22,11 @@ export interface RunOptions { /** * promptType defines how the user will be prompted to apply an automigration fix * - auto: the fix will be applied automatically + * - auto-no: the fix will be applied automatically, but only when the user opts-in * - manual: the user will be prompted to apply the fix * - notification: the user will be notified about some changes. A fix isn't required, though */ -export type Prompt = 'auto' | 'manual' | 'notification'; +export type Prompt = 'auto' | 'auto-no' | 'manual' | 'notification'; type BaseFix = { id: string; @@ -45,7 +46,7 @@ type PromptType = export type Fix = ( | { - promptType?: PromptType; + promptType?: PromptType; run: (options: RunOptions) => Promise; } | { @@ -74,7 +75,7 @@ export interface AutofixOptions extends Omit compare with existing CLI version + +// const norbertStuff = async (dependency: string, context: Context) => { +// const { packageManager } = context; + +// const res = await checkPackageCompatibility(dependency, context); +// if (res.hasIncompatibleDependencies) { +// const hasUpdate = await packageManager.latestVersion(dependency); +// } +// }; + export const checkPackageCompatibility = async (dependency: string, context: Context) => { const { currentStorybookVersion, skipErrors, packageManager } = context; try { diff --git a/code/lib/cli/src/upgrade.ts b/code/lib/cli/src/upgrade.ts index 179c7d806a2f..757ad89bdd7c 100644 --- a/code/lib/cli/src/upgrade.ts +++ b/code/lib/cli/src/upgrade.ts @@ -22,6 +22,7 @@ import { } from '@storybook/core-common'; import { automigrate } from './automigrate/index'; import { autoblock } from './autoblock/index'; +import { is } from '@babel/types'; type Package = { package: string; @@ -261,7 +262,7 @@ export const doUpgrade = async ({ mainConfigPath, beforeVersion, storybookVersion: currentVersion, - isUpgrade: true, + isUpgrade: isOutdated ? true : 'latest', }); } From 54eccd103d247a33c2f3e1b3b9f171e02533938f Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 7 Mar 2024 17:31:50 +0100 Subject: [PATCH 11/70] improvements --- .../upgrade-storybook-related-dependencies.ts | 130 ++++++++++++------ code/lib/cli/src/automigrate/index.ts | 29 +++- code/lib/cli/src/automigrate/types.ts | 6 +- 3 files changed, 112 insertions(+), 53 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts index 234b35a1451c..2a0630960226 100644 --- a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -2,13 +2,13 @@ import { dedent } from 'ts-dedent'; import type { Fix } from '../types'; import { underline } from 'chalk'; import { getIncompatibleStorybookPackages } from '../../doctor/getIncompatibleStorybookPackages'; +import { valid, coerce } from 'semver'; interface Options { - list: { packageName: string; version: string }[]; + upgradable: { packageName: string; version: string }[]; + problematicPackages: { packageName: string; version: string }[]; } -type ExcludesFalse = (x: T | undefined) => x is T; - /** * Is the user upgrading to the `latest` version of Storybook? * Let's try to pull along some of the storybook related dependencies to `latest` as well! @@ -20,36 +20,62 @@ type ExcludesFalse = (x: T | undefined) => x is T; */ export const upgradeStorybookRelatedDependencies = { id: 'upgradeStorybookRelatedDependencies', - - versionRange: ['<8', '>=8'], + versionRange: ['*.*.*', '*.*.*'], + promptType: 'auto', + promptDefaultValue: false, async check({ packageManager, storybookVersion }) { - const out = await getIncompatibleStorybookPackages({ + const packageJson = await packageManager.readPackageJson(); + const analyzed = await getIncompatibleStorybookPackages({ currentStorybookVersion: storybookVersion, packageManager, skipErrors: true, }); - const list = await Promise.all( - out.map(async ({ packageName, hasIncompatibleDependencies }) => { - if (!hasIncompatibleDependencies) { - return; - } + const all = await packageManager.getAllDependencies(); + + const associated = Object.keys(all).filter((dep) => dep.includes('storybook')); + const detected = analyzed + .filter((m) => m.hasIncompatibleDependencies) + .map((m) => m.packageName); + const list = await Promise.all( + Array.from(new Set([...associated, ...detected])).map(async (packageName) => { return { packageName, - version: await packageManager.latestVersion(packageName), + version: await packageManager.latestVersion(packageName).catch((e) => null), }; }) ); - const filtered = list.filter(Boolean as any as ExcludesFalse); - return { list: filtered }; - }, + const data = list.reduce( + (acc, k) => { + const upgradable = !( + !valid(k.version) || + k.version === coerce(packageJson?.dependencies?.[k.packageName])?.toString() || + k.version === coerce(packageJson?.devDependencies?.[k.packageName])?.toString() || + k.version === coerce(packageJson?.peerDependencies?.[k.packageName])?.toString() + ); + + if (upgradable) { + acc.upgradable.push(k); + } else { + acc.problematicPackages.push(k); + } + + return acc; + }, + { upgradable: [], problematicPackages: [] } + ); + + if (data.upgradable.length > 0) { + return data; + } - promptType: 'auto-no', + return null; + }, - prompt({ list }) { + prompt({ upgradable: list }) { return dedent` You're upgrading to the latest version of Storybook. We recommend upgrading the following packages: ${list.map(({ packageName, version }) => `${packageName}@${version}`).join(', ')} @@ -66,40 +92,58 @@ export const upgradeStorybookRelatedDependencies = { `; }, - async run({ result: { list }, packageManager, dryRun, mainConfigPath }) { + async run({ result: { upgradable, problematicPackages }, packageManager, dryRun }) { if (dryRun) { console.log(dedent` - would have upgrade the following: - ${list.map(({ packageName, version }) => `${packageName}@${version}`).join('\n')} + We would have upgrade the following: + ${upgradable.map(({ packageName, version }) => `${packageName}@${version}`).join('\n')} `); return; } - const packageJson = await packageManager.readPackageJson(); + if (upgradable.length > 0) { + const packageJson = await packageManager.readPackageJson(); - // mutate the packageJson data - list.forEach((item) => { - if (!item) { - return; - } - - const { packageName, version } = item; - const prefixed = `^${version}`; - - if (packageJson.dependencies?.[packageName]) { - packageJson.dependencies[packageName] = prefixed; - } - if (packageJson.devDependencies?.[packageName]) { - packageJson.devDependencies[packageName] = prefixed; - } - if (packageJson.peerDependencies?.[packageName]) { - packageJson.peerDependencies[packageName] = prefixed; - } - }); + upgradable.forEach((item) => { + if (!item) { + return; + } + + const { packageName, version } = item; + const prefixed = `^${version}`; + + if (packageJson.dependencies?.[packageName]) { + packageJson.dependencies[packageName] = prefixed; + } + if (packageJson.devDependencies?.[packageName]) { + packageJson.devDependencies[packageName] = prefixed; + } + if (packageJson.peerDependencies?.[packageName]) { + packageJson.peerDependencies[packageName] = prefixed; + } + }); + + await packageManager.writePackageJson(packageJson); + await packageManager.installDependencies(); - await packageManager.writePackageJson(packageJson); - await packageManager.installDependencies(); + await packageManager + .executeCommand({ command: 'dedupe', args: [], stdio: 'ignore' }) + .catch((e) => {}); - await packageManager.getRunCommand('dedupe'); + console.log(dedent` + We upgraded ${upgradable.length} packages: + ${upgradable.map(({ packageName, version }) => `- ${packageName}@${version}`).join('\n')} + `); + } + + if (problematicPackages.length) { + console.log(dedent` + The following packages, could not be upgraded, likely because there's no update available that's compatible with the latest version of Storybook: + ${problematicPackages.map(({ packageName }) => `- ${packageName}`).join('\n')} + + We suggest your reach out to the authors of these packages to get them updated. + But before reporting, please check if there is already an open issue or PR for this. + `); + } }, } satisfies Fix; diff --git a/code/lib/cli/src/automigrate/index.ts b/code/lib/cli/src/automigrate/index.ts index 843b8f4371d6..20cbf98a4166 100644 --- a/code/lib/cli/src/automigrate/index.ts +++ b/code/lib/cli/src/automigrate/index.ts @@ -30,6 +30,7 @@ import { getStorybookData } from './helpers/mainConfigFile'; import { doctor } from '../doctor'; import { upgradeStorybookRelatedDependencies } from './fixes/upgrade-storybook-related-dependencies'; +import dedent from 'ts-dedent'; const logger = console; const LOG_FILE_NAME = 'migration-storybook.log'; @@ -58,8 +59,16 @@ const cleanup = () => { }; const logAvailableMigrations = () => { - const availableFixes = allFixes.map((f) => chalk.yellow(f.id)).join(', '); - logger.info(`\nThe following migrations are available: ${availableFixes}`); + const availableFixes = allFixes + .map((f) => chalk.yellow(f.id)) + .map((x) => `- ${x}`) + .join('\n'); + + console.log(); + logger.info(dedent` + The following migrations are available: + ${availableFixes} + `); }; export const doAutomigrate = async (options: AutofixOptionsFromCLI) => { @@ -86,7 +95,7 @@ export const doAutomigrate = async (options: AutofixOptionsFromCLI) => { throw new Error('Could not determine main config path'); } - await automigrate({ + const outcome = await automigrate({ ...options, packageManager, storybookVersion, @@ -96,7 +105,9 @@ export const doAutomigrate = async (options: AutofixOptionsFromCLI) => { isUpgrade: false, }); - await doctor({ configDir, packageManager: options.packageManager }); + if (outcome) { + await doctor({ configDir, packageManager: options.packageManager }); + } }; export const automigrate = async ({ @@ -127,7 +138,11 @@ export const automigrate = async ({ inputFixes || allFixes.filter((fix) => { // we only allow this automigration when the user explicitly asks for it, or they are upgrading to the latest version of storybook - if (fix.id === upgradeStorybookRelatedDependencies.id && isUpgrade !== 'latest') { + if ( + fix.id === upgradeStorybookRelatedDependencies.id && + isUpgrade !== 'latest' && + fixId !== upgradeStorybookRelatedDependencies.id + ) { return false; } @@ -319,13 +334,13 @@ export async function runFixes({ fixResults[f.id] = FixStatus.MANUAL_SKIPPED; break; } - } else if (promptType === 'auto' || promptType === 'auto-no') { + } else if (promptType === 'auto') { runAnswer = await prompts( { type: 'confirm', name: 'fix', message: `Do you want to run the '${chalk.cyan(f.id)}' migration on your project?`, - initial: promptType === 'auto-no' ? false : true, + initial: f.promptDefaultValue ?? true, }, { onCancel: () => { diff --git a/code/lib/cli/src/automigrate/types.ts b/code/lib/cli/src/automigrate/types.ts index 45f2b4b72c01..8dad3d3d2fa9 100644 --- a/code/lib/cli/src/automigrate/types.ts +++ b/code/lib/cli/src/automigrate/types.ts @@ -22,11 +22,10 @@ export interface RunOptions { /** * promptType defines how the user will be prompted to apply an automigration fix * - auto: the fix will be applied automatically - * - auto-no: the fix will be applied automatically, but only when the user opts-in * - manual: the user will be prompted to apply the fix * - notification: the user will be notified about some changes. A fix isn't required, though */ -export type Prompt = 'auto' | 'auto-no' | 'manual' | 'notification'; +export type Prompt = 'auto' | 'manual' | 'notification'; type BaseFix = { id: string; @@ -38,6 +37,7 @@ type BaseFix = { versionRange: [from: string, to: string]; check: (options: CheckOptions) => Promise; prompt: (result: ResultType) => string; + promptDefaultValue?: boolean; }; type PromptType = @@ -46,7 +46,7 @@ type PromptType = export type Fix = ( | { - promptType?: PromptType; + promptType?: PromptType; run: (options: RunOptions) => Promise; } | { From 0a0ad92fb33562d22ed72bab93ecb74a296cfdd0 Mon Sep 17 00:00:00 2001 From: Joe Vaughan <122215197+joevaugh4n@users.noreply.github.com> Date: Thu, 7 Mar 2024 16:48:57 +0000 Subject: [PATCH 12/70] Update vite-config-file.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit minor typo correction (‘build-in’ to ‘built-in’) --- code/lib/cli/src/automigrate/fixes/vite-config-file.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/vite-config-file.ts b/code/lib/cli/src/automigrate/fixes/vite-config-file.ts index 6a8dd9ec0e02..cec79069212f 100644 --- a/code/lib/cli/src/automigrate/fixes/vite-config-file.ts +++ b/code/lib/cli/src/automigrate/fixes/vite-config-file.ts @@ -97,12 +97,12 @@ export const viteConfigFile = { prompt({ existed, plugins }) { if (existed) { return dedent` - Since version 8.0.0, Storybook no longer ships with a Vite config build-in. + Since version 8.0.0, Storybook no longer ships with an in-built Vite config. We've detected you do have a Vite config, but you may be missing the following plugins in it. ${plugins.map((plugin) => ` - ${plugin}`).join('\n')} - If you do already have these plugins, you can ignore this message. + If you already have these plugins, you can ignore this message. You can find more information on how to do this here: https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-specific-vite-plugins-have-to-be-explicitly-added @@ -111,7 +111,7 @@ export const viteConfigFile = { `; } return dedent` - Since version 8.0.0, Storybook no longer ships with a Vite config build-in. + Since version 8.0.0, Storybook no longer ships with a built-in Vite config. Please add a vite.config.js file to your project root. You can find more information on how to do this here: From 5ee7f99a4dc0a7f2c56e9efc25387beccef29002 Mon Sep 17 00:00:00 2001 From: Joe Vaughan <122215197+joevaugh4n@users.noreply.github.com> Date: Thu, 7 Mar 2024 17:13:47 +0000 Subject: [PATCH 13/70] Update index.md the links were broken for me when viewing this in production! --- docs/migration-guide/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/migration-guide/index.md b/docs/migration-guide/index.md index 70510a941d86..1f08919343ea 100644 --- a/docs/migration-guide/index.md +++ b/docs/migration-guide/index.md @@ -4,9 +4,9 @@ title: 'Migration guide for Storybook 8.0' Storybook 8 focuses on performance and stability. -- 💨 [2-4x faster test builds](/blog/optimize-storybook-7-6/#2-4x-faster-builds-with-thetest-flag), [25-50% faster React docgen](/blog/optimize-storybook-7-6/#22x-faster-react-docgen), and [SWC support for Webpack projects](/blog/optimize-storybook-7-6/#using-webpack-enable-swc) +- 💨 [2-4x faster test builds](https://storybook.com/blog/optimize-storybook-7-6/#2-4x-faster-builds-with-thetest-flag), [25-50% faster React docgen](https://storybook.com/blog/optimize-storybook-7-6/#22x-faster-react-docgen), and [SWC support for Webpack projects](https://storybook.com/blog/optimize-storybook-7-6/#using-webpack-enable-swc) - ✨ Improved framework support: you no longer need to install React as a peer dependency when using a non-React renderer -- 🌐 [Support for React Server Components (RSC)](/blog/storybook-react-server-components/): our experimental solution renders async RSC in the browser and mocks Node code +- 🌐 [Support for React Server Components (RSC)](https://storybook.com/blog/storybook-react-server-components/): our experimental solution renders async RSC in the browser and mocks Node code - ➕ Much, much more This guide is meant to help you **upgrade from Storybook 7.x to 8.0** successfully! From 3356ca218de45201546f35c0e16342ac8809eecb Mon Sep 17 00:00:00 2001 From: Joe Vaughan <122215197+joevaugh4n@users.noreply.github.com> Date: Thu, 7 Mar 2024 17:14:48 +0000 Subject: [PATCH 14/70] Update index.md --- docs/migration-guide/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/migration-guide/index.md b/docs/migration-guide/index.md index 1f08919343ea..3ecf74ddfb57 100644 --- a/docs/migration-guide/index.md +++ b/docs/migration-guide/index.md @@ -4,9 +4,9 @@ title: 'Migration guide for Storybook 8.0' Storybook 8 focuses on performance and stability. -- 💨 [2-4x faster test builds](https://storybook.com/blog/optimize-storybook-7-6/#2-4x-faster-builds-with-thetest-flag), [25-50% faster React docgen](https://storybook.com/blog/optimize-storybook-7-6/#22x-faster-react-docgen), and [SWC support for Webpack projects](https://storybook.com/blog/optimize-storybook-7-6/#using-webpack-enable-swc) +- 💨 [2-4x faster test builds](https://storybook.js.org/blog/optimize-storybook-7-6/#2-4x-faster-builds-with-thetest-flag), [25-50% faster React docgen](https://storybook.js.org/blog/optimize-storybook-7-6/#22x-faster-react-docgen), and [SWC support for Webpack projects](https://storybook.js.org/blog/optimize-storybook-7-6/#using-webpack-enable-swc) - ✨ Improved framework support: you no longer need to install React as a peer dependency when using a non-React renderer -- 🌐 [Support for React Server Components (RSC)](https://storybook.com/blog/storybook-react-server-components/): our experimental solution renders async RSC in the browser and mocks Node code +- 🌐 [Support for React Server Components (RSC)](https://storybook.js.org/blog/storybook-react-server-components/): our experimental solution renders async RSC in the browser and mocks Node code - ➕ Much, much more This guide is meant to help you **upgrade from Storybook 7.x to 8.0** successfully! From 604771126c573dfd2c6cd35df592e96c06847f9a Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 7 Mar 2024 18:16:38 +0100 Subject: [PATCH 15/70] make it look prettier --- .../upgrade-storybook-related-dependencies.ts | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts index 2a0630960226..bed260a4af66 100644 --- a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -1,6 +1,6 @@ import { dedent } from 'ts-dedent'; import type { Fix } from '../types'; -import { underline } from 'chalk'; +import { cyan, underline, yellow } from 'chalk'; import { getIncompatibleStorybookPackages } from '../../doctor/getIncompatibleStorybookPackages'; import { valid, coerce } from 'semver'; @@ -78,7 +78,9 @@ export const upgradeStorybookRelatedDependencies = { prompt({ upgradable: list }) { return dedent` You're upgrading to the latest version of Storybook. We recommend upgrading the following packages: - ${list.map(({ packageName, version }) => `${packageName}@${version}`).join(', ')} + ${list + .map(({ packageName, version }) => `- ${cyan(packageName)}@${cyan(version)}`) + .join('\n')} We detected those packages are incompatible with the latest version of Storybook. ${underline( @@ -130,20 +132,26 @@ export const upgradeStorybookRelatedDependencies = { .executeCommand({ command: 'dedupe', args: [], stdio: 'ignore' }) .catch((e) => {}); + console.log(); console.log(dedent` - We upgraded ${upgradable.length} packages: - ${upgradable.map(({ packageName, version }) => `- ${packageName}@${version}`).join('\n')} - `); + We upgraded ${yellow(upgradable.length)} packages: + ${upgradable + .map(({ packageName, version }) => `- ${cyan(packageName)}@${cyan(version)}`) + .join('\n')} + `); } if (problematicPackages.length) { + console.log(); console.log(dedent` - The following packages, could not be upgraded, likely because there's no update available that's compatible with the latest version of Storybook: - ${problematicPackages.map(({ packageName }) => `- ${packageName}`).join('\n')} + The following packages, could not be upgraded, + likely because there's no update available compatible with the latest version of Storybook: + ${problematicPackages.map(({ packageName }) => `- ${cyan(packageName)}`).join('\n')} We suggest your reach out to the authors of these packages to get them updated. But before reporting, please check if there is already an open issue or PR for this. - `); + `); } + console.log(); }, } satisfies Fix; From 6c5bb5ea71260dcfa056ab00d1a88e88ebb9d39c Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 7 Mar 2024 18:42:00 +0100 Subject: [PATCH 16/70] revert the use of satisfies --- code/lib/cli/src/automigrate/fixes/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/index.ts b/code/lib/cli/src/automigrate/fixes/index.ts index 01bdc2b2aa94..022074fa8301 100644 --- a/code/lib/cli/src/automigrate/fixes/index.ts +++ b/code/lib/cli/src/automigrate/fixes/index.ts @@ -30,7 +30,7 @@ import { upgradeStorybookRelatedDependencies } from './upgrade-storybook-related export * from '../types'; -export const allFixes = [ +export const allFixes: Fix[] = [ addonsAPI, newFrameworks, cra5, @@ -58,6 +58,6 @@ export const allFixes = [ webpack5CompilerSetup, mdx1to3, upgradeStorybookRelatedDependencies, -] satisfies Fix[]; +]; -export const initFixes = [eslintPlugin] satisfies Fix[]; +export const initFixes: Fix[] = [eslintPlugin]; From e0444ac80560ce45e228ba6911a86d4147f3770a Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Thu, 7 Mar 2024 10:50:21 -0700 Subject: [PATCH 17/70] Address comments --- docs/get-started/angular.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/get-started/angular.md b/docs/get-started/angular.md index 0ba81ea5c1e9..e5c706acc1df 100644 --- a/docs/get-started/angular.md +++ b/docs/get-started/angular.md @@ -26,9 +26,9 @@ Storybook for Angular is only supported in [Angular](?renderer=angular) projects ## Requirements -- Angular ≥ 14.1.0 < 18.0.0 +- Angular ≥ 15.0 < 18.0 - Webpack ≥ 5.0 -- Storybook ≥ 7.0 +- Storybook ≥ 8.0 ## Getting started @@ -384,9 +384,9 @@ You can run `npx storybook@latest init` sequentially for each project to setup S You can then use [Storybook composition](https://storybook.js.org/docs/angular/sharing/storybook-composition) to composite multiple Storybooks into one. -### How do I configure Angular's builder for Storybook?v +### How do I configure Angular's builder for Storybook? -These are the supported options for the Angular builder: +These are common options you may need for the Angular builder: | Configuration element | Description | | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | @@ -406,6 +406,11 @@ These are the supported options for the Angular builder: | `"styles"` | Provide the location of the [application's styles](../configure/styling-and-css.md#importing-css-files) to be used with Storybook.
`"styles": ["src/styles.css", "src/styles.scss"]`
| | `"stylePreprocessorOptions"` | Provides further customization for style preprocessors resolved to the workspace root.
`"stylePreprocessorOptions": { "includePaths": ["src/styles"] }` | +The full list of options can be found in the Angular builder schemas: + +- [Build Storybook](https://github.com/storybookjs/storybook/blob/main/code/frameworks/angular/src/builders/build-storybook/schema.json) +- [Start Storybook](https://github.com/storybookjs/storybook/blob/main/code/frameworks/angular/src/builders/start-storybook/schema.json) + ## API ### Options From 4c60e7b900f1d8903ba0de5eadad1e1b5be6bd18 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 7 Mar 2024 18:53:13 +0100 Subject: [PATCH 18/70] minor typing issues fixed --- .../fixes/upgrade-storybook-related-dependencies.ts | 4 ++-- code/lib/cli/src/upgrade.ts | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts index bed260a4af66..1356c07d4c09 100644 --- a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -43,7 +43,7 @@ export const upgradeStorybookRelatedDependencies = { Array.from(new Set([...associated, ...detected])).map(async (packageName) => { return { packageName, - version: await packageManager.latestVersion(packageName).catch((e) => null), + version: await packageManager.latestVersion(packageName).catch(() => null), }; }) ); @@ -130,7 +130,7 @@ export const upgradeStorybookRelatedDependencies = { await packageManager .executeCommand({ command: 'dedupe', args: [], stdio: 'ignore' }) - .catch((e) => {}); + .catch(() => {}); console.log(); console.log(dedent` diff --git a/code/lib/cli/src/upgrade.ts b/code/lib/cli/src/upgrade.ts index 757ad89bdd7c..e49f668f4f87 100644 --- a/code/lib/cli/src/upgrade.ts +++ b/code/lib/cli/src/upgrade.ts @@ -22,7 +22,6 @@ import { } from '@storybook/core-common'; import { automigrate } from './automigrate/index'; import { autoblock } from './autoblock/index'; -import { is } from '@babel/types'; type Package = { package: string; From 586ba186ae140f7d300755b7abdc121c1168d282 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 7 Mar 2024 19:00:46 +0100 Subject: [PATCH 19/70] fix another typing issue --- .../upgrade-storybook-related-dependencies.ts | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts index 1356c07d4c09..4f1ab90b818b 100644 --- a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -50,17 +50,20 @@ export const upgradeStorybookRelatedDependencies = { const data = list.reduce( (acc, k) => { - const upgradable = !( - !valid(k.version) || - k.version === coerce(packageJson?.dependencies?.[k.packageName])?.toString() || - k.version === coerce(packageJson?.devDependencies?.[k.packageName])?.toString() || - k.version === coerce(packageJson?.peerDependencies?.[k.packageName])?.toString() - ); - - if (upgradable) { - acc.upgradable.push(k); - } else { - acc.problematicPackages.push(k); + if (k.version !== null) { + const { packageName, version } = k; + const upgradable = !( + !valid(k.version) || + k.version === coerce(packageJson?.dependencies?.[k.packageName])?.toString() || + k.version === coerce(packageJson?.devDependencies?.[k.packageName])?.toString() || + k.version === coerce(packageJson?.peerDependencies?.[k.packageName])?.toString() + ); + + if (upgradable) { + acc.upgradable.push({ packageName, version }); + } else { + acc.problematicPackages.push({ packageName, version }); + } } return acc; From 9a1c77cd9ef8273747f99df19057dd3c0a1064be Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 7 Mar 2024 19:09:39 +0100 Subject: [PATCH 20/70] make `changeRefVersion` async as well, and correct the types --- code/lib/manager-api/src/modules/refs.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/lib/manager-api/src/modules/refs.ts b/code/lib/manager-api/src/modules/refs.ts index f783f7db6496..e686f6f1c1b6 100644 --- a/code/lib/manager-api/src/modules/refs.ts +++ b/code/lib/manager-api/src/modules/refs.ts @@ -43,7 +43,7 @@ export interface SubAPI { * @param {string} id - The ID of the composed ref. * @param {API_ComposedRefUpdate} ref - The update object for the composed ref. */ - updateRef: (id: string, ref: API_ComposedRefUpdate) => void; + updateRef: (id: string, ref: API_ComposedRefUpdate) => Promise; /** * Gets all composed refs. * @returns {API_Refs} - The composed refs object. @@ -60,7 +60,7 @@ export interface SubAPI { * @param {string} id - The ID of the composed ref. * @param {string} url - The new URL for the composed ref. */ - changeRefVersion: (id: string, url: string) => void; + changeRefVersion: (id: string, url: string) => Promise; /** * Changes the state of a composed ref by its ID and previewInitialized flag. * @param {string} id - The ID of the composed ref. @@ -168,12 +168,12 @@ export const init: ModuleFn = ( return Object.values(refs).find(({ url }: any) => url.match(source)); }, - changeRefVersion: (id, url) => { + changeRefVersion: async (id, url) => { const { versions, title } = api.getRefs()[id]; const ref: API_SetRefData = { id, url, versions, title, index: {}, expanded: true }; api.setRef(id, { ...ref, type: 'unknown' }, false); - api.checkRef(ref); + await api.checkRef(ref); }, changeRefState: (id, previewInitialized) => { const { [id]: ref, ...updated } = api.getRefs(); From 4780ae31030197488d66b4fba483867f416bdb0a Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Thu, 7 Mar 2024 11:12:25 -0700 Subject: [PATCH 21/70] Add section about missing vite config file --- docs/migration-guide/from-older-version.md | 4 ++++ docs/migration-guide/index.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/docs/migration-guide/from-older-version.md b/docs/migration-guide/from-older-version.md index b3740aa2f854..89e290bb0216 100644 --- a/docs/migration-guide/from-older-version.md +++ b/docs/migration-guide/from-older-version.md @@ -79,6 +79,10 @@ If you are using the `storiesOf` API (which requires `storyStoreV7: false` in St Storybook 8 uses MDX 3. If you're coming from MDX 1 (used by Storybook 6), there were significant breaking changes in MDX 2. Please reference our [guidance on upgrading successfully](../../release-7-6/docs/migration-guide.md#upgrade-mdx1-to-mdx2). +#### Missing `vite.config.js` file + +If you are using Vite, you may now need to create a `vite.config.js` file in your project root to allow newer versions of Vite to work with Storybook. Additionally, you may need to install and configure a Vite plugin for your framework. More information is available in the [full migration notes](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-specific-vite-plugins-have-to-be-explicitly-added). + ## Troubleshooting The automatic upgrade should get your Storybook into a working state. If you encounter an error running Storybook after upgrading, here’s what to do: diff --git a/docs/migration-guide/index.md b/docs/migration-guide/index.md index 3ecf74ddfb57..314a90807140 100644 --- a/docs/migration-guide/index.md +++ b/docs/migration-guide/index.md @@ -79,6 +79,10 @@ If you have `storyStoreV7: false` in your `.storybook/main.js`, you will need to If you are using the `storiesOf` API (which requires `storyStoreV7: false` in Storybook 7), you will need to either [migrate your stories to CSF](../../release-7-6/docs/migration-guide.md#storiesof-to-csf) or use the [new indexer API to continue creating stories dynamically](../../release-7-6/docs/migration-guide.md#storiesof-to-dynamically-created-stories). +#### Missing `vite.config.js` file + +If you are using Vite, you may now need to create a `vite.config.js` file in your project root to allow newer versions of Vite to work with Storybook. Additionally, you may need to install and configure a Vite plugin for your framework. More information is available in the [full migration notes](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-specific-vite-plugins-have-to-be-explicitly-added). + ## New projects To add Storybook to a project that isn’t currently using Storybook: From 8b0040fe190b67fd7c10fc4d1dfa9c8fbb4b2071 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 7 Mar 2024 19:24:34 +0100 Subject: [PATCH 22/70] use a shorter link --- code/lib/cli/src/automigrate/fixes/vite-config-file.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/vite-config-file.ts b/code/lib/cli/src/automigrate/fixes/vite-config-file.ts index 6a8dd9ec0e02..22d38efddf25 100644 --- a/code/lib/cli/src/automigrate/fixes/vite-config-file.ts +++ b/code/lib/cli/src/automigrate/fixes/vite-config-file.ts @@ -105,7 +105,7 @@ export const viteConfigFile = { If you do already have these plugins, you can ignore this message. You can find more information on how to do this here: - https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-specific-vite-plugins-have-to-be-explicitly-added + https://github.com/storybookjs/storybook/pull/26378 This change was necessary to support newer versions of Vite. `; @@ -115,7 +115,7 @@ export const viteConfigFile = { Please add a vite.config.js file to your project root. You can find more information on how to do this here: - https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#framework-specific-vite-plugins-have-to-be-explicitly-added + https://github.com/storybookjs/storybook/pull/26378 This change was necessary to support newer versions of Vite. `; From 33fd582745f9826e99edf6150928bac637b41c4b Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 7 Mar 2024 19:27:41 +0100 Subject: [PATCH 23/70] use the right link --- code/lib/cli/src/automigrate/fixes/vite-config-file.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/vite-config-file.ts b/code/lib/cli/src/automigrate/fixes/vite-config-file.ts index 22d38efddf25..9203b45f225f 100644 --- a/code/lib/cli/src/automigrate/fixes/vite-config-file.ts +++ b/code/lib/cli/src/automigrate/fixes/vite-config-file.ts @@ -105,7 +105,7 @@ export const viteConfigFile = { If you do already have these plugins, you can ignore this message. You can find more information on how to do this here: - https://github.com/storybookjs/storybook/pull/26378 + https://storybook.js.org/docs/8.0/migration-guide/#missing-viteconfigjs-file This change was necessary to support newer versions of Vite. `; @@ -115,7 +115,7 @@ export const viteConfigFile = { Please add a vite.config.js file to your project root. You can find more information on how to do this here: - https://github.com/storybookjs/storybook/pull/26378 + https://storybook.js.org/docs/8.0/migration-guide/#missing-viteconfigjs-file This change was necessary to support newer versions of Vite. `; From c5503309b92ed4fd55aa3081b24e6bd9bc824bc0 Mon Sep 17 00:00:00 2001 From: Joe Vaughan <122215197+joevaugh4n@users.noreply.github.com> Date: Thu, 7 Mar 2024 18:45:17 +0000 Subject: [PATCH 24/70] Docs: update index.md Changed the feature list --- docs/migration-guide/index.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/migration-guide/index.md b/docs/migration-guide/index.md index 314a90807140..db216a58cf4b 100644 --- a/docs/migration-guide/index.md +++ b/docs/migration-guide/index.md @@ -1,12 +1,17 @@ --- -title: 'Migration guide for Storybook 8.0' +title: 'Migration guide from Storybook 6.x to 8.0' --- -Storybook 8 focuses on performance and stability. +Storybook 8 focuses on improving performance, compatibility, and stability. Key features include: +- 🩻 A new visual testing workflow via [the Visual Tests addon](https://www.chromatic.com/docs/visual-tests-addon/) - 💨 [2-4x faster test builds](https://storybook.js.org/blog/optimize-storybook-7-6/#2-4x-faster-builds-with-thetest-flag), [25-50% faster React docgen](https://storybook.js.org/blog/optimize-storybook-7-6/#22x-faster-react-docgen), and [SWC support for Webpack projects](https://storybook.js.org/blog/optimize-storybook-7-6/#using-webpack-enable-swc) -- ✨ Improved framework support: you no longer need to install React as a peer dependency when using a non-React renderer +- 🧩 Improved framework support: you no longer need to install React as a peer dependency when using a non-React renderer +- 🎛️ Strengthened control generation in [React](https://storybook.js.org/blog/storybook-8-beta/#major-performance-improvements +) and [Vue](https://storybook.js.org/blog/first-class-vue-support-storybook-8/) projects +- ⚡️ Improved Vite architecture, Vitest testing, and Vite 5 support - 🌐 [Support for React Server Components (RSC)](https://storybook.js.org/blog/storybook-react-server-components/): our experimental solution renders async RSC in the browser and mocks Node code +- ✨ A refreshed desktop UI & mobile UX - ➕ Much, much more This guide is meant to help you **upgrade from Storybook 7.x to 8.0** successfully! From 9eea0d4a5a3e0c91558ec76d5c438450ab4de6bc Mon Sep 17 00:00:00 2001 From: Joe Vaughan <122215197+joevaugh4n@users.noreply.github.com> Date: Thu, 7 Mar 2024 18:45:40 +0000 Subject: [PATCH 25/70] Update index.md fixed title change --- docs/migration-guide/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/migration-guide/index.md b/docs/migration-guide/index.md index db216a58cf4b..51962ca7b88d 100644 --- a/docs/migration-guide/index.md +++ b/docs/migration-guide/index.md @@ -1,5 +1,5 @@ --- -title: 'Migration guide from Storybook 6.x to 8.0' +title: 'Migration guide for Storybook 8.0' --- Storybook 8 focuses on improving performance, compatibility, and stability. Key features include: From c2be62fd8dccfcb0adb5c6e09e48f6a441af077f Mon Sep 17 00:00:00 2001 From: Joe Vaughan <122215197+joevaugh4n@users.noreply.github.com> Date: Thu, 7 Mar 2024 18:46:27 +0000 Subject: [PATCH 26/70] Update from-older-version.md updated feature list --- docs/migration-guide/from-older-version.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/migration-guide/from-older-version.md b/docs/migration-guide/from-older-version.md index 89e290bb0216..c368c48e39be 100644 --- a/docs/migration-guide/from-older-version.md +++ b/docs/migration-guide/from-older-version.md @@ -2,11 +2,16 @@ title: 'Migration guide from Storybook 6.x to 8.0' --- -Storybook 8 focuses on performance and stability. - -- 💨 [2-4x faster test builds](/blog/optimize-storybook-7-6/#2-4x-faster-builds-with-thetest-flag), [25-50% faster React docgen](/blog/optimize-storybook-7-6/#22x-faster-react-docgen), and [SWC support for Webpack projects](/blog/optimize-storybook-7-6/#using-webpack-enable-swc) -- ✨ Improved framework support: you no longer need to install React as a peer dependency when using a non-React renderer -- 🌐 [Support for React Server Components (RSC)](/blog/storybook-react-server-components/): our experimental solution renders async RSC in the browser and mocks Node code +Storybook 8 focuses on improving performance, compatibility, and stability. Key features include: + +- 🩻 A new visual testing workflow via [the Visual Tests addon](https://www.chromatic.com/docs/visual-tests-addon/) +- 💨 [2-4x faster test builds](https://storybook.js.org/blog/optimize-storybook-7-6/#2-4x-faster-builds-with-thetest-flag), [25-50% faster React docgen](https://storybook.js.org/blog/optimize-storybook-7-6/#22x-faster-react-docgen), and [SWC support for Webpack projects](https://storybook.js.org/blog/optimize-storybook-7-6/#using-webpack-enable-swc) +- 🧩 Improved framework support: you no longer need to install React as a peer dependency when using a non-React renderer +- 🎛️ Strengthened control generation in [React](https://storybook.js.org/blog/storybook-8-beta/#major-performance-improvements +) and [Vue](https://storybook.js.org/blog/first-class-vue-support-storybook-8/) projects +- ⚡️ Improved Vite architecture, Vitest testing, and Vite 5 support +- 🌐 [Support for React Server Components (RSC)](https://storybook.js.org/blog/storybook-react-server-components/): our experimental solution renders async RSC in the browser and mocks Node code +- ✨ A refreshed desktop UI & mobile UX - ➕ Much, much more This guide is meant to help you **upgrade from Storybook 6.x to 8.0** successfully! From 13e872c838feddf7e2e468977a150efa24b797c5 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 8 Mar 2024 11:48:55 +0100 Subject: [PATCH 27/70] React: Support all React component types in JSX Decorator --- .../react/src/docs/jsxDecorator.test.tsx | 105 ++++++++++++------ .../renderers/react/src/docs/jsxDecorator.tsx | 43 ++++++- 2 files changed, 109 insertions(+), 39 deletions(-) diff --git a/code/renderers/react/src/docs/jsxDecorator.test.tsx b/code/renderers/react/src/docs/jsxDecorator.test.tsx index bfb20fdd5f0d..6ed0f0eda179 100644 --- a/code/renderers/react/src/docs/jsxDecorator.test.tsx +++ b/code/renderers/react/src/docs/jsxDecorator.test.tsx @@ -1,3 +1,4 @@ +/* eslint-disable no-underscore-dangle */ import type { FC, PropsWithChildren } from 'react'; import React, { StrictMode, createElement, Profiler } from 'react'; import type { Mock } from 'vitest'; @@ -5,7 +6,7 @@ import { vi, describe, it, expect, beforeEach } from 'vitest'; import PropTypes from 'prop-types'; import { addons, useEffect } from '@storybook/preview-api'; import { SNIPPET_RENDERED } from '@storybook/docs-tools'; -import { renderJsx, jsxDecorator } from './jsxDecorator'; +import { renderJsx, jsxDecorator, getReactSymbolName } from './jsxDecorator'; vi.mock('@storybook/preview-api'); const mockedAddons = vi.mocked(addons); @@ -16,6 +17,18 @@ expect.addSnapshotSerializer({ test: (val) => typeof val === 'string', }); +describe('converts React Symbol to displayName string', () => { + const symbolCases = [ + ['react.suspense', 'React.Suspense'], + ['react.strict_mode', 'React.StrictMode'], + ['react.server_context.defaultValue', 'React.ServerContext.DefaultValue'], + ]; + + it.each(symbolCases)('"%s" to "%s"', (symbol, expectedValue) => { + expect(getReactSymbolName(Symbol(symbol))).toEqual(expectedValue); + }); +}); + describe('renderJsx', () => { it('basic', () => { expect(renderJsx(
hello
, {})).toMatchInlineSnapshot(` @@ -139,53 +152,71 @@ describe('renderJsx', () => { }); it('Profiler', () => { - function ProfilerComponent({ children }: any) { - return ( + expect( + renderJsx( {}}> -
{children}
-
- ); - } - - expect(renderJsx(createElement(ProfilerComponent, {}, 'I am Profiler'), {})) - .toMatchInlineSnapshot(` - - I am Profiler - +
I am in a Profiler
+ , + {} + ) + ).toMatchInlineSnapshot(` + {}} + > +
+ I am in a Profiler +
+
`); }); it('StrictMode', () => { - function StrictModeComponent({ children }: any) { - return ( - -
{children}
-
- ); + expect(renderJsx(I am StrictMode, {})).toMatchInlineSnapshot(` + + I am StrictMode + + `); + }); + + it('displayName coming from docgenInfo', () => { + function BasicComponent({ label }: any) { + return ; } + BasicComponent.__docgenInfo = { + description: 'Some description', + methods: [], + displayName: 'Button', + props: {}, + }; - expect(renderJsx(createElement(StrictModeComponent, {}, 'I am StrictMode'), {})) - .toMatchInlineSnapshot(` - - I am StrictMode - - `); + expect( + renderJsx( + createElement( + BasicComponent, + { + label:

Abcd

, + }, + undefined + ) + ) + ).toMatchInlineSnapshot(` - + Children coming from story args! + `; @@ -21,17 +16,12 @@ exports[`Renders CSF2Secondary story 1`] = ` exports[`Renders CSF2StoryWithParamsAndDecorator story 1`] = `
-
- -
+ foo +
`; @@ -39,17 +29,12 @@ exports[`Renders CSF2StoryWithParamsAndDecorator story 1`] = ` exports[`Renders CSF3Button story 1`] = `
-
- -
+ foo +
`; @@ -57,23 +42,18 @@ exports[`Renders CSF3Button story 1`] = ` exports[`Renders CSF3ButtonWithRender story 1`] = `
-
-
-

- I am a custom render function -

- -
+
+

+ I am a custom render function +

+
@@ -82,14 +62,9 @@ exports[`Renders CSF3ButtonWithRender story 1`] = ` exports[`Renders CSF3InputFieldFilled story 1`] = `
-
- -
+
`; @@ -97,17 +72,12 @@ exports[`Renders CSF3InputFieldFilled story 1`] = ` exports[`Renders CSF3Primary story 1`] = `
-
- -
+ foo +
`; @@ -115,21 +85,16 @@ exports[`Renders CSF3Primary story 1`] = ` exports[`Renders LoaderStory story 1`] = `
-
-
-
- loaded data -
-
- mockFn return value -
+
+
+ loaded data +
+
+ mockFn return value
diff --git a/code/renderers/react/src/portable-stories.tsx b/code/renderers/react/src/portable-stories.ts similarity index 90% rename from code/renderers/react/src/portable-stories.tsx rename to code/renderers/react/src/portable-stories.ts index 3493e0f3b2e5..5994dbc1e408 100644 --- a/code/renderers/react/src/portable-stories.tsx +++ b/code/renderers/react/src/portable-stories.ts @@ -1,9 +1,7 @@ -import React from 'react'; import { composeStory as originalComposeStory, composeStories as originalComposeStories, setProjectAnnotations as originalSetProjectAnnotations, - getPortableStoryWrapperId, } from '@storybook/preview-api'; import type { Args, @@ -13,7 +11,7 @@ import type { StoriesWithPartialProps, } from '@storybook/types'; -import * as reactProjectAnnotations from './entry-preview'; +import * as defaultProjectAnnotations from './entry-preview'; import type { Meta } from './public-types'; import type { ReactRenderer } from './types'; @@ -38,20 +36,6 @@ export function setProjectAnnotations( originalSetProjectAnnotations(projectAnnotations); } -// This will not be necessary once we have auto preset loading -const defaultProjectAnnotations: ProjectAnnotations = { - ...reactProjectAnnotations, - decorators: [ - function addStorybookId(StoryFn, { id }) { - return ( -
- -
- ); - }, - ], -}; - /** * Function that will receive a story along with meta (e.g. a default export from a .stories file) * and optionally projectAnnotations e.g. (import * from '../.storybook/preview) diff --git a/code/renderers/vue3/src/__tests__/composeStories/__snapshots__/portable-stories.test.ts.snap b/code/renderers/vue3/src/__tests__/composeStories/__snapshots__/portable-stories.test.ts.snap index b6e6feff8f61..bb968e20d142 100644 --- a/code/renderers/vue3/src/__tests__/composeStories/__snapshots__/portable-stories.test.ts.snap +++ b/code/renderers/vue3/src/__tests__/composeStories/__snapshots__/portable-stories.test.ts.snap @@ -3,17 +3,12 @@ exports[`Renders CSF2Secondary story 1`] = `
-
- -
+ label coming from story args! +
`; @@ -22,19 +17,14 @@ exports[`Renders CSF2StoryWithParamsAndDecorator story 1`] = `
-
- -
+ foo +
@@ -43,17 +33,12 @@ exports[`Renders CSF2StoryWithParamsAndDecorator story 1`] = ` exports[`Renders CSF3Button story 1`] = `
-
- -
+ foo +
`; @@ -61,23 +46,18 @@ exports[`Renders CSF3Button story 1`] = ` exports[`Renders CSF3ButtonWithRender story 1`] = `
-
-
-

- I am a custom render function -

- -
+
+

+ I am a custom render function +

+
@@ -86,14 +66,9 @@ exports[`Renders CSF3ButtonWithRender story 1`] = ` exports[`Renders CSF3InputFieldFilled story 1`] = `
-
- -
+
`; @@ -101,17 +76,12 @@ exports[`Renders CSF3InputFieldFilled story 1`] = ` exports[`Renders CSF3Primary story 1`] = `
-
- -
+ foo +
`; @@ -119,21 +89,16 @@ exports[`Renders CSF3Primary story 1`] = ` exports[`Renders LoaderStory story 1`] = `
-
-
-
- loaded data -
-
- mockFn return value -
+
+
+ loaded data +
+
+ mockFn return value
diff --git a/code/renderers/vue3/src/portable-stories.ts b/code/renderers/vue3/src/portable-stories.ts index 73c7991f16a6..dca738d205bf 100644 --- a/code/renderers/vue3/src/portable-stories.ts +++ b/code/renderers/vue3/src/portable-stories.ts @@ -2,7 +2,6 @@ import { composeStory as originalComposeStory, composeStories as originalComposeStories, setProjectAnnotations as originalSetProjectAnnotations, - getPortableStoryWrapperId, } from '@storybook/preview-api'; import type { Args, @@ -13,20 +12,10 @@ import type { } from '@storybook/types'; import { h } from 'vue'; -import * as vueProjectAnnotations from './entry-preview'; +import * as defaultProjectAnnotations from './entry-preview'; import type { Meta } from './public-types'; import type { VueRenderer } from './types'; -const defaultProjectAnnotations: ProjectAnnotations = { - ...vueProjectAnnotations, - decorators: [ - function (story, { id }) { - const wrapperProps = { 'data-story': true, id: getPortableStoryWrapperId(id) }; - return h('div', wrapperProps, h(story())); - }, - ], -}; - /** Function that sets the globalConfig of your Storybook. The global config is the preview module of your .storybook folder. * * It should be run a single time, so that your global config (e.g. decorators) is applied to your stories when using `composeStories` or `composeStory`. From af63b0fd0191acb067cfc3036d991c9040f96cde Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 8 Mar 2024 14:48:26 +0100 Subject: [PATCH 35/70] wip --- .../upgrade-storybook-related-dependencies.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts index b2804e1496bf..afa17b5440c6 100644 --- a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -1,8 +1,9 @@ import { dedent } from 'ts-dedent'; import type { Fix } from '../types'; -import { cyan, underline, yellow } from 'chalk'; +import { cyan, yellow } from 'chalk'; import { getIncompatibleStorybookPackages } from '../../doctor/getIncompatibleStorybookPackages'; import { valid, coerce } from 'semver'; +import { isCorePackage } from '@storybook/core-common'; interface Options { upgradable: { packageName: string; version: string }[]; @@ -34,7 +35,9 @@ export const upgradeStorybookRelatedDependencies = { const all = await packageManager.getAllDependencies(); - const associated = Object.keys(all).filter((dep) => dep.includes('storybook')); + const associated = Object.keys(all) + .filter((dep) => dep.includes('storybook')) + .filter(isCorePackage); const detected = analyzed .filter((m) => m.hasIncompatibleDependencies) .map((m) => m.packageName); @@ -85,12 +88,7 @@ export const upgradeStorybookRelatedDependencies = { .map(({ packageName, version }) => `- ${cyan(packageName)}@${cyan(version)}`) .join('\n')} - We detected those packages are incompatible with the latest version of Storybook. - ${underline( - `The list might be incomplete, so it's advised to upgrade dependencies manually, but this automigration can help you get started.` - )} - - After upgrading, we will run the dedupe command, which could possibly have effects on dependencies that are not storybook related. + After upgrading, we will run the dedupe command, which could possibly have effects on dependencies that are not Storybook related. see: https://docs.npmjs.com/cli/commands/npm-dedupe Do you want to proceed (upgrade the detected packages)? From 9dfb3aaaceb29d621d9dbcf28b05174123a42956 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 8 Mar 2024 15:11:38 +0100 Subject: [PATCH 36/70] make it better --- .../upgrade-storybook-related-dependencies.ts | 124 +++++++++++------- 1 file changed, 75 insertions(+), 49 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts index afa17b5440c6..aefa841f91c2 100644 --- a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -3,11 +3,59 @@ import type { Fix } from '../types'; import { cyan, yellow } from 'chalk'; import { getIncompatibleStorybookPackages } from '../../doctor/getIncompatibleStorybookPackages'; import { valid, coerce } from 'semver'; +import type { JsPackageManager } from '@storybook/core-common'; import { isCorePackage } from '@storybook/core-common'; +type PackageMetadata = { + packageName: string; + beforeVersion: string; + afterVersion: string | null; +}; + interface Options { - upgradable: { packageName: string; version: string }[]; - problematicPackages: { packageName: string; version: string }[]; + upgradable: PackageMetadata[]; + problematicPackages: PackageMetadata[]; +} + +async function getLatestVersions( + packageManager: JsPackageManager, + packages: [string, string][] +): Promise { + return Promise.all( + packages.map(async ([packageName, beforeVersion]) => ({ + packageName, + beforeVersion, + afterVersion: await packageManager.latestVersion(packageName).catch(() => null), + })) + ); +} + +function isPackageUpgradable( + version: string, + packageName: string, + allDependencies: Record +) { + const installedVersion = coerce(allDependencies[packageName])?.toString(); + + return valid(version) && version !== installedVersion; +} + +function categorizePackages( + packageVersions: PackageMetadata[], + allDependencies: Record +) { + return packageVersions.reduce( + (acc, { packageName, afterVersion, beforeVersion }) => { + if (afterVersion === null) return acc; + + const isUpgradable = isPackageUpgradable(afterVersion, packageName, allDependencies); + const category = isUpgradable ? 'upgradable' : 'problematicPackages'; + acc[category].push({ packageName, afterVersion, beforeVersion }); + + return acc; + }, + { upgradable: [], problematicPackages: [] } as Options + ); } /** @@ -26,66 +74,37 @@ export const upgradeStorybookRelatedDependencies = { promptDefaultValue: false, async check({ packageManager, storybookVersion }) { - const packageJson = await packageManager.readPackageJson(); - const analyzed = await getIncompatibleStorybookPackages({ + const analyzedPackages = await getIncompatibleStorybookPackages({ currentStorybookVersion: storybookVersion, packageManager, skipErrors: true, }); - const all = await packageManager.getAllDependencies(); - - const associated = Object.keys(all) + const allDependencies = (await packageManager.getAllDependencies()) as Record; + const storybookDependencies = Object.keys(allDependencies) .filter((dep) => dep.includes('storybook')) .filter(isCorePackage); - const detected = analyzed - .filter((m) => m.hasIncompatibleDependencies) - .map((m) => m.packageName); - - const list = await Promise.all( - Array.from(new Set([...associated, ...detected])).map(async (packageName) => { - return { - packageName, - version: await packageManager.latestVersion(packageName).catch(() => null), - }; - }) - ); - - const data = list.reduce( - (acc, k) => { - if (k.version !== null) { - const { packageName, version } = k; - const upgradable = !( - !valid(k.version) || - k.version === coerce(packageJson?.dependencies?.[k.packageName])?.toString() || - k.version === coerce(packageJson?.devDependencies?.[k.packageName])?.toString() || - k.version === coerce(packageJson?.peerDependencies?.[k.packageName])?.toString() - ); - - if (upgradable) { - acc.upgradable.push({ packageName, version }); - } else { - acc.problematicPackages.push({ packageName, version }); - } - } + const incompatibleDependencies = analyzedPackages + .filter((pkg) => pkg.hasIncompatibleDependencies) + .map((pkg) => pkg.packageName); - return acc; - }, - { upgradable: [], problematicPackages: [] } - ); + const uniquePackages = Array.from( + new Set([...storybookDependencies, ...incompatibleDependencies]) + ).map((packageName) => [packageName, allDependencies[packageName]]) as [string, string][]; - if (data.upgradable.length > 0) { - return data; - } + const packageVersions = await getLatestVersions(packageManager, uniquePackages); + const categorizedPackages = categorizePackages(packageVersions, allDependencies); - return null; + return categorizedPackages.upgradable.length > 0 ? categorizedPackages : null; }, prompt({ upgradable: list }) { return dedent` You're upgrading to the latest version of Storybook. We recommend upgrading the following packages: ${list - .map(({ packageName, version }) => `- ${cyan(packageName)}@${cyan(version)}`) + .map(({ packageName, afterVersion, beforeVersion }) => { + return `- ${cyan(packageName)}: ${cyan(beforeVersion)} => ${cyan(afterVersion)}`; + }) .join('\n')} After upgrading, we will run the dedupe command, which could possibly have effects on dependencies that are not Storybook related. @@ -99,7 +118,12 @@ export const upgradeStorybookRelatedDependencies = { if (dryRun) { console.log(dedent` We would have upgrade the following: - ${upgradable.map(({ packageName, version }) => `${packageName}@${version}`).join('\n')} + ${upgradable + .map( + ({ packageName, afterVersion, beforeVersion }) => + `${packageName}: ${beforeVersion} => ${afterVersion}` + ) + .join('\n')} `); return; } @@ -112,7 +136,7 @@ export const upgradeStorybookRelatedDependencies = { return; } - const { packageName, version } = item; + const { packageName, afterVersion: version } = item; const prefixed = `^${version}`; if (packageJson.dependencies?.[packageName]) { @@ -137,7 +161,9 @@ export const upgradeStorybookRelatedDependencies = { console.log(dedent` We upgraded ${yellow(upgradable.length)} packages: ${upgradable - .map(({ packageName, version }) => `- ${cyan(packageName)}@${cyan(version)}`) + .map(({ packageName, afterVersion, beforeVersion }) => { + return `- ${cyan(packageName)}: ${cyan(beforeVersion)} => ${cyan(afterVersion)}`; + }) .join('\n')} `); } From 9d552b2bcd4037cf9c48e1817b46e43a464ca087 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 8 Mar 2024 15:14:47 +0100 Subject: [PATCH 37/70] even better --- .../fixes/upgrade-storybook-related-dependencies.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts index aefa841f91c2..d325ad0f7887 100644 --- a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -172,10 +172,10 @@ export const upgradeStorybookRelatedDependencies = { console.log(); console.log(dedent` The following packages could not be upgraded, - likely because there's no update available compatible with the latest version of Storybook: + likely because there's no stable update available which is compatible with the latest version of Storybook: ${problematicPackages.map(({ packageName }) => `- ${cyan(packageName)}`).join('\n')} - We suggest your reach out to the authors of these packages to get them updated. + We suggest you to reach out to the maintainers of these packages to get them updated. But before reporting, please check if there is already an open issue or PR for this. `); } From becdbd935851d45b67eba6659b3d05bc5479becf Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 8 Mar 2024 15:35:40 +0100 Subject: [PATCH 38/70] remove the problematicPackages feature --- .../upgrade-storybook-related-dependencies.ts | 53 +++++-------------- 1 file changed, 14 insertions(+), 39 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts index d325ad0f7887..3f6ea69f29bc 100644 --- a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -14,7 +14,6 @@ type PackageMetadata = { interface Options { upgradable: PackageMetadata[]; - problematicPackages: PackageMetadata[]; } async function getLatestVersions( @@ -31,31 +30,13 @@ async function getLatestVersions( } function isPackageUpgradable( - version: string, + afterVersion: string, packageName: string, allDependencies: Record ) { const installedVersion = coerce(allDependencies[packageName])?.toString(); - return valid(version) && version !== installedVersion; -} - -function categorizePackages( - packageVersions: PackageMetadata[], - allDependencies: Record -) { - return packageVersions.reduce( - (acc, { packageName, afterVersion, beforeVersion }) => { - if (afterVersion === null) return acc; - - const isUpgradable = isPackageUpgradable(afterVersion, packageName, allDependencies); - const category = isUpgradable ? 'upgradable' : 'problematicPackages'; - acc[category].push({ packageName, afterVersion, beforeVersion }); - - return acc; - }, - { upgradable: [], problematicPackages: [] } as Options - ); + return valid(afterVersion) && afterVersion !== installedVersion; } /** @@ -83,7 +64,7 @@ export const upgradeStorybookRelatedDependencies = { const allDependencies = (await packageManager.getAllDependencies()) as Record; const storybookDependencies = Object.keys(allDependencies) .filter((dep) => dep.includes('storybook')) - .filter(isCorePackage); + .filter((dep) => !isCorePackage(dep)); const incompatibleDependencies = analyzedPackages .filter((pkg) => pkg.hasIncompatibleDependencies) .map((pkg) => pkg.packageName); @@ -93,15 +74,21 @@ export const upgradeStorybookRelatedDependencies = { ).map((packageName) => [packageName, allDependencies[packageName]]) as [string, string][]; const packageVersions = await getLatestVersions(packageManager, uniquePackages); - const categorizedPackages = categorizePackages(packageVersions, allDependencies); + const upgradablePackages = packageVersions.filter(({ packageName, afterVersion }) => { + if (afterVersion === null) { + return false; + } - return categorizedPackages.upgradable.length > 0 ? categorizedPackages : null; + return isPackageUpgradable(afterVersion, packageName, allDependencies); + }); + + return upgradablePackages.length > 0 ? upgradablePackages : null; }, - prompt({ upgradable: list }) { + prompt({ upgradable }) { return dedent` You're upgrading to the latest version of Storybook. We recommend upgrading the following packages: - ${list + ${upgradable .map(({ packageName, afterVersion, beforeVersion }) => { return `- ${cyan(packageName)}: ${cyan(beforeVersion)} => ${cyan(afterVersion)}`; }) @@ -114,7 +101,7 @@ export const upgradeStorybookRelatedDependencies = { `; }, - async run({ result: { upgradable, problematicPackages }, packageManager, dryRun }) { + async run({ result: { upgradable }, packageManager, dryRun }) { if (dryRun) { console.log(dedent` We would have upgrade the following: @@ -167,18 +154,6 @@ export const upgradeStorybookRelatedDependencies = { .join('\n')} `); } - - if (problematicPackages.length) { - console.log(); - console.log(dedent` - The following packages could not be upgraded, - likely because there's no stable update available which is compatible with the latest version of Storybook: - ${problematicPackages.map(({ packageName }) => `- ${cyan(packageName)}`).join('\n')} - - We suggest you to reach out to the maintainers of these packages to get them updated. - But before reporting, please check if there is already an open issue or PR for this. - `); - } console.log(); }, } satisfies Fix; From 80a112de3c2a2446ab5253d6b9efbe83822d8fb0 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 8 Mar 2024 15:37:44 +0100 Subject: [PATCH 39/70] fix --- .../automigrate/fixes/upgrade-storybook-related-dependencies.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts index 3f6ea69f29bc..3bc835050972 100644 --- a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -82,7 +82,7 @@ export const upgradeStorybookRelatedDependencies = { return isPackageUpgradable(afterVersion, packageName, allDependencies); }); - return upgradablePackages.length > 0 ? upgradablePackages : null; + return upgradablePackages.length > 0 ? { upgradable: upgradablePackages } : null; }, prompt({ upgradable }) { From b4e944d608fe02a951482e2258e770c129cacc7e Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 8 Mar 2024 15:43:43 +0100 Subject: [PATCH 40/70] ship it --- .../upgrade-storybook-related-dependencies.ts | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts index 3bc835050972..c780d5eff59e 100644 --- a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -8,7 +8,7 @@ import { isCorePackage } from '@storybook/core-common'; type PackageMetadata = { packageName: string; - beforeVersion: string; + beforeVersion: string | null; afterVersion: string | null; }; @@ -23,7 +23,7 @@ async function getLatestVersions( return Promise.all( packages.map(async ([packageName, beforeVersion]) => ({ packageName, - beforeVersion, + beforeVersion: coerce(beforeVersion)?.toString() || null, afterVersion: await packageManager.latestVersion(packageName).catch(() => null), })) ); @@ -74,13 +74,18 @@ export const upgradeStorybookRelatedDependencies = { ).map((packageName) => [packageName, allDependencies[packageName]]) as [string, string][]; const packageVersions = await getLatestVersions(packageManager, uniquePackages); - const upgradablePackages = packageVersions.filter(({ packageName, afterVersion }) => { - if (afterVersion === null) { - return false; - } + const upgradablePackages = packageVersions.filter( + ({ packageName, afterVersion, beforeVersion }) => { + if (beforeVersion === null) { + return false; + } + if (afterVersion === null) { + return false; + } - return isPackageUpgradable(afterVersion, packageName, allDependencies); - }); + return isPackageUpgradable(afterVersion, packageName, allDependencies); + } + ); return upgradablePackages.length > 0 ? { upgradable: upgradablePackages } : null; }, From 909cb23f3876abc7f642c40f7f365fbee4745458 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 8 Mar 2024 15:57:34 +0100 Subject: [PATCH 41/70] remove hard-coded login in inner command --- .../upgrade-storybook-related-dependencies.ts | 6 ++++++ code/lib/cli/src/automigrate/index.ts | 16 +--------------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts index c780d5eff59e..7a57e38c7d8d 100644 --- a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -55,6 +55,12 @@ export const upgradeStorybookRelatedDependencies = { promptDefaultValue: false, async check({ packageManager, storybookVersion }) { + const latestStorybookVersion = await packageManager.latestVersion('storybook'); + + if (storybookVersion !== latestStorybookVersion) { + return null; + } + const analyzedPackages = await getIncompatibleStorybookPackages({ currentStorybookVersion: storybookVersion, packageManager, diff --git a/code/lib/cli/src/automigrate/index.ts b/code/lib/cli/src/automigrate/index.ts index 20cbf98a4166..8ae73c57102a 100644 --- a/code/lib/cli/src/automigrate/index.ts +++ b/code/lib/cli/src/automigrate/index.ts @@ -29,7 +29,6 @@ import { getMigrationSummary } from './helpers/getMigrationSummary'; import { getStorybookData } from './helpers/mainConfigFile'; import { doctor } from '../doctor'; -import { upgradeStorybookRelatedDependencies } from './fixes/upgrade-storybook-related-dependencies'; import dedent from 'ts-dedent'; const logger = console; @@ -134,20 +133,7 @@ export const automigrate = async ({ return null; } - const selectedFixes: Fix[] = - inputFixes || - allFixes.filter((fix) => { - // we only allow this automigration when the user explicitly asks for it, or they are upgrading to the latest version of storybook - if ( - fix.id === upgradeStorybookRelatedDependencies.id && - isUpgrade !== 'latest' && - fixId !== upgradeStorybookRelatedDependencies.id - ) { - return false; - } - - return true; - }); + const selectedFixes: Fix[] = inputFixes || allFixes; const fixes: Fix[] = fixId ? selectedFixes.filter((f) => f.id === fixId) : selectedFixes; if (fixId && fixes.length === 0) { From b1978746c568716ade7d26dc5bffd95ecee3d3c8 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 8 Mar 2024 15:58:59 +0100 Subject: [PATCH 42/70] Revert "remove hard-coded login in inner command" This reverts commit 909cb23f3876abc7f642c40f7f365fbee4745458. --- .../upgrade-storybook-related-dependencies.ts | 6 ------ code/lib/cli/src/automigrate/index.ts | 16 +++++++++++++++- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts index 7a57e38c7d8d..c780d5eff59e 100644 --- a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -55,12 +55,6 @@ export const upgradeStorybookRelatedDependencies = { promptDefaultValue: false, async check({ packageManager, storybookVersion }) { - const latestStorybookVersion = await packageManager.latestVersion('storybook'); - - if (storybookVersion !== latestStorybookVersion) { - return null; - } - const analyzedPackages = await getIncompatibleStorybookPackages({ currentStorybookVersion: storybookVersion, packageManager, diff --git a/code/lib/cli/src/automigrate/index.ts b/code/lib/cli/src/automigrate/index.ts index 8ae73c57102a..20cbf98a4166 100644 --- a/code/lib/cli/src/automigrate/index.ts +++ b/code/lib/cli/src/automigrate/index.ts @@ -29,6 +29,7 @@ import { getMigrationSummary } from './helpers/getMigrationSummary'; import { getStorybookData } from './helpers/mainConfigFile'; import { doctor } from '../doctor'; +import { upgradeStorybookRelatedDependencies } from './fixes/upgrade-storybook-related-dependencies'; import dedent from 'ts-dedent'; const logger = console; @@ -133,7 +134,20 @@ export const automigrate = async ({ return null; } - const selectedFixes: Fix[] = inputFixes || allFixes; + const selectedFixes: Fix[] = + inputFixes || + allFixes.filter((fix) => { + // we only allow this automigration when the user explicitly asks for it, or they are upgrading to the latest version of storybook + if ( + fix.id === upgradeStorybookRelatedDependencies.id && + isUpgrade !== 'latest' && + fixId !== upgradeStorybookRelatedDependencies.id + ) { + return false; + } + + return true; + }); const fixes: Fix[] = fixId ? selectedFixes.filter((f) => f.id === fixId) : selectedFixes; if (fixId && fixes.length === 0) { From b74ca127bc2eff8ffd9b70b2d61f8327f54c3c40 Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Fri, 8 Mar 2024 16:07:10 +0100 Subject: [PATCH 43/70] add tests --- ...ade-storybook-related-dependencies.test.ts | 95 +++++++++++++++++++ .../upgrade-storybook-related-dependencies.ts | 10 +- 2 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.test.ts diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.test.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.test.ts new file mode 100644 index 000000000000..0c16309647bd --- /dev/null +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.test.ts @@ -0,0 +1,95 @@ +import { describe, afterEach, it, expect, vi } from 'vitest'; +import type { StorybookConfig } from '@storybook/types'; +import type { JsPackageManager } from '@storybook/core-common'; +import * as docsUtils from '../../doctor/getIncompatibleStorybookPackages'; + +import { upgradeStorybookRelatedDependencies } from './upgrade-storybook-related-dependencies'; + +vi.mock('../../doctor/getIncompatibleStorybookPackages'); + +const check = async ({ + packageManager, + main: mainConfig = {}, + storybookVersion = '8.0.0', +}: { + packageManager: Partial; + main?: Partial & Record; + storybookVersion?: string; +}) => { + return upgradeStorybookRelatedDependencies.check({ + packageManager: packageManager as any, + configDir: '', + mainConfig: mainConfig as any, + storybookVersion, + }); +}; + +describe('upgrade-storybook-related-dependencies fix', () => { + afterEach(() => { + vi.restoreAllMocks(); + }); + + it('should detect storyshots registered in main.js', async () => { + const analyzedPackages = [ + { + packageName: '@chromatic-com/storybook', + packageVersion: '1.2.9', + availableUpgrade: '2.0.0', + hasIncompatibleDependencies: false, + }, + { + packageName: '@storybook/jest', + packageVersion: '0.2.3', + availableUpgrade: '1.0.0', + hasIncompatibleDependencies: false, + }, + { + packageName: '@storybook/preset-create-react-app', + packageVersion: '3.2.0', + availableUpgrade: '8.0.0', + hasIncompatibleDependencies: true, + }, + { + packageName: 'storybook', + packageVersion: '8.0.0', + availableUpgrade: undefined, + hasIncompatibleDependencies: true, + }, + ]; + vi.mocked(docsUtils.getIncompatibleStorybookPackages).mockResolvedValue(analyzedPackages); + await expect( + check({ + packageManager: { + getAllDependencies: async () => ({ + '@chromatic-com/storybook': '1.2.9', + '@storybook/jest': '0.2.3', + '@storybook/preset-create-react-app': '3.2.0', + storybook: '8.0.0', + }), + latestVersion: async (pkgName) => + analyzedPackages.find((pkg) => pkg.packageName === pkgName)?.availableUpgrade || '', + }, + }) + ).resolves.toMatchInlineSnapshot(` + { + "upgradable": [ + { + "afterVersion": "2.0.0", + "beforeVersion": "1.2.9", + "packageName": "@chromatic-com/storybook", + }, + { + "afterVersion": "1.0.0", + "beforeVersion": "0.2.3", + "packageName": "@storybook/jest", + }, + { + "afterVersion": "8.0.0", + "beforeVersion": "3.2.0", + "packageName": "@storybook/preset-create-react-app", + }, + ], + } + `); + }); +}); diff --git a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts index c780d5eff59e..5614b7e35ad0 100644 --- a/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts +++ b/code/lib/cli/src/automigrate/fixes/upgrade-storybook-related-dependencies.ts @@ -1,10 +1,10 @@ import { dedent } from 'ts-dedent'; -import type { Fix } from '../types'; import { cyan, yellow } from 'chalk'; -import { getIncompatibleStorybookPackages } from '../../doctor/getIncompatibleStorybookPackages'; import { valid, coerce } from 'semver'; import type { JsPackageManager } from '@storybook/core-common'; import { isCorePackage } from '@storybook/core-common'; +import type { Fix } from '../types'; +import { getIncompatibleStorybookPackages } from '../../doctor/getIncompatibleStorybookPackages'; type PackageMetadata = { packageName: string; @@ -74,12 +74,10 @@ export const upgradeStorybookRelatedDependencies = { ).map((packageName) => [packageName, allDependencies[packageName]]) as [string, string][]; const packageVersions = await getLatestVersions(packageManager, uniquePackages); + const upgradablePackages = packageVersions.filter( ({ packageName, afterVersion, beforeVersion }) => { - if (beforeVersion === null) { - return false; - } - if (afterVersion === null) { + if (beforeVersion === null || afterVersion === null) { return false; } From b5eacba75a89cac1af0082bdcb81a9ae2d6b9d0e Mon Sep 17 00:00:00 2001 From: jonniebigodes Date: Sun, 10 Mar 2024 17:07:34 +0000 Subject: [PATCH 44/70] Docs: Fix table alignment --- docs/addons/addons-api.md | 38 ++++++------- docs/api/csf.md | 10 ++-- docs/configure/features-and-behavior.md | 56 +++++++++---------- docs/essentials/toolbars-and-globals.md | 12 ++-- .../naming-components-and-hierarchy.md | 12 ++-- 5 files changed, 64 insertions(+), 64 deletions(-) diff --git a/docs/addons/addons-api.md b/docs/addons/addons-api.md index 8bdc7d62367e..c2c1afad9edb 100644 --- a/docs/addons/addons-api.md +++ b/docs/addons/addons-api.md @@ -244,32 +244,32 @@ This method allows you to override the default Storybook UI configuration (e.g., The following table details how to use the API values: -| Name | Type | Description | Example Value | -| --------------------- | :-------------: | :-----------------------------------------------------: | :-----------------------------------: | -| **navSize** | Number (pixels) | The size of the sidebar that shows a list of stories | `300` | -| **bottomPanelHeight** | Number (pixels) | The size of the addon panel when in the bottom position | `200` | -| **rightPanelWidth** | Number (pixels) | The size of the addon panel when in the right position | `200` | -| **panelPosition** | String | Where to show the addon panel | `'bottom'` or `'right'` | -| **enableShortcuts** | Boolean | Enable/disable shortcuts | `true` | -| **showToolbar** | Boolean | Show/hide toolbar | `true` | -| **theme** | Object | Storybook Theme, see next section | `undefined` | -| **selectedPanel** | String | Id to select an addon panel | `storybook/actions/panel` | -| **initialActive** | String | Select the default active tab on Mobile | `sidebar` or `canvas` or `addons` | -| **sidebar** | Object | Sidebar options, see below | `{ showRoots: false }` | -| **toolbar** | Object | Modify the tools in the toolbar using the addon id | `{ fullscreen: { hidden: false } } }` | +| Name | Type | Description | Example Value | +| --------------------- | --------------- | ------------------------------------------------------- | ------------------------------------- | +| **navSize** | Number (pixels) | The size of the sidebar that shows a list of stories | `300` | +| **bottomPanelHeight** | Number (pixels) | The size of the addon panel when in the bottom position | `200` | +| **rightPanelWidth** | Number (pixels) | The size of the addon panel when in the right position | `200` | +| **panelPosition** | String | Where to show the addon panel | `'bottom'` or `'right'` | +| **enableShortcuts** | Boolean | Enable/disable shortcuts | `true` | +| **showToolbar** | Boolean | Show/hide toolbar | `true` | +| **theme** | Object | Storybook Theme, see next section | `undefined` | +| **selectedPanel** | String | Id to select an addon panel | `storybook/actions/panel` | +| **initialActive** | String | Select the default active tab on Mobile | `sidebar` or `canvas` or `addons` | +| **sidebar** | Object | Sidebar options, see below | `{ showRoots: false }` | +| **toolbar** | Object | Modify the tools in the toolbar using the addon id | `{ fullscreen: { hidden: false } } }` | The following options are configurable under the `sidebar` namespace: -| Name | Type | Description | Example Value | -| ------------------ | :------: | :-----------------------------------------------------------: | :----------------------------------------------: | -| **showRoots** | Boolean | Display the top-level nodes as a "root" in the sidebar | `false` | -| **collapsedRoots** | Array | Set of root node IDs to visually collapse by default | `['misc', 'other']` | +| Name | Type | Description | Example Value | +| ------------------ | -------- | ------------------------------------------------------------- | ------------------------------------------------ | +| **showRoots** | Boolean | Display the top-level nodes as a "root" in the sidebar | `false` | +| **collapsedRoots** | Array | Set of root node IDs to visually collapse by default | `['misc', 'other']` | | **renderLabel** | Function | Create a custom label for tree nodes; must return a ReactNode | `(item) => {item.name}` | The following options are configurable under the `toolbar` namespace: -| Name | Type | Description | Example Value | -| ------ | :----: | :--------------------------------: | :-----------------: | +| Name | Type | Description | Example Value | +| ------ | ------ | ---------------------------------- | ------------------- | | **id** | String | Toggle visibility for toolbar item | `{ hidden: false }` | --- diff --git a/docs/api/csf.md b/docs/api/csf.md index b91f45fd57a4..636195be3761 100644 --- a/docs/api/csf.md +++ b/docs/api/csf.md @@ -64,11 +64,11 @@ With CSF, every named export in the file represents a story object by default. The exported identifiers will be converted to "start case" using Lodash's [startCase](https://lodash.com/docs/#startCase) function. For example: -| Identifier | Transformation | -| ---------------- | :---------------: | -| name | Name | -| someName | Some Name | -| someNAME | Some NAME | +| Identifier | Transformation | +| ---------------- | ----------------- | +| name | Name | +| someName | Some Name | +| someNAME | Some NAME | | some_custom_NAME | Some Custom NAME | | someName1234 | Some Name 1 2 3 4 | diff --git a/docs/configure/features-and-behavior.md b/docs/configure/features-and-behavior.md index a81aa6a55c74..ebfe081a0645 100644 --- a/docs/configure/features-and-behavior.md +++ b/docs/configure/features-and-behavior.md @@ -16,44 +16,44 @@ To control the layout of Storybook’s UI you can use `addons.setConfig` in your The following table details how to use the API values: -| Name | Type | Description | Example Value | -| --------------------- | :-------------: | :-----------------------------------------------------: | :-------------------------------------: | -| **navSize** | Number (pixels) | The size of the sidebar that shows a list of stories | `300` | -| **bottomPanelHeight** | Number (pixels) | The size of the addon panel when in the bottom position | `200` | -| **rightPanelWidth** | Number (pixels) | The size of the addon panel when in the right position | `200` | -| **panelPosition** | String | Where to show the addon panel | `'bottom'` or `'right'` | -| **enableShortcuts** | Boolean | Enable/disable shortcuts | `true` | -| **showToolbar** | Boolean | Show/hide tool bar | `true` | -| **theme** | Object | Storybook Theme, see next section | `undefined` | -| **selectedPanel** | String | Id to select an addon panel | `'storybook/actions/panel'` | -| **initialActive** | String | Select the default active tab on Mobile | `'sidebar'` or `'canvas'` or `'addons'` | -| **sidebar** | Object | Sidebar options, see below | `{ showRoots: false }` | -| **toolbar** | Object | Modify the tools in the toolbar using the addon id | `{ fullscreen: { hidden: false } } }` | +| Name | Type | Description | Example Value | +| --------------------- | --------------- | ------------------------------------------------------- | --------------------------------------- | +| **navSize** | Number (pixels) | The size of the sidebar that shows a list of stories | `300` | +| **bottomPanelHeight** | Number (pixels) | The size of the addon panel when in the bottom position | `200` | +| **rightPanelWidth** | Number (pixels) | The size of the addon panel when in the right position | `200` | +| **panelPosition** | String | Where to show the addon panel | `'bottom'` or `'right'` | +| **enableShortcuts** | Boolean | Enable/disable shortcuts | `true` | +| **showToolbar** | Boolean | Show/hide tool bar | `true` | +| **theme** | Object | Storybook Theme, see next section | `undefined` | +| **selectedPanel** | String | Id to select an addon panel | `'storybook/actions/panel'` | +| **initialActive** | String | Select the default active tab on Mobile | `'sidebar'` or `'canvas'` or `'addons'` | +| **sidebar** | Object | Sidebar options, see below | `{ showRoots: false }` | +| **toolbar** | Object | Modify the tools in the toolbar using the addon id | `{ fullscreen: { hidden: false } } }` | The following options are configurable under the `sidebar` namespace: -| Name | Type | Description | Example Value | -| ------------------ | :------: | :-----------------------------------------------------------: | :----------------------------------------------: | -| **showRoots** | Boolean | Display the top-level nodes as a "root" in the sidebar | `false` | -| **collapsedRoots** | Array | Set of root node IDs to visually collapse by default | `['misc', 'other']` | +| Name | Type | Description | Example Value | +| ------------------ | -------- | ------------------------------------------------------------- | ------------------------------------------------ | +| **showRoots** | Boolean | Display the top-level nodes as a "root" in the sidebar | `false` | +| **collapsedRoots** | Array | Set of root node IDs to visually collapse by default | `['misc', 'other']` | | **renderLabel** | Function | Create a custom label for tree nodes; must return a ReactNode | `(item) => {item.name}` | The following options are configurable under the `toolbar` namespace: -| Name | Type | Description | Example Value | -| ------ | :----: | :--------------------------------: | :-----------------: | +| Name | Type | Description | Example Value | +| ------ | ------ | ---------------------------------- | ------------------- | | **id** | String | Toggle visibility for toolbar item | `{ hidden: false }` | ## Configuring through URL parameters You can use URL parameters to configure some of the available features: -| Config option | Query param | Supported values | -| ------------------- | :----------: | :----------------------------: | -| **enableShortcuts** | `shortcuts` | `false` | -| --- (fullscreen) | `full` | `true`, `false` | -| --- (show sidebar) | `nav` | `true`, `false` | -| --- (show panel) | `panel` | `false`, `'right'`, `'bottom'` | -| **selectedPanel** | `addonPanel` | Any panel ID | -| **showTabs** | `tabs` | `true` | -| --- | `instrument` | `false`, `true` | +| Config option | Query param | Supported values | +| ------------------- | ------------ | ------------------------------ | +| **enableShortcuts** | `shortcuts` | `false` | +| --- (fullscreen) | `full` | `true`, `false` | +| --- (show sidebar) | `nav` | `true`, `false` | +| --- (show panel) | `panel` | `false`, `'right'`, `'bottom'` | +| **selectedPanel** | `addonPanel` | Any panel ID | +| **showTabs** | `tabs` | `true` | +| --- | `instrument` | `false`, `true` | diff --git a/docs/essentials/toolbars-and-globals.md b/docs/essentials/toolbars-and-globals.md index ad212c5f1c97..9c33e952354b 100644 --- a/docs/essentials/toolbars-and-globals.md +++ b/docs/essentials/toolbars-and-globals.md @@ -144,12 +144,12 @@ By adding the configuration element `right`, the text will be displayed on the r Here's a list of the configuration options available. -| MenuItem | Type | Description | Required | -| --------- | :----: | :-------------------------------------------------------------: | :------: | -| **value** | String | The string value of the menu that gets set in the globals | Yes | -| **title** | String | The main text of the title | Yes | -| **right** | String | A string that gets displayed on the right side of the menu | No | -| **icon** | String | An icon that gets shown in the toolbar if this item is selected | No | +| MenuItem | Type | Description | Required | +| --------- | ------ | --------------------------------------------------------------- | -------- | +| **value** | String | The string value of the menu that gets set in the globals | Yes | +| **title** | String | The main text of the title | Yes | +| **right** | String | A string that gets displayed on the right side of the menu | No | +| **icon** | String | An icon that gets shown in the toolbar if this item is selected | No | ## Consuming globals from within a story diff --git a/docs/writing-stories/naming-components-and-hierarchy.md b/docs/writing-stories/naming-components-and-hierarchy.md index 5757a2eda12a..b29b1135e2d5 100644 --- a/docs/writing-stories/naming-components-and-hierarchy.md +++ b/docs/writing-stories/naming-components-and-hierarchy.md @@ -146,12 +146,12 @@ The `storySort` can also accept a configuration object. -| Field | Type | Description | Required | Default Value | Example | -| ---------------- | :-----: | :------------------------------------------------------: | :------: | :---------------------: | :-----------------------: | -| **method** | String | Tells Storybook in which order the stories are displayed | No | Storybook configuration | `'alphabetical'` | -| **order** | Array | The stories to be shown, ordered by supplied name | No | Empty Array `[]` | `['Intro', 'Components']` | -| **includeNames** | Boolean | Include story name in sort calculation | No | `false` | `true` | -| **locales** | String | The locale required to be displayed | No | System locale | `en-US` | +| Field | Type | Description | Required | Default Value | Example | +| ---------------- | ------- | -------------------------------------------------------- | -------- | ----------------------- | ------------------------- | +| **method** | String | Tells Storybook in which order the stories are displayed | No | Storybook configuration | `'alphabetical'` | +| **order** | Array | The stories to be shown, ordered by supplied name | No | Empty Array `[]` | `['Intro', 'Components']` | +| **includeNames** | Boolean | Include story name in sort calculation | No | `false` | `true` | +| **locales** | String | The locale required to be displayed | No | System locale | `en-US` | To sort your stories alphabetically, set `method` to `'alphabetical'` and optionally set the `locales` string. To sort your stories using a custom list, use the `order` array; stories that don't match an item in the `order` list will appear after the items in the list. From 9c2d525b5483bd71da3ddca15dd265ce8d14e9f3 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Mon, 11 Mar 2024 10:12:08 +0100 Subject: [PATCH 45/70] fix the esbuild compatibility versions ranges --- code/builders/builder-manager/package.json | 2 +- code/lib/core-common/package.json | 2 +- code/package.json | 2 +- code/yarn.lock | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/builders/builder-manager/package.json b/code/builders/builder-manager/package.json index 637cdaf29eb3..7a95fbd78831 100644 --- a/code/builders/builder-manager/package.json +++ b/code/builders/builder-manager/package.json @@ -52,7 +52,7 @@ "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", "browser-assert": "^1.2.1", "ejs": "^3.1.8", - "esbuild": "^18.0.0 || ^19.0.0 || ^0.20.0", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0", "esbuild-plugin-alias": "^0.2.1", "express": "^4.17.3", "fs-extra": "^11.1.0", diff --git a/code/lib/core-common/package.json b/code/lib/core-common/package.json index 043fe7f08f3e..807bdceaef05 100644 --- a/code/lib/core-common/package.json +++ b/code/lib/core-common/package.json @@ -52,7 +52,7 @@ "@yarnpkg/libzip": "2.3.0", "chalk": "^4.1.0", "cross-spawn": "^7.0.3", - "esbuild": "^18.0.0 || ^19.0.0 || ^0.20.0", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0", "esbuild-register": "^3.5.0", "execa": "^5.0.0", "file-system-cache": "2.3.0", diff --git a/code/package.json b/code/package.json index 7dbcfb70ed22..bde4c2e67503 100644 --- a/code/package.json +++ b/code/package.json @@ -190,7 +190,7 @@ "concurrently": "^5.3.0", "cross-env": "^7.0.3", "danger": "^11.2.6", - "esbuild": "^18.0.0 || ^19.0.0 || ^0.20.0", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0", "esbuild-loader": "^3.0.0", "esbuild-plugin-alias": "^0.2.1", "eslint": "^8.56.0", diff --git a/code/yarn.lock b/code/yarn.lock index 624818aa64ec..19b2f6697c04 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -5476,7 +5476,7 @@ __metadata: "@yarnpkg/esbuild-plugin-pnp": "npm:^3.0.0-rc.10" browser-assert: "npm:^1.2.1" ejs: "npm:^3.1.8" - esbuild: "npm:^18.0.0 || ^19.0.0 || ^0.20.0" + esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0" esbuild-plugin-alias: "npm:^0.2.1" express: "npm:^4.17.3" fs-extra: "npm:^11.1.0" @@ -5742,7 +5742,7 @@ __metadata: "@yarnpkg/libzip": "npm:2.3.0" chalk: "npm:^4.1.0" cross-spawn: "npm:^7.0.3" - esbuild: "npm:^18.0.0 || ^19.0.0 || ^0.20.0" + esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0" esbuild-register: "npm:^3.5.0" execa: "npm:^5.0.0" file-system-cache: "npm:2.3.0" @@ -6679,7 +6679,7 @@ __metadata: concurrently: "npm:^5.3.0" cross-env: "npm:^7.0.3" danger: "npm:^11.2.6" - esbuild: "npm:^18.0.0 || ^19.0.0 || ^0.20.0" + esbuild: "npm:^0.18.0 || ^0.19.0 || ^0.20.0" esbuild-loader: "npm:^3.0.0" esbuild-plugin-alias: "npm:^0.2.1" eslint: "npm:^8.56.0" From a6e4d90993a1a027edd26536091a5751c34d1e94 Mon Sep 17 00:00:00 2001 From: storybook-bot <32066757+storybook-bot@users.noreply.github.com> Date: Mon, 11 Mar 2024 10:36:05 +0000 Subject: [PATCH 46/70] Write changelog for 8.0.0-rc.4 [skip ci] --- CHANGELOG.prerelease.md | 16 ++++++++++++++++ code/package.json | 3 ++- docs/versions/next.json | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.prerelease.md b/CHANGELOG.prerelease.md index fce4b4696b3a..2b0e49086ea5 100644 --- a/CHANGELOG.prerelease.md +++ b/CHANGELOG.prerelease.md @@ -1,3 +1,19 @@ +## 8.0.0-rc.4 + +- Actions: Fix attaching action after a spy is restored to original function - [#26364](https://github.com/storybookjs/storybook/pull/26364), thanks @kasperpeulen! +- CLI: Add explicit actions to header story - [#26352](https://github.com/storybookjs/storybook/pull/26352), thanks @kasperpeulen! +- CLI: Automigration for upgrading storybook related dependencies - [#26377](https://github.com/storybookjs/storybook/pull/26377), thanks @ndelangen! +- CLI: Fix doctor compatibility check - [#26363](https://github.com/storybookjs/storybook/pull/26363), thanks @yannbf! +- CLI: Fix fn reference in preact templates - [#26384](https://github.com/storybookjs/storybook/pull/26384), thanks @kasperpeulen! +- CLI: Remove duplicated dependency warning - [#26385](https://github.com/storybookjs/storybook/pull/26385), thanks @yannbf! +- CLI: Vite migration link (shorter) - [#26379](https://github.com/storybookjs/storybook/pull/26379), thanks @ndelangen! +- Composition: Fix refs not loading when there's multiple - [#26356](https://github.com/storybookjs/storybook/pull/26356), thanks @ndelangen! +- Dependencies: Broaden `esbuild` version range - [#26405](https://github.com/storybookjs/storybook/pull/26405), thanks @ndelangen! +- Maintenance: Replace `@storybook/testing-library` with `@storybook/test` in monorepo - [#26351](https://github.com/storybookjs/storybook/pull/26351), thanks @ndelangen! +- Maintenance: What's new modal changes - [#26355](https://github.com/storybookjs/storybook/pull/26355), thanks @kasperpeulen! +- Portable Stories: Fix injected root element changing layout - [#26387](https://github.com/storybookjs/storybook/pull/26387), thanks @JReinhold! +- React: Support all React component types in JSX Decorator - [#26382](https://github.com/storybookjs/storybook/pull/26382), thanks @yannbf! + ## 8.0.0-rc.3 - Addon-themes: Fix switcher initialization after first start - [#26353](https://github.com/storybookjs/storybook/pull/26353), thanks @valentinpalkovic! diff --git a/code/package.json b/code/package.json index bde4c2e67503..5adc95d90823 100644 --- a/code/package.json +++ b/code/package.json @@ -294,5 +294,6 @@ "Dependency Upgrades" ] ] - } + }, + "deferredNextVersion": "8.0.0-rc.4" } diff --git a/docs/versions/next.json b/docs/versions/next.json index 4de1279548ea..60521e66f7a9 100644 --- a/docs/versions/next.json +++ b/docs/versions/next.json @@ -1 +1 @@ -{"version":"8.0.0-rc.3","info":{"plain":"- Addon-themes: Fix switcher initialization after first start - [#26353](https://github.com/storybookjs/storybook/pull/26353), thanks @valentinpalkovic!\n- Build: Upgrade `esbuild` (`0.20.1`) - [#26255](https://github.com/storybookjs/storybook/pull/26255), thanks @43081j!\n- Core: Fix path separator issue in check-addon-order - [#26362](https://github.com/storybookjs/storybook/pull/26362), thanks @valentinpalkovic!\n- Dependencies: Remove `qs` from `@storybook/manager-api` & `@storybook/channels` - [#26285](https://github.com/storybookjs/storybook/pull/26285), thanks @43081j!\n- UI: Fix sidebar scrolling to selected story when state changes - [#26337](https://github.com/storybookjs/storybook/pull/26337), thanks @JReinhold!\n- UI: Remove 'left' property from TooltipLinkList and Link components - [#26324](https://github.com/storybookjs/storybook/pull/26324), thanks @valentinpalkovic!\n- Viewport: Fix editing when default viewport is set - [#26360](https://github.com/storybookjs/storybook/pull/26360), thanks @shilman!\n- Vue: Fix reference error when using re-exports with \\\"vue-component-meta\\\" - [#26303](https://github.com/storybookjs/storybook/pull/26303), thanks @larsrickert!"}} +{"version":"8.0.0-rc.4","info":{"plain":"- Actions: Fix attaching action after a spy is restored to original function - [#26364](https://github.com/storybookjs/storybook/pull/26364), thanks @kasperpeulen!\n- CLI: Add explicit actions to header story - [#26352](https://github.com/storybookjs/storybook/pull/26352), thanks @kasperpeulen!\n- CLI: Automigration for upgrading storybook related dependencies - [#26377](https://github.com/storybookjs/storybook/pull/26377), thanks @ndelangen!\n- CLI: Fix doctor compatibility check - [#26363](https://github.com/storybookjs/storybook/pull/26363), thanks @yannbf!\n- CLI: Fix fn reference in preact templates - [#26384](https://github.com/storybookjs/storybook/pull/26384), thanks @kasperpeulen!\n- CLI: Remove duplicated dependency warning - [#26385](https://github.com/storybookjs/storybook/pull/26385), thanks @yannbf!\n- CLI: Vite migration link (shorter) - [#26379](https://github.com/storybookjs/storybook/pull/26379), thanks @ndelangen!\n- Composition: Fix refs not loading when there's multiple - [#26356](https://github.com/storybookjs/storybook/pull/26356), thanks @ndelangen!\n- Dependencies: Broaden `esbuild` version range - [#26405](https://github.com/storybookjs/storybook/pull/26405), thanks @ndelangen!\n- Maintenance: Replace `@storybook/testing-library` with `@storybook/test` in monorepo - [#26351](https://github.com/storybookjs/storybook/pull/26351), thanks @ndelangen!\n- Maintenance: What's new modal changes - [#26355](https://github.com/storybookjs/storybook/pull/26355), thanks @kasperpeulen!\n- Portable Stories: Fix injected root element changing layout - [#26387](https://github.com/storybookjs/storybook/pull/26387), thanks @JReinhold!\n- React: Support all React component types in JSX Decorator - [#26382](https://github.com/storybookjs/storybook/pull/26382), thanks @yannbf!"}} From bfa05701390eea3954e853de4208f18b6862cd68 Mon Sep 17 00:00:00 2001 From: storybook-bot <32066757+storybook-bot@users.noreply.github.com> Date: Mon, 11 Mar 2024 12:07:18 +0000 Subject: [PATCH 47/70] Bump version from "8.0.0-rc.3" to "8.0.0-rc.4" [skip ci] --- code/addons/a11y/package.json | 2 +- code/addons/actions/package.json | 2 +- code/addons/backgrounds/package.json | 2 +- code/addons/controls/package.json | 2 +- code/addons/docs/package.json | 2 +- code/addons/essentials/package.json | 2 +- code/addons/gfm/package.json | 2 +- code/addons/highlight/package.json | 2 +- code/addons/interactions/package.json | 2 +- code/addons/jest/package.json | 2 +- code/addons/links/package.json | 2 +- code/addons/measure/package.json | 2 +- code/addons/onboarding/package.json | 2 +- code/addons/outline/package.json | 2 +- code/addons/storysource/package.json | 2 +- code/addons/themes/package.json | 2 +- code/addons/toolbars/package.json | 2 +- code/addons/viewport/package.json | 2 +- code/builders/builder-manager/package.json | 2 +- code/builders/builder-vite/package.json | 2 +- code/builders/builder-webpack5/package.json | 2 +- code/frameworks/angular/package.json | 2 +- code/frameworks/ember/package.json | 2 +- code/frameworks/html-vite/package.json | 2 +- code/frameworks/html-webpack5/package.json | 2 +- code/frameworks/nextjs/package.json | 2 +- code/frameworks/preact-vite/package.json | 2 +- code/frameworks/preact-webpack5/package.json | 2 +- code/frameworks/react-vite/package.json | 2 +- code/frameworks/react-webpack5/package.json | 2 +- code/frameworks/server-webpack5/package.json | 2 +- code/frameworks/svelte-vite/package.json | 2 +- code/frameworks/svelte-webpack5/package.json | 2 +- code/frameworks/sveltekit/package.json | 2 +- code/frameworks/vue3-vite/package.json | 2 +- code/frameworks/vue3-webpack5/package.json | 2 +- .../web-components-vite/package.json | 2 +- .../web-components-webpack5/package.json | 2 +- code/lib/channels/package.json | 2 +- code/lib/cli-sb/package.json | 2 +- code/lib/cli-storybook/package.json | 2 +- code/lib/cli/package.json | 2 +- code/lib/client-logger/package.json | 2 +- code/lib/codemod/package.json | 2 +- code/lib/core-common/package.json | 2 +- code/lib/core-common/src/versions.ts | 160 +++++++++--------- code/lib/core-events/package.json | 2 +- code/lib/core-server/package.json | 2 +- code/lib/core-webpack/package.json | 2 +- code/lib/csf-plugin/package.json | 2 +- code/lib/csf-tools/package.json | 2 +- code/lib/docs-tools/package.json | 2 +- code/lib/instrumenter/package.json | 2 +- code/lib/manager-api/package.json | 2 +- code/lib/manager-api/src/version.ts | 2 +- code/lib/node-logger/package.json | 2 +- code/lib/preview-api/package.json | 2 +- code/lib/preview/package.json | 2 +- code/lib/react-dom-shim/package.json | 2 +- code/lib/router/package.json | 2 +- code/lib/source-loader/package.json | 2 +- code/lib/telemetry/package.json | 2 +- code/lib/test/package.json | 2 +- code/lib/theming/package.json | 2 +- code/lib/types/package.json | 2 +- code/package.json | 5 +- code/presets/create-react-app/package.json | 2 +- code/presets/html-webpack/package.json | 2 +- code/presets/preact-webpack/package.json | 2 +- code/presets/react-webpack/package.json | 2 +- code/presets/server-webpack/package.json | 2 +- code/presets/svelte-webpack/package.json | 2 +- code/presets/vue3-webpack/package.json | 2 +- code/renderers/html/package.json | 2 +- code/renderers/preact/package.json | 2 +- code/renderers/react/package.json | 2 +- code/renderers/server/package.json | 2 +- code/renderers/svelte/package.json | 2 +- code/renderers/vue3/package.json | 2 +- code/renderers/web-components/package.json | 2 +- code/ui/blocks/package.json | 2 +- code/ui/components/package.json | 2 +- code/ui/manager/package.json | 2 +- 83 files changed, 163 insertions(+), 164 deletions(-) diff --git a/code/addons/a11y/package.json b/code/addons/a11y/package.json index 62524c1e5a07..9d832fb1b42f 100644 --- a/code/addons/a11y/package.json +++ b/code/addons/a11y/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-a11y", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Test component compliance with web accessibility standards", "keywords": [ "a11y", diff --git a/code/addons/actions/package.json b/code/addons/actions/package.json index 19af94829530..c4e8f4adf0e1 100644 --- a/code/addons/actions/package.json +++ b/code/addons/actions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-actions", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Get UI feedback when an action is performed on an interactive element", "keywords": [ "storybook", diff --git a/code/addons/backgrounds/package.json b/code/addons/backgrounds/package.json index 92c0fb53d8c3..52abe3b3bad4 100644 --- a/code/addons/backgrounds/package.json +++ b/code/addons/backgrounds/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-backgrounds", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Switch backgrounds to view components in different settings", "keywords": [ "addon", diff --git a/code/addons/controls/package.json b/code/addons/controls/package.json index 660b10007fd1..5c4714ecf4a1 100644 --- a/code/addons/controls/package.json +++ b/code/addons/controls/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-controls", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Interact with component inputs dynamically in the Storybook UI", "keywords": [ "addon", diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json index a902a49bae81..4e41f42a7200 100644 --- a/code/addons/docs/package.json +++ b/code/addons/docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-docs", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Document component usage and properties in Markdown", "keywords": [ "addon", diff --git a/code/addons/essentials/package.json b/code/addons/essentials/package.json index 8448dbe7e5b3..161b3271408e 100644 --- a/code/addons/essentials/package.json +++ b/code/addons/essentials/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-essentials", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Curated addons to bring out the best of Storybook", "keywords": [ "addon", diff --git a/code/addons/gfm/package.json b/code/addons/gfm/package.json index a8a8cfbc87e9..fcd0fb36c190 100644 --- a/code/addons/gfm/package.json +++ b/code/addons/gfm/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-mdx-gfm", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "GitHub Flavored Markdown in Storybook", "keywords": [ "addon", diff --git a/code/addons/highlight/package.json b/code/addons/highlight/package.json index 19aa4b82b078..d7d172852e7b 100644 --- a/code/addons/highlight/package.json +++ b/code/addons/highlight/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-highlight", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Highlight DOM nodes within your stories", "keywords": [ "storybook-addons", diff --git a/code/addons/interactions/package.json b/code/addons/interactions/package.json index da2ff1d5b004..c1262deb3d10 100644 --- a/code/addons/interactions/package.json +++ b/code/addons/interactions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-interactions", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Automate, test and debug user interactions", "keywords": [ "storybook-addons", diff --git a/code/addons/jest/package.json b/code/addons/jest/package.json index 735dcb6d72d2..9ba05ec5f024 100644 --- a/code/addons/jest/package.json +++ b/code/addons/jest/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-jest", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "React storybook addon that show component jest report", "keywords": [ "addon", diff --git a/code/addons/links/package.json b/code/addons/links/package.json index 1f09384575a8..1d6e3435af24 100644 --- a/code/addons/links/package.json +++ b/code/addons/links/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-links", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Link stories together to build demos and prototypes with your UI components", "keywords": [ "addon", diff --git a/code/addons/measure/package.json b/code/addons/measure/package.json index 67e401c94f00..c3ce95d213cf 100644 --- a/code/addons/measure/package.json +++ b/code/addons/measure/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-measure", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Inspect layouts by visualizing the box model", "keywords": [ "storybook-addons", diff --git a/code/addons/onboarding/package.json b/code/addons/onboarding/package.json index 62077801df70..c4159cc2d927 100644 --- a/code/addons/onboarding/package.json +++ b/code/addons/onboarding/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", diff --git a/code/addons/outline/package.json b/code/addons/outline/package.json index b9f7ec636092..129747a9615c 100644 --- a/code/addons/outline/package.json +++ b/code/addons/outline/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-outline", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Outline all elements with CSS to help with layout placement and alignment", "keywords": [ "storybook-addons", diff --git a/code/addons/storysource/package.json b/code/addons/storysource/package.json index c4f444ea8bf1..704a1dd6b215 100644 --- a/code/addons/storysource/package.json +++ b/code/addons/storysource/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storysource", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "View a story’s source code to see how it works and paste into your app", "keywords": [ "addon", diff --git a/code/addons/themes/package.json b/code/addons/themes/package.json index d166a0ac638e..f76abb04b06a 100644 --- a/code/addons/themes/package.json +++ b/code/addons/themes/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-themes", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Switch between multiple themes for you components in Storybook", "keywords": [ "css", diff --git a/code/addons/toolbars/package.json b/code/addons/toolbars/package.json index 885e2aab0788..68198a7e380c 100644 --- a/code/addons/toolbars/package.json +++ b/code/addons/toolbars/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-toolbars", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Create your own toolbar items that control story rendering", "keywords": [ "addon", diff --git a/code/addons/viewport/package.json b/code/addons/viewport/package.json index 72393389d5e0..957d7b13f347 100644 --- a/code/addons/viewport/package.json +++ b/code/addons/viewport/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-viewport", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Build responsive components by adjusting Storybook’s viewport size and orientation", "keywords": [ "addon", diff --git a/code/builders/builder-manager/package.json b/code/builders/builder-manager/package.json index 7a95fbd78831..562a6543b8d4 100644 --- a/code/builders/builder-manager/package.json +++ b/code/builders/builder-manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-manager", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook manager builder", "keywords": [ "storybook" diff --git a/code/builders/builder-vite/package.json b/code/builders/builder-vite/package.json index e0fa92542ade..b757de543cd2 100644 --- a/code/builders/builder-vite/package.json +++ b/code/builders/builder-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-vite", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "A plugin to run and build Storybooks with Vite", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme", "bugs": { diff --git a/code/builders/builder-webpack5/package.json b/code/builders/builder-webpack5/package.json index 27484944fc21..c84e6ff91318 100644 --- a/code/builders/builder-webpack5/package.json +++ b/code/builders/builder-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-webpack5", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json index 17a361b060f4..e95b942c6b6c 100644 --- a/code/frameworks/angular/package.json +++ b/code/frameworks/angular/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/angular", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Angular: Develop Angular components in isolation with hot reloading.", "keywords": [ "storybook", diff --git a/code/frameworks/ember/package.json b/code/frameworks/ember/package.json index c0d113085a11..63f20400c17f 100644 --- a/code/frameworks/ember/package.json +++ b/code/frameworks/ember/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/ember", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/frameworks/ember", "bugs": { diff --git a/code/frameworks/html-vite/package.json b/code/frameworks/html-vite/package.json index 150d8fc23198..8939c9d11a13 100644 --- a/code/frameworks/html-vite/package.json +++ b/code/frameworks/html-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-vite", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for HTML and Vite: Develop HTML in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/html-webpack5/package.json b/code/frameworks/html-webpack5/package.json index 9eaf30c24120..fb1088cdbc0a 100644 --- a/code/frameworks/html-webpack5/package.json +++ b/code/frameworks/html-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-webpack5", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/nextjs/package.json b/code/frameworks/nextjs/package.json index 8aa2e629d087..6a51cb37c598 100644 --- a/code/frameworks/nextjs/package.json +++ b/code/frameworks/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/nextjs", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Next.js", "keywords": [ "storybook", diff --git a/code/frameworks/preact-vite/package.json b/code/frameworks/preact-vite/package.json index b24dcb6747f8..eee35abf8fd6 100644 --- a/code/frameworks/preact-vite/package.json +++ b/code/frameworks/preact-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-vite", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Preact and Vite: Develop Preact components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/preact-webpack5/package.json b/code/frameworks/preact-webpack5/package.json index 212a29b84f35..89f065ab1b12 100644 --- a/code/frameworks/preact-webpack5/package.json +++ b/code/frameworks/preact-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-webpack5", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" diff --git a/code/frameworks/react-vite/package.json b/code/frameworks/react-vite/package.json index f7d426298853..9de5b270884c 100644 --- a/code/frameworks/react-vite/package.json +++ b/code/frameworks/react-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-vite", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for React and Vite: Develop React components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/react-webpack5/package.json b/code/frameworks/react-webpack5/package.json index 71a2c244dde1..d69d0f49a329 100644 --- a/code/frameworks/react-webpack5/package.json +++ b/code/frameworks/react-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-webpack5", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/server-webpack5/package.json b/code/frameworks/server-webpack5/package.json index 466376c00d67..82f203429481 100644 --- a/code/frameworks/server-webpack5/package.json +++ b/code/frameworks/server-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server-webpack5", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/svelte-vite/package.json b/code/frameworks/svelte-vite/package.json index 44acfb7aed9b..3f1c90667782 100644 --- a/code/frameworks/svelte-vite/package.json +++ b/code/frameworks/svelte-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-vite", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Svelte and Vite: Develop Svelte components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/svelte-webpack5/package.json b/code/frameworks/svelte-webpack5/package.json index 3cc2df33f6e4..4012b7283772 100644 --- a/code/frameworks/svelte-webpack5/package.json +++ b/code/frameworks/svelte-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-webpack5", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/sveltekit/package.json b/code/frameworks/sveltekit/package.json index 8321a71cf1b1..f05e664c2737 100644 --- a/code/frameworks/sveltekit/package.json +++ b/code/frameworks/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/sveltekit", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for SvelteKit", "keywords": [ "storybook", diff --git a/code/frameworks/vue3-vite/package.json b/code/frameworks/vue3-vite/package.json index 473b0f6ca101..992cbe6bc8f9 100644 --- a/code/frameworks/vue3-vite/package.json +++ b/code/frameworks/vue3-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-vite", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Vue3 and Vite: Develop Vue3 components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/vue3-webpack5/package.json b/code/frameworks/vue3-webpack5/package.json index 24ce41095e2d..0187566a8403 100644 --- a/code/frameworks/vue3-webpack5/package.json +++ b/code/frameworks/vue3-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-webpack5", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/web-components-vite/package.json b/code/frameworks/web-components-vite/package.json index a4bc976dedc5..ae3dda76f624 100644 --- a/code/frameworks/web-components-vite/package.json +++ b/code/frameworks/web-components-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-vite", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for web-components and Vite: Develop Web Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/web-components-webpack5/package.json b/code/frameworks/web-components-webpack5/package.json index bdeb505ac803..d2f16a200664 100644 --- a/code/frameworks/web-components-webpack5/package.json +++ b/code/frameworks/web-components-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-webpack5", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.", "keywords": [ "lit", diff --git a/code/lib/channels/package.json b/code/lib/channels/package.json index 3b051a7081af..4dde94702018 100644 --- a/code/lib/channels/package.json +++ b/code/lib/channels/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channels", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "", "keywords": [ "storybook" diff --git a/code/lib/cli-sb/package.json b/code/lib/cli-sb/package.json index 637277a30b38..e2f7ecca9c6b 100644 --- a/code/lib/cli-sb/package.json +++ b/code/lib/cli-sb/package.json @@ -1,6 +1,6 @@ { "name": "sb", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook CLI", "keywords": [ "storybook" diff --git a/code/lib/cli-storybook/package.json b/code/lib/cli-storybook/package.json index 8181570c7186..81dccf1a3750 100644 --- a/code/lib/cli-storybook/package.json +++ b/code/lib/cli-storybook/package.json @@ -1,6 +1,6 @@ { "name": "storybook", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook CLI", "keywords": [ "storybook" diff --git a/code/lib/cli/package.json b/code/lib/cli/package.json index b55e6c46c42d..ee01d8cb4bb6 100644 --- a/code/lib/cli/package.json +++ b/code/lib/cli/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/cli", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook's CLI - install, dev, build, upgrade, and more", "keywords": [ "cli", diff --git a/code/lib/client-logger/package.json b/code/lib/client-logger/package.json index 602983c51ed5..938191cceb1b 100644 --- a/code/lib/client-logger/package.json +++ b/code/lib/client-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-logger", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "", "keywords": [ "storybook" diff --git a/code/lib/codemod/package.json b/code/lib/codemod/package.json index 3acf4a8f3f41..4142946bc4a0 100644 --- a/code/lib/codemod/package.json +++ b/code/lib/codemod/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/codemod", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "A collection of codemod scripts written with JSCodeshift", "keywords": [ "storybook" diff --git a/code/lib/core-common/package.json b/code/lib/core-common/package.json index 807bdceaef05..f64dbdb36892 100644 --- a/code/lib/core-common/package.json +++ b/code/lib/core-common/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-common", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/core-common/src/versions.ts b/code/lib/core-common/src/versions.ts index 56e5adfebd73..1c852592eb5a 100644 --- a/code/lib/core-common/src/versions.ts +++ b/code/lib/core-common/src/versions.ts @@ -1,83 +1,83 @@ // auto generated file, do not edit export default { - '@storybook/addon-a11y': '8.0.0-rc.3', - '@storybook/addon-actions': '8.0.0-rc.3', - '@storybook/addon-backgrounds': '8.0.0-rc.3', - '@storybook/addon-controls': '8.0.0-rc.3', - '@storybook/addon-docs': '8.0.0-rc.3', - '@storybook/addon-essentials': '8.0.0-rc.3', - '@storybook/addon-highlight': '8.0.0-rc.3', - '@storybook/addon-interactions': '8.0.0-rc.3', - '@storybook/addon-jest': '8.0.0-rc.3', - '@storybook/addon-links': '8.0.0-rc.3', - '@storybook/addon-mdx-gfm': '8.0.0-rc.3', - '@storybook/addon-measure': '8.0.0-rc.3', - '@storybook/addon-onboarding': '8.0.0-rc.3', - '@storybook/addon-outline': '8.0.0-rc.3', - '@storybook/addon-storysource': '8.0.0-rc.3', - '@storybook/addon-themes': '8.0.0-rc.3', - '@storybook/addon-toolbars': '8.0.0-rc.3', - '@storybook/addon-viewport': '8.0.0-rc.3', - '@storybook/angular': '8.0.0-rc.3', - '@storybook/blocks': '8.0.0-rc.3', - '@storybook/builder-manager': '8.0.0-rc.3', - '@storybook/builder-vite': '8.0.0-rc.3', - '@storybook/builder-webpack5': '8.0.0-rc.3', - '@storybook/channels': '8.0.0-rc.3', - '@storybook/cli': '8.0.0-rc.3', - '@storybook/client-logger': '8.0.0-rc.3', - '@storybook/codemod': '8.0.0-rc.3', - '@storybook/components': '8.0.0-rc.3', - '@storybook/core-common': '8.0.0-rc.3', - '@storybook/core-events': '8.0.0-rc.3', - '@storybook/core-server': '8.0.0-rc.3', - '@storybook/core-webpack': '8.0.0-rc.3', - '@storybook/csf-plugin': '8.0.0-rc.3', - '@storybook/csf-tools': '8.0.0-rc.3', - '@storybook/docs-tools': '8.0.0-rc.3', - '@storybook/ember': '8.0.0-rc.3', - '@storybook/html': '8.0.0-rc.3', - '@storybook/html-vite': '8.0.0-rc.3', - '@storybook/html-webpack5': '8.0.0-rc.3', - '@storybook/instrumenter': '8.0.0-rc.3', - '@storybook/manager': '8.0.0-rc.3', - '@storybook/manager-api': '8.0.0-rc.3', - '@storybook/nextjs': '8.0.0-rc.3', - '@storybook/node-logger': '8.0.0-rc.3', - '@storybook/preact': '8.0.0-rc.3', - '@storybook/preact-vite': '8.0.0-rc.3', - '@storybook/preact-webpack5': '8.0.0-rc.3', - '@storybook/preset-create-react-app': '8.0.0-rc.3', - '@storybook/preset-html-webpack': '8.0.0-rc.3', - '@storybook/preset-preact-webpack': '8.0.0-rc.3', - '@storybook/preset-react-webpack': '8.0.0-rc.3', - '@storybook/preset-server-webpack': '8.0.0-rc.3', - '@storybook/preset-svelte-webpack': '8.0.0-rc.3', - '@storybook/preset-vue3-webpack': '8.0.0-rc.3', - '@storybook/preview': '8.0.0-rc.3', - '@storybook/preview-api': '8.0.0-rc.3', - '@storybook/react': '8.0.0-rc.3', - '@storybook/react-dom-shim': '8.0.0-rc.3', - '@storybook/react-vite': '8.0.0-rc.3', - '@storybook/react-webpack5': '8.0.0-rc.3', - '@storybook/router': '8.0.0-rc.3', - '@storybook/server': '8.0.0-rc.3', - '@storybook/server-webpack5': '8.0.0-rc.3', - '@storybook/source-loader': '8.0.0-rc.3', - '@storybook/svelte': '8.0.0-rc.3', - '@storybook/svelte-vite': '8.0.0-rc.3', - '@storybook/svelte-webpack5': '8.0.0-rc.3', - '@storybook/sveltekit': '8.0.0-rc.3', - '@storybook/telemetry': '8.0.0-rc.3', - '@storybook/test': '8.0.0-rc.3', - '@storybook/theming': '8.0.0-rc.3', - '@storybook/types': '8.0.0-rc.3', - '@storybook/vue3': '8.0.0-rc.3', - '@storybook/vue3-vite': '8.0.0-rc.3', - '@storybook/vue3-webpack5': '8.0.0-rc.3', - '@storybook/web-components': '8.0.0-rc.3', - '@storybook/web-components-vite': '8.0.0-rc.3', - '@storybook/web-components-webpack5': '8.0.0-rc.3', - sb: '8.0.0-rc.3', - storybook: '8.0.0-rc.3', + '@storybook/addon-a11y': '8.0.0-rc.4', + '@storybook/addon-actions': '8.0.0-rc.4', + '@storybook/addon-backgrounds': '8.0.0-rc.4', + '@storybook/addon-controls': '8.0.0-rc.4', + '@storybook/addon-docs': '8.0.0-rc.4', + '@storybook/addon-essentials': '8.0.0-rc.4', + '@storybook/addon-highlight': '8.0.0-rc.4', + '@storybook/addon-interactions': '8.0.0-rc.4', + '@storybook/addon-jest': '8.0.0-rc.4', + '@storybook/addon-links': '8.0.0-rc.4', + '@storybook/addon-mdx-gfm': '8.0.0-rc.4', + '@storybook/addon-measure': '8.0.0-rc.4', + '@storybook/addon-onboarding': '8.0.0-rc.4', + '@storybook/addon-outline': '8.0.0-rc.4', + '@storybook/addon-storysource': '8.0.0-rc.4', + '@storybook/addon-themes': '8.0.0-rc.4', + '@storybook/addon-toolbars': '8.0.0-rc.4', + '@storybook/addon-viewport': '8.0.0-rc.4', + '@storybook/angular': '8.0.0-rc.4', + '@storybook/blocks': '8.0.0-rc.4', + '@storybook/builder-manager': '8.0.0-rc.4', + '@storybook/builder-vite': '8.0.0-rc.4', + '@storybook/builder-webpack5': '8.0.0-rc.4', + '@storybook/channels': '8.0.0-rc.4', + '@storybook/cli': '8.0.0-rc.4', + '@storybook/client-logger': '8.0.0-rc.4', + '@storybook/codemod': '8.0.0-rc.4', + '@storybook/components': '8.0.0-rc.4', + '@storybook/core-common': '8.0.0-rc.4', + '@storybook/core-events': '8.0.0-rc.4', + '@storybook/core-server': '8.0.0-rc.4', + '@storybook/core-webpack': '8.0.0-rc.4', + '@storybook/csf-plugin': '8.0.0-rc.4', + '@storybook/csf-tools': '8.0.0-rc.4', + '@storybook/docs-tools': '8.0.0-rc.4', + '@storybook/ember': '8.0.0-rc.4', + '@storybook/html': '8.0.0-rc.4', + '@storybook/html-vite': '8.0.0-rc.4', + '@storybook/html-webpack5': '8.0.0-rc.4', + '@storybook/instrumenter': '8.0.0-rc.4', + '@storybook/manager': '8.0.0-rc.4', + '@storybook/manager-api': '8.0.0-rc.4', + '@storybook/nextjs': '8.0.0-rc.4', + '@storybook/node-logger': '8.0.0-rc.4', + '@storybook/preact': '8.0.0-rc.4', + '@storybook/preact-vite': '8.0.0-rc.4', + '@storybook/preact-webpack5': '8.0.0-rc.4', + '@storybook/preset-create-react-app': '8.0.0-rc.4', + '@storybook/preset-html-webpack': '8.0.0-rc.4', + '@storybook/preset-preact-webpack': '8.0.0-rc.4', + '@storybook/preset-react-webpack': '8.0.0-rc.4', + '@storybook/preset-server-webpack': '8.0.0-rc.4', + '@storybook/preset-svelte-webpack': '8.0.0-rc.4', + '@storybook/preset-vue3-webpack': '8.0.0-rc.4', + '@storybook/preview': '8.0.0-rc.4', + '@storybook/preview-api': '8.0.0-rc.4', + '@storybook/react': '8.0.0-rc.4', + '@storybook/react-dom-shim': '8.0.0-rc.4', + '@storybook/react-vite': '8.0.0-rc.4', + '@storybook/react-webpack5': '8.0.0-rc.4', + '@storybook/router': '8.0.0-rc.4', + '@storybook/server': '8.0.0-rc.4', + '@storybook/server-webpack5': '8.0.0-rc.4', + '@storybook/source-loader': '8.0.0-rc.4', + '@storybook/svelte': '8.0.0-rc.4', + '@storybook/svelte-vite': '8.0.0-rc.4', + '@storybook/svelte-webpack5': '8.0.0-rc.4', + '@storybook/sveltekit': '8.0.0-rc.4', + '@storybook/telemetry': '8.0.0-rc.4', + '@storybook/test': '8.0.0-rc.4', + '@storybook/theming': '8.0.0-rc.4', + '@storybook/types': '8.0.0-rc.4', + '@storybook/vue3': '8.0.0-rc.4', + '@storybook/vue3-vite': '8.0.0-rc.4', + '@storybook/vue3-webpack5': '8.0.0-rc.4', + '@storybook/web-components': '8.0.0-rc.4', + '@storybook/web-components-vite': '8.0.0-rc.4', + '@storybook/web-components-webpack5': '8.0.0-rc.4', + sb: '8.0.0-rc.4', + storybook: '8.0.0-rc.4', }; diff --git a/code/lib/core-events/package.json b/code/lib/core-events/package.json index 5cae8b0d103c..3f0747cf92aa 100644 --- a/code/lib/core-events/package.json +++ b/code/lib/core-events/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-events", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Event names used in storybook core", "keywords": [ "storybook" diff --git a/code/lib/core-server/package.json b/code/lib/core-server/package.json index 5676b03ce288..397682e68f88 100644 --- a/code/lib/core-server/package.json +++ b/code/lib/core-server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-server", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/core-webpack/package.json b/code/lib/core-webpack/package.json index 1ff1b0e9bed1..5a47cdc289e9 100644 --- a/code/lib/core-webpack/package.json +++ b/code/lib/core-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-webpack", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/csf-plugin/package.json b/code/lib/csf-plugin/package.json index 407367b12ec6..43b1ab413c13 100644 --- a/code/lib/csf-plugin/package.json +++ b/code/lib/csf-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-plugin", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Enrich CSF files via static analysis", "keywords": [ "storybook" diff --git a/code/lib/csf-tools/package.json b/code/lib/csf-tools/package.json index b15707a80768..b1977ce9e9a7 100644 --- a/code/lib/csf-tools/package.json +++ b/code/lib/csf-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-tools", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Parse and manipulate CSF and Storybook config files", "keywords": [ "storybook" diff --git a/code/lib/docs-tools/package.json b/code/lib/docs-tools/package.json index b624faa60690..f7794aee8bd5 100644 --- a/code/lib/docs-tools/package.json +++ b/code/lib/docs-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/docs-tools", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Shared utility functions for frameworks to implement docs", "keywords": [ "storybook" diff --git a/code/lib/instrumenter/package.json b/code/lib/instrumenter/package.json index 23fd1a4c97da..c5b8107c33da 100644 --- a/code/lib/instrumenter/package.json +++ b/code/lib/instrumenter/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/instrumenter", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "", "keywords": [ "storybook" diff --git a/code/lib/manager-api/package.json b/code/lib/manager-api/package.json index 7f0f18ead48f..a198d58b9059 100644 --- a/code/lib/manager-api/package.json +++ b/code/lib/manager-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager-api", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Core Storybook Manager API & Context", "keywords": [ "storybook" diff --git a/code/lib/manager-api/src/version.ts b/code/lib/manager-api/src/version.ts index 22afecdd372a..238a50abbb29 100644 --- a/code/lib/manager-api/src/version.ts +++ b/code/lib/manager-api/src/version.ts @@ -1 +1 @@ -export const version = '8.0.0-rc.3'; +export const version = '8.0.0-rc.4'; diff --git a/code/lib/node-logger/package.json b/code/lib/node-logger/package.json index 0c7ff57a0d26..79d051952eb2 100644 --- a/code/lib/node-logger/package.json +++ b/code/lib/node-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/node-logger", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "", "keywords": [ "storybook" diff --git a/code/lib/preview-api/package.json b/code/lib/preview-api/package.json index 8a6c2cd1e00b..a7a8a9b06751 100644 --- a/code/lib/preview-api/package.json +++ b/code/lib/preview-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview-api", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "", "keywords": [ "storybook" diff --git a/code/lib/preview/package.json b/code/lib/preview/package.json index 22f4977f5cda..bd9c345305c8 100644 --- a/code/lib/preview/package.json +++ b/code/lib/preview/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "", "keywords": [ "storybook" diff --git a/code/lib/react-dom-shim/package.json b/code/lib/react-dom-shim/package.json index 2f4e5054d02c..cf959321d247 100644 --- a/code/lib/react-dom-shim/package.json +++ b/code/lib/react-dom-shim/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-dom-shim", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "", "keywords": [ "storybook" diff --git a/code/lib/router/package.json b/code/lib/router/package.json index a590ca8df996..f89a79205956 100644 --- a/code/lib/router/package.json +++ b/code/lib/router/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/router", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Core Storybook Router", "keywords": [ "storybook" diff --git a/code/lib/source-loader/package.json b/code/lib/source-loader/package.json index ca90db1a633f..ae7013a8a97a 100644 --- a/code/lib/source-loader/package.json +++ b/code/lib/source-loader/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/source-loader", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Source loader", "keywords": [ "lib", diff --git a/code/lib/telemetry/package.json b/code/lib/telemetry/package.json index ba2ac459326b..7622ae48b100 100644 --- a/code/lib/telemetry/package.json +++ b/code/lib/telemetry/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/telemetry", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Telemetry logging for crash reports and usage statistics", "keywords": [ "storybook" diff --git a/code/lib/test/package.json b/code/lib/test/package.json index cd22fb90d648..35f70c3fa448 100644 --- a/code/lib/test/package.json +++ b/code/lib/test/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/test", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "", "keywords": [ "storybook" diff --git a/code/lib/theming/package.json b/code/lib/theming/package.json index 0d99fade2da8..8e05a12d6b02 100644 --- a/code/lib/theming/package.json +++ b/code/lib/theming/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/theming", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Core Storybook Components", "keywords": [ "storybook" diff --git a/code/lib/types/package.json b/code/lib/types/package.json index 02ce06531951..a6dda430d034 100644 --- a/code/lib/types/package.json +++ b/code/lib/types/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/types", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Core Storybook TS Types", "keywords": [ "storybook" diff --git a/code/package.json b/code/package.json index 5adc95d90823..42309691e56c 100644 --- a/code/package.json +++ b/code/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/root", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "private": true, "description": "Storybook root", "homepage": "https://storybook.js.org/", @@ -294,6 +294,5 @@ "Dependency Upgrades" ] ] - }, - "deferredNextVersion": "8.0.0-rc.4" + } } diff --git a/code/presets/create-react-app/package.json b/code/presets/create-react-app/package.json index 4da447b1d7f0..cfa0011c37ab 100644 --- a/code/presets/create-react-app/package.json +++ b/code/presets/create-react-app/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-create-react-app", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Create React App preset", "keywords": [ "storybook" diff --git a/code/presets/html-webpack/package.json b/code/presets/html-webpack/package.json index 748df6affd50..d9c8eb8d668e 100644 --- a/code/presets/html-webpack/package.json +++ b/code/presets/html-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-html-webpack", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/preact-webpack/package.json b/code/presets/preact-webpack/package.json index c5c9d587425f..86d416bf0635 100644 --- a/code/presets/preact-webpack/package.json +++ b/code/presets/preact-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-preact-webpack", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" diff --git a/code/presets/react-webpack/package.json b/code/presets/react-webpack/package.json index df70d13120c1..3deb8a330927 100644 --- a/code/presets/react-webpack/package.json +++ b/code/presets/react-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-react-webpack", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading", "keywords": [ "storybook" diff --git a/code/presets/server-webpack/package.json b/code/presets/server-webpack/package.json index 762d5d7de662..ecf9225400e1 100644 --- a/code/presets/server-webpack/package.json +++ b/code/presets/server-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-server-webpack", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/svelte-webpack/package.json b/code/presets/svelte-webpack/package.json index 0552c6bd3d7c..1841c80019fe 100644 --- a/code/presets/svelte-webpack/package.json +++ b/code/presets/svelte-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-svelte-webpack", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/vue3-webpack/package.json b/code/presets/vue3-webpack/package.json index 3c2e120a2273..e35b0c2f09c0 100644 --- a/code/presets/vue3-webpack/package.json +++ b/code/presets/vue3-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-vue3-webpack", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/renderers/html/package.json b/code/renderers/html/package.json index 8154fa296f89..cb811c460fd1 100644 --- a/code/renderers/html/package.json +++ b/code/renderers/html/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook HTML renderer", "keywords": [ "storybook" diff --git a/code/renderers/preact/package.json b/code/renderers/preact/package.json index 528f5e0bc060..7f5f1ae7d0e8 100644 --- a/code/renderers/preact/package.json +++ b/code/renderers/preact/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook Preact renderer", "keywords": [ "storybook" diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json index 679171d7fc16..81b311d0c9f9 100644 --- a/code/renderers/react/package.json +++ b/code/renderers/react/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook React renderer", "keywords": [ "storybook" diff --git a/code/renderers/server/package.json b/code/renderers/server/package.json index e8c3a047b49a..efb3bd37ef39 100644 --- a/code/renderers/server/package.json +++ b/code/renderers/server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook Server renderer", "keywords": [ "storybook" diff --git a/code/renderers/svelte/package.json b/code/renderers/svelte/package.json index 33d851d2a76a..aa299991281a 100644 --- a/code/renderers/svelte/package.json +++ b/code/renderers/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook Svelte renderer", "keywords": [ "storybook" diff --git a/code/renderers/vue3/package.json b/code/renderers/vue3/package.json index 087d5cf3dc14..0e6200950b6e 100644 --- a/code/renderers/vue3/package.json +++ b/code/renderers/vue3/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook Vue 3 renderer", "keywords": [ "storybook" diff --git a/code/renderers/web-components/package.json b/code/renderers/web-components/package.json index 7955d99c7918..1a8fea295854 100644 --- a/code/renderers/web-components/package.json +++ b/code/renderers/web-components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook web-components renderer", "keywords": [ "lit", diff --git a/code/ui/blocks/package.json b/code/ui/blocks/package.json index de499745fba3..6defdcb29635 100644 --- a/code/ui/blocks/package.json +++ b/code/ui/blocks/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/blocks", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Storybook Doc Blocks", "keywords": [ "storybook" diff --git a/code/ui/components/package.json b/code/ui/components/package.json index 6b8e39d61b82..f6ebe8539469 100644 --- a/code/ui/components/package.json +++ b/code/ui/components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/components", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Core Storybook Components", "keywords": [ "storybook" diff --git a/code/ui/manager/package.json b/code/ui/manager/package.json index c22b8c3e6954..257a1906b48c 100644 --- a/code/ui/manager/package.json +++ b/code/ui/manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager", - "version": "8.0.0-rc.3", + "version": "8.0.0-rc.4", "description": "Core Storybook UI", "keywords": [ "storybook" From d978771b182d2a98035fa650f91fa7b949ab2089 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Mon, 11 Mar 2024 13:57:58 +0100 Subject: [PATCH 48/70] add a flag for detecting is the latest version we got from npm matches the version of the CLI exactly --- code/lib/cli/src/automigrate/index.ts | 4 +++- code/lib/cli/src/automigrate/types.ts | 5 +++-- code/lib/cli/src/migrate.ts | 7 ++++--- code/lib/cli/src/upgrade.ts | 4 +++- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/code/lib/cli/src/automigrate/index.ts b/code/lib/cli/src/automigrate/index.ts index 20cbf98a4166..340a90f7ec38 100644 --- a/code/lib/cli/src/automigrate/index.ts +++ b/code/lib/cli/src/automigrate/index.ts @@ -103,6 +103,7 @@ export const doAutomigrate = async (options: AutofixOptionsFromCLI) => { mainConfigPath, configDir, isUpgrade: false, + isLatest: false, }); if (outcome) { @@ -125,6 +126,7 @@ export const automigrate = async ({ skipInstall, hideMigrationSummary = false, isUpgrade, + isLatest, }: AutofixOptions): Promise<{ fixResults: Record; preCheckFailure?: PreCheckFailure; @@ -140,7 +142,7 @@ export const automigrate = async ({ // we only allow this automigration when the user explicitly asks for it, or they are upgrading to the latest version of storybook if ( fix.id === upgradeStorybookRelatedDependencies.id && - isUpgrade !== 'latest' && + isLatest === false && fixId !== upgradeStorybookRelatedDependencies.id ) { return false; diff --git a/code/lib/cli/src/automigrate/types.ts b/code/lib/cli/src/automigrate/types.ts index 8dad3d3d2fa9..43447102162f 100644 --- a/code/lib/cli/src/automigrate/types.ts +++ b/code/lib/cli/src/automigrate/types.ts @@ -1,5 +1,5 @@ -import type { StorybookConfigRaw } from '@storybook/types'; import type { JsPackageManager, PackageManagerName } from '@storybook/core-common'; +import type { StorybookConfigRaw } from '@storybook/types'; export interface CheckOptions { packageManager: JsPackageManager; @@ -75,7 +75,8 @@ export interface AutofixOptions extends Omit Date: Mon, 11 Mar 2024 13:59:42 +0100 Subject: [PATCH 49/70] Fix performance regressions --- .circleci/config.yml | 1 + ...@vitest-expect-npm-1.3.1-973071a540.patch} | 18 +- code/addons/interactions/package.json | 5 +- .../builders/builder-vite/src/optimizeDeps.ts | 3 +- code/lib/instrumenter/package.json | 2 +- code/lib/manager-api/package.json | 1 - code/lib/preview-api/package.json | 1 - code/lib/test/package.json | 10 +- code/package.json | 5 +- .../vue3/src/docs/sourceDecorator.ts | 2 +- code/ui/blocks/src/blocks/ArgTypes.tsx | 14 +- code/ui/blocks/src/blocks/Controls.tsx | 14 +- code/yarn.lock | 604 +++--------------- 13 files changed, 140 insertions(+), 540 deletions(-) rename code/.yarn/patches/{@vitest-expect-npm-1.1.3-2062bf533f.patch => @vitest-expect-npm-1.3.1-973071a540.patch} (85%) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0d3340694846..b34288f775cb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -124,6 +124,7 @@ jobs: command: | yarn task --task compile --start-from=auto --no-link --debug git diff --exit-code + yarn dedupe --check - run: name: Publish to Verdaccio command: | diff --git a/code/.yarn/patches/@vitest-expect-npm-1.1.3-2062bf533f.patch b/code/.yarn/patches/@vitest-expect-npm-1.3.1-973071a540.patch similarity index 85% rename from code/.yarn/patches/@vitest-expect-npm-1.1.3-2062bf533f.patch rename to code/.yarn/patches/@vitest-expect-npm-1.3.1-973071a540.patch index 9a1b74e203bd..b2028a85b1ff 100644 --- a/code/.yarn/patches/@vitest-expect-npm-1.1.3-2062bf533f.patch +++ b/code/.yarn/patches/@vitest-expect-npm-1.3.1-973071a540.patch @@ -1,10 +1,10 @@ diff --git a/dist/index.js b/dist/index.js -index 974d6b26f626024fc9904908100c9ecaa54f43e1..5d9d92a0796e02630ccdd1174d4fd25e016d2b06 100644 +index 640839e4b9fef0f25d08d055d4350845a8a29791..844f3d5834147848b5fa54276e96e665bcc675f9 100644 --- a/dist/index.js +++ b/dist/index.js -@@ -6,28 +6,35 @@ import { processError } from '@vitest/utils/error'; +@@ -6,26 +6,32 @@ import { processError } from '@vitest/utils/error'; import { util } from 'chai'; - + const MATCHERS_OBJECT = Symbol.for("matchers-object"); -const JEST_MATCHERS_OBJECT = Symbol.for("$$jest-matchers-object"); +// Patched this symbol for storybook, so that @storybook/test can be used in a jest environment as well. @@ -12,10 +12,11 @@ index 974d6b26f626024fc9904908100c9ecaa54f43e1..5d9d92a0796e02630ccdd1174d4fd25e +const JEST_MATCHERS_OBJECT = Symbol.for("$$jest-matchers-object-storybook"); const GLOBAL_EXPECT = Symbol.for("expect-global"); const ASYMMETRIC_MATCHERS_OBJECT = Symbol.for("asymmetric-matchers-object"); - + if (!Object.prototype.hasOwnProperty.call(globalThis, MATCHERS_OBJECT)) { const globalState = /* @__PURE__ */ new WeakMap(); - const matchers = /* @__PURE__ */ Object.create(null); +- const customEqualityTesters = []; - const assymetricMatchers = /* @__PURE__ */ Object.create(null); Object.defineProperty(globalThis, MATCHERS_OBJECT, { get: () => globalState @@ -23,12 +24,14 @@ index 974d6b26f626024fc9904908100c9ecaa54f43e1..5d9d92a0796e02630ccdd1174d4fd25e +} +if (!Object.prototype.hasOwnProperty.call(globalThis, JEST_MATCHERS_OBJECT)) { + const matchers = /* @__PURE__ */ Object.create(null); ++ const customEqualityTesters = []; Object.defineProperty(globalThis, JEST_MATCHERS_OBJECT, { configurable: true, get: () => ({ - state: globalState.get(globalThis[GLOBAL_EXPECT]), + state: globalThis[MATCHERS_OBJECT].get(globalThis[GLOBAL_EXPECT]), - matchers + matchers, + customEqualityTesters }) }); +} @@ -37,8 +40,3 @@ index 974d6b26f626024fc9904908100c9ecaa54f43e1..5d9d92a0796e02630ccdd1174d4fd25e Object.defineProperty(globalThis, ASYMMETRIC_MATCHERS_OBJECT, { get: () => assymetricMatchers }); - } -+ - function getState(expect) { - return globalThis[MATCHERS_OBJECT].get(expect); - } diff --git a/code/addons/interactions/package.json b/code/addons/interactions/package.json index c1262deb3d10..011604e8dc52 100644 --- a/code/addons/interactions/package.json +++ b/code/addons/interactions/package.json @@ -50,8 +50,9 @@ }, "dependencies": { "@storybook/global": "^5.0.0", + "@storybook/instrumenter": "workspace:*", + "@storybook/test": "workspace:*", "@storybook/types": "workspace:*", - "jest-mock": "^27.0.6", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -62,10 +63,8 @@ "@storybook/core-common": "workspace:*", "@storybook/core-events": "workspace:*", "@storybook/icons": "^1.2.5", - "@storybook/instrumenter": "workspace:*", "@storybook/manager-api": "workspace:*", "@storybook/preview-api": "workspace:*", - "@storybook/test": "workspace:*", "@storybook/theming": "workspace:*", "@types/node": "^18.0.0", "formik": "^2.2.9", diff --git a/code/builders/builder-vite/src/optimizeDeps.ts b/code/builders/builder-vite/src/optimizeDeps.ts index 1972fde8e8e7..7d38b61cb747 100644 --- a/code/builders/builder-vite/src/optimizeDeps.ts +++ b/code/builders/builder-vite/src/optimizeDeps.ts @@ -3,6 +3,8 @@ import type { InlineConfig as ViteInlineConfig, UserConfig } from 'vite'; import type { Options } from '@storybook/types'; import { listStories } from './list-stories'; +// It ensures that vite converts cjs deps into esm without vite having to find them during startup and then having to log a message about them and restart +// TODO: Many of the deps might be prebundled now though, so probably worth trying to remove and see what happens const INCLUDE_CANDIDATES = [ '@base2/pretty-print-object', '@emotion/core', @@ -27,7 +29,6 @@ const INCLUDE_CANDIDATES = [ 'fast-deep-equal', 'html-tags', 'isobject', - 'jest-mock', 'loader-utils', 'lodash/camelCase.js', 'lodash/camelCase', diff --git a/code/lib/instrumenter/package.json b/code/lib/instrumenter/package.json index c5b8107c33da..8a8dedbdca76 100644 --- a/code/lib/instrumenter/package.json +++ b/code/lib/instrumenter/package.json @@ -49,7 +49,7 @@ "@storybook/core-events": "workspace:*", "@storybook/global": "^5.0.0", "@storybook/preview-api": "workspace:*", - "@vitest/utils": "^0.34.6", + "@vitest/utils": "^1.3.1", "util": "^0.12.4" }, "devDependencies": { diff --git a/code/lib/manager-api/package.json b/code/lib/manager-api/package.json index a198d58b9059..2a639ac341c0 100644 --- a/code/lib/manager-api/package.json +++ b/code/lib/manager-api/package.json @@ -60,7 +60,6 @@ "ts-dedent": "^2.0.0" }, "devDependencies": { - "@jest/globals": "^29.3.1", "@types/lodash": "^4.14.167", "@types/qs": "^6", "@types/semver": "^7.3.4", diff --git a/code/lib/preview-api/package.json b/code/lib/preview-api/package.json index a7a8a9b06751..689db454cd93 100644 --- a/code/lib/preview-api/package.json +++ b/code/lib/preview-api/package.json @@ -60,7 +60,6 @@ "util-deprecate": "^1.0.2" }, "devDependencies": { - "@jest/globals": "^29.5.0", "@storybook/core-common": "workspace:*", "ansi-to-html": "^0.6.11", "slash": "^5.0.0" diff --git a/code/lib/test/package.json b/code/lib/test/package.json index 35f70c3fa448..b1399d137ad3 100644 --- a/code/lib/test/package.json +++ b/code/lib/test/package.json @@ -47,12 +47,12 @@ "@storybook/core-events": "workspace:*", "@storybook/instrumenter": "workspace:*", "@storybook/preview-api": "workspace:*", - "@testing-library/dom": "^9.3.1", - "@testing-library/jest-dom": "^6.4.0", + "@testing-library/dom": "^9.3.4", + "@testing-library/jest-dom": "^6.4.2", "@testing-library/user-event": "^14.5.2", - "@vitest/expect": "1.1.3", - "@vitest/spy": "^1.1.3", - "chai": "^4.3.7", + "@vitest/expect": "1.3.1", + "@vitest/spy": "^1.3.1", + "chai": "^4.4.1", "util": "^0.12.4" }, "devDependencies": { diff --git a/code/package.json b/code/package.json index 42309691e56c..0bd59e94cafd 100644 --- a/code/package.json +++ b/code/package.json @@ -78,8 +78,9 @@ "resolutions": { "@playwright/test": "1.36.0", "@storybook/theming": "workspace:*", + "@testing-library/jest-dom/aria-query": "5.1.3", "@types/node": "^18.0.0", - "@vitest/expect@1.1.3": "patch:@vitest/expect@npm%3A1.1.3#~/.yarn/patches/@vitest-expect-npm-1.1.3-2062bf533f.patch", + "@vitest/expect": "patch:@vitest/expect@npm%3A1.3.1#~/.yarn/patches/@vitest-expect-npm-1.3.1-973071a540.patch", "esbuild": "^0.20.1", "playwright": "1.36.0", "playwright-core": "1.36.0", @@ -170,7 +171,7 @@ "@storybook/web-components-vite": "workspace:*", "@storybook/web-components-webpack5": "workspace:*", "@testing-library/dom": "^7.29.4", - "@testing-library/jest-dom": "^6.1.4", + "@testing-library/jest-dom": "6.1.4", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.4.3", "@types/express": "^4.17.11", diff --git a/code/renderers/vue3/src/docs/sourceDecorator.ts b/code/renderers/vue3/src/docs/sourceDecorator.ts index 797e7a648d9a..525cfbbfd281 100644 --- a/code/renderers/vue3/src/docs/sourceDecorator.ts +++ b/code/renderers/vue3/src/docs/sourceDecorator.ts @@ -15,7 +15,7 @@ import type { import { baseParse } from '@vue/compiler-core'; import type { ConcreteComponent, FunctionalComponent, VNode } from 'vue'; import { h, isVNode, watch } from 'vue'; -import { kebabCase } from 'lodash'; +import kebabCase from 'lodash/kebabCase'; import { attributeSource, htmlEventAttributeToVueEventAttribute, diff --git a/code/ui/blocks/src/blocks/ArgTypes.tsx b/code/ui/blocks/src/blocks/ArgTypes.tsx index 7fe3cf8a66c9..fc64e7ba16e1 100644 --- a/code/ui/blocks/src/blocks/ArgTypes.tsx +++ b/code/ui/blocks/src/blocks/ArgTypes.tsx @@ -7,7 +7,6 @@ import { filterArgTypes } from '@storybook/preview-api'; import type { ArgTypesExtractor } from '@storybook/docs-tools'; import React from 'react'; -import { mapValues } from 'lodash'; import type { SortType } from '../components'; import { ArgsTable as PureArgsTable, ArgsTableError, TabbedArgsTable } from '../components'; import { useOf } from './useOf'; @@ -83,10 +82,15 @@ export const ArgTypes: FC = (props) => { } const mainComponentName = getComponentName(component); - const subcomponentTabs = mapValues(subcomponents, (comp) => ({ - rows: filterArgTypes(extractComponentArgTypes(comp, parameters), include, exclude), - sort, - })); + const subcomponentTabs = Object.fromEntries( + Object.entries(subcomponents).map(([key, comp]) => [ + key, + { + rows: filterArgTypes(extractComponentArgTypes(comp, parameters), include, exclude), + sort, + }, + ]) + ); const tabs = { [mainComponentName]: { rows: filteredArgTypes, sort }, ...subcomponentTabs, diff --git a/code/ui/blocks/src/blocks/Controls.tsx b/code/ui/blocks/src/blocks/Controls.tsx index f47194033f1d..4e3ea828e289 100644 --- a/code/ui/blocks/src/blocks/Controls.tsx +++ b/code/ui/blocks/src/blocks/Controls.tsx @@ -7,7 +7,6 @@ import { filterArgTypes } from '@storybook/preview-api'; import type { PropDescriptor } from '@storybook/preview-api'; import type { ArgTypesExtractor } from '@storybook/docs-tools'; -import { mapValues } from 'lodash'; import type { SortType } from '../components'; import { ArgsTable as PureArgsTable, ArgsTableError, TabbedArgsTable } from '../components'; import { DocsContext } from './DocsContext'; @@ -75,10 +74,15 @@ export const Controls: FC = (props) => { } const mainComponentName = getComponentName(component); - const subcomponentTabs = mapValues(subcomponents, (comp) => ({ - rows: filterArgTypes(extractComponentArgTypes(comp, parameters), include, exclude), - sort, - })); + const subcomponentTabs = Object.fromEntries( + Object.entries(subcomponents).map(([key, comp]) => [ + key, + { + rows: filterArgTypes(extractComponentArgTypes(comp, parameters), include, exclude), + sort, + }, + ]) + ); const tabs = { [mainComponentName]: { rows: filteredArgTypes, sort }, ...subcomponentTabs, diff --git a/code/yarn.lock b/code/yarn.lock index 19b2f6697c04..2a8cf58a01de 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -24,7 +24,7 @@ __metadata: languageName: node linkType: hard -"@adobe/css-tools@npm:^4.3.2": +"@adobe/css-tools@npm:^4.3.1, @adobe/css-tools@npm:^4.3.2": version: 4.3.3 resolution: "@adobe/css-tools@npm:4.3.3" checksum: e76e712df713964b87cdf2aca1f0477f19bebd845484d5fcba726d3ec7782366e2f26ec8cb2dcfaf47081a5c891987d8a9f5c3f30d11e1eb3c1848adc27fcb24 @@ -404,7 +404,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.21.4, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.23.5": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.21.4, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.23.5": version: 7.23.5 resolution: "@babel/code-frame@npm:7.23.5" dependencies: @@ -444,7 +444,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.18.9, @babel/core@npm:^7.20.12, @babel/core@npm:^7.23.0, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9, @babel/core@npm:^7.3.4, @babel/core@npm:^7.7.5": +"@babel/core@npm:^7.12.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.18.9, @babel/core@npm:^7.20.12, @babel/core@npm:^7.23.0, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9, @babel/core@npm:^7.3.4, @babel/core@npm:^7.7.5": version: 7.23.9 resolution: "@babel/core@npm:7.23.9" dependencies: @@ -479,7 +479,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.23.0, @babel/generator@npm:^7.23.6, @babel/generator@npm:^7.7.2": +"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.23.0, @babel/generator@npm:^7.23.6": version: 7.23.6 resolution: "@babel/generator@npm:7.23.6" dependencies: @@ -905,7 +905,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-class-properties@npm:^7.12.13, @babel/plugin-syntax-class-properties@npm:^7.8.3": +"@babel/plugin-syntax-class-properties@npm:^7.12.13": version: 7.12.13 resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" dependencies: @@ -993,7 +993,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-meta@npm:^7.10.4, @babel/plugin-syntax-import-meta@npm:^7.8.3": +"@babel/plugin-syntax-import-meta@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" dependencies: @@ -1015,7 +1015,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.23.3, @babel/plugin-syntax-jsx@npm:^7.7.2": +"@babel/plugin-syntax-jsx@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-syntax-jsx@npm:7.23.3" dependencies: @@ -1026,7 +1026,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" dependencies: @@ -1048,7 +1048,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4, @babel/plugin-syntax-numeric-separator@npm:^7.8.3": +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" dependencies: @@ -1103,7 +1103,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-top-level-await@npm:^7.14.5, @babel/plugin-syntax-top-level-await@npm:^7.8.3": +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" dependencies: @@ -1114,7 +1114,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.23.3, @babel/plugin-syntax-typescript@npm:^7.7.2": +"@babel/plugin-syntax-typescript@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-syntax-typescript@npm:7.23.3" dependencies: @@ -2238,7 +2238,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.11.5, @babel/types@npm:^7.18.9, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.4, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.23.6, @babel/types@npm:^7.23.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.2, @babel/types@npm:^7.8.3, @babel/types@npm:^7.9.6": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.11.5, @babel/types@npm:^7.18.9, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.4, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.23.6, @babel/types@npm:^7.23.9, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.2, @babel/types@npm:^7.8.3, @babel/types@npm:^7.9.6": version: 7.23.9 resolution: "@babel/types@npm:7.23.9" dependencies: @@ -3405,63 +3405,6 @@ __metadata: languageName: node linkType: hard -"@jest/environment@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/environment@npm:29.7.0" - dependencies: - "@jest/fake-timers": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-mock: "npm:^29.7.0" - checksum: c7b1b40c618f8baf4d00609022d2afa086d9c6acc706f303a70bb4b67275868f620ad2e1a9efc5edd418906157337cce50589a627a6400bbdf117d351b91ef86 - languageName: node - linkType: hard - -"@jest/expect-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect-utils@npm:29.7.0" - dependencies: - jest-get-type: "npm:^29.6.3" - checksum: 60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a - languageName: node - linkType: hard - -"@jest/expect@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect@npm:29.7.0" - dependencies: - expect: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - checksum: b41f193fb697d3ced134349250aed6ccea075e48c4f803159db102b826a4e473397c68c31118259868fd69a5cba70e97e1c26d2c2ff716ca39dc73a2ccec037e - languageName: node - linkType: hard - -"@jest/fake-timers@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/fake-timers@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@sinonjs/fake-timers": "npm:^10.0.2" - "@types/node": "npm:*" - jest-message-util: "npm:^29.7.0" - jest-mock: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: cf0a8bcda801b28dc2e2b2ba36302200ee8104a45ad7a21e6c234148932f826cb3bc57c8df3b7b815aeea0861d7b6ca6f0d4778f93b9219398ef28749e03595c - languageName: node - linkType: hard - -"@jest/globals@npm:^29.3.1, @jest/globals@npm:^29.5.0": - version: 29.7.0 - resolution: "@jest/globals@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/expect": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - jest-mock: "npm:^29.7.0" - checksum: a385c99396878fe6e4460c43bd7bb0a5cc52befb462cc6e7f2a3810f9e7bcce7cdeb51908fd530391ee452dc856c98baa2c5f5fa8a5b30b071d31ef7f6955cea - languageName: node - linkType: hard - "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -3471,29 +3414,6 @@ __metadata: languageName: node linkType: hard -"@jest/transform@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/transform@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@jest/types": "npm:^29.6.3" - "@jridgewell/trace-mapping": "npm:^0.3.18" - babel-plugin-istanbul: "npm:^6.1.1" - chalk: "npm:^4.0.0" - convert-source-map: "npm:^2.0.0" - fast-json-stable-stringify: "npm:^2.1.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - pirates: "npm:^4.0.4" - slash: "npm:^3.0.0" - write-file-atomic: "npm:^4.0.2" - checksum: 7f4a7f73dcf45dfdf280c7aa283cbac7b6e5a904813c3a93ead7e55873761fc20d5c4f0191d2019004fac6f55f061c82eb3249c2901164ad80e362e7a7ede5a6 - languageName: node - linkType: hard - "@jest/types@npm:^26.6.2": version: 26.6.2 resolution: "@jest/types@npm:26.6.2" @@ -3507,33 +3427,6 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/types@npm:27.5.1" - dependencies: - "@types/istanbul-lib-coverage": "npm:^2.0.0" - "@types/istanbul-reports": "npm:^3.0.0" - "@types/node": "npm:*" - "@types/yargs": "npm:^16.0.0" - chalk: "npm:^4.0.0" - checksum: 4598b302398db0eb77168b75a6c58148ea02cc9b9f21c5d1bbe985c1c9257110a5653cf7b901c3cab87fba231e3fed83633687f1c0903b4bc6939ab2a8452504 - languageName: node - linkType: hard - -"@jest/types@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/types@npm:29.6.3" - dependencies: - "@jest/schemas": "npm:^29.6.3" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - "@types/istanbul-reports": "npm:^3.0.0" - "@types/node": "npm:*" - "@types/yargs": "npm:^17.0.8" - chalk: "npm:^4.0.0" - checksum: ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 - languageName: node - linkType: hard - "@joshwooding/vite-plugin-react-docgen-typescript@npm:0.3.0": version: 0.3.0 resolution: "@joshwooding/vite-plugin-react-docgen-typescript@npm:0.3.0" @@ -4904,24 +4797,6 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^3.0.0": - version: 3.0.0 - resolution: "@sinonjs/commons@npm:3.0.0" - dependencies: - type-detect: "npm:4.0.8" - checksum: 1df9cd257942f4e4960dfb9fd339d9e97b6a3da135f3d5b8646562918e863809cb8e00268535f4f4723535d2097881c8fc03d545c414d8555183376cfc54ee84 - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^10.0.2": - version: 10.3.0 - resolution: "@sinonjs/fake-timers@npm:10.3.0" - dependencies: - "@sinonjs/commons": "npm:^3.0.0" - checksum: 2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 - languageName: node - linkType: hard - "@socket.io/component-emitter@npm:~3.1.0": version: 3.1.0 resolution: "@socket.io/component-emitter@npm:3.1.0" @@ -5126,7 +5001,6 @@ __metadata: "@storybook/types": "workspace:*" "@types/node": "npm:^18.0.0" formik: "npm:^2.2.9" - jest-mock: "npm:^27.0.6" polished: "npm:^4.2.2" react: "npm:^18.2.0" react-dom: "npm:^18.2.0" @@ -6054,7 +5928,7 @@ __metadata: "@storybook/core-events": "workspace:*" "@storybook/global": "npm:^5.0.0" "@storybook/preview-api": "workspace:*" - "@vitest/utils": "npm:^0.34.6" + "@vitest/utils": "npm:^1.3.1" typescript: "npm:^5.3.2" util: "npm:^0.12.4" languageName: unknown @@ -6091,7 +5965,6 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/manager-api@workspace:lib/manager-api" dependencies: - "@jest/globals": "npm:^29.3.1" "@storybook/channels": "workspace:*" "@storybook/client-logger": "workspace:*" "@storybook/core-events": "workspace:*" @@ -6422,7 +6295,6 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/preview-api@workspace:lib/preview-api" dependencies: - "@jest/globals": "npm:^29.5.0" "@storybook/channels": "workspace:*" "@storybook/client-logger": "workspace:*" "@storybook/core-common": "workspace:*" @@ -6659,7 +6531,7 @@ __metadata: "@storybook/web-components-vite": "workspace:*" "@storybook/web-components-webpack5": "workspace:*" "@testing-library/dom": "npm:^7.29.4" - "@testing-library/jest-dom": "npm:^6.1.4" + "@testing-library/jest-dom": "npm:6.1.4" "@testing-library/react": "npm:^14.0.0" "@testing-library/user-event": "npm:^14.4.3" "@types/express": "npm:^4.17.11" @@ -6900,12 +6772,12 @@ __metadata: "@storybook/core-events": "workspace:*" "@storybook/instrumenter": "workspace:*" "@storybook/preview-api": "workspace:*" - "@testing-library/dom": "npm:^9.3.1" - "@testing-library/jest-dom": "npm:^6.4.0" + "@testing-library/dom": "npm:^9.3.4" + "@testing-library/jest-dom": "npm:^6.4.2" "@testing-library/user-event": "npm:^14.5.2" - "@vitest/expect": "npm:1.1.3" - "@vitest/spy": "npm:^1.1.3" - chai: "npm:^4.3.7" + "@vitest/expect": "npm:1.3.1" + "@vitest/spy": "npm:^1.3.1" + chai: "npm:^4.4.1" ts-dedent: "npm:^2.2.0" type-fest: "npm:~2.19" typescript: "npm:^5.3.2" @@ -7155,9 +7027,9 @@ __metadata: languageName: node linkType: hard -"@testing-library/dom@npm:^9.0.0, @testing-library/dom@npm:^9.3.1, @testing-library/dom@npm:^9.3.3": - version: 9.3.3 - resolution: "@testing-library/dom@npm:9.3.3" +"@testing-library/dom@npm:^9.0.0, @testing-library/dom@npm:^9.3.3, @testing-library/dom@npm:^9.3.4": + version: 9.3.4 + resolution: "@testing-library/dom@npm:9.3.4" dependencies: "@babel/code-frame": "npm:^7.10.4" "@babel/runtime": "npm:^7.12.5" @@ -7167,13 +7039,43 @@ __metadata: dom-accessibility-api: "npm:^0.5.9" lz-string: "npm:^1.5.0" pretty-format: "npm:^27.0.2" - checksum: c3bbd67503634fd955233dc172531640656701fe35ecb9a83f85e5965874b786452f5e7c26b4f8b3b4fc4379f3a80193c74425b57843ba191f4845e22b0ac483 + checksum: 147da340e8199d7f98f3a4ad8aa22ed55b914b83957efa5eb22bfea021a979ebe5a5182afa9c1e5b7a5f99a7f6744a5a4d9325ae46ec3b33b5a15aed8750d794 languageName: node linkType: hard -"@testing-library/jest-dom@npm:^6.1.4, @testing-library/jest-dom@npm:^6.4.0": - version: 6.4.0 - resolution: "@testing-library/jest-dom@npm:6.4.0" +"@testing-library/jest-dom@npm:6.1.4": + version: 6.1.4 + resolution: "@testing-library/jest-dom@npm:6.1.4" + dependencies: + "@adobe/css-tools": "npm:^4.3.1" + "@babel/runtime": "npm:^7.9.2" + aria-query: "npm:^5.0.0" + chalk: "npm:^3.0.0" + css.escape: "npm:^1.5.1" + dom-accessibility-api: "npm:^0.5.6" + lodash: "npm:^4.17.15" + redent: "npm:^3.0.0" + peerDependencies: + "@jest/globals": ">= 28" + "@types/jest": ">= 28" + jest: ">= 28" + vitest: ">= 0.32" + peerDependenciesMeta: + "@jest/globals": + optional: true + "@types/jest": + optional: true + jest: + optional: true + vitest: + optional: true + checksum: 2e23f120613fd8ae6d5169bbc94f1a2e4c82b07182057dc94db8ec54ebf32555833442e6c43a187e59715d83704ffb5df49ba88a71f6f32d2683f3d95ba721c7 + languageName: node + linkType: hard + +"@testing-library/jest-dom@npm:^6.4.2": + version: 6.4.2 + resolution: "@testing-library/jest-dom@npm:6.4.2" dependencies: "@adobe/css-tools": "npm:^4.3.2" "@babel/runtime": "npm:^7.9.2" @@ -7200,7 +7102,7 @@ __metadata: optional: true vitest: optional: true - checksum: 6b7eba9ca388986a721fb12f84adf0f5534bf7ec5851982023a889c4a0afac6e9e91291bdac39e1f59a05adefd7727e30463d98b21c3da32fbfec229ccb11ef1 + checksum: e7eba527b34ce30cde94424d2ec685bdfed51daaafb7df9b68b51aec6052e99a50c8bfe654612dacdf857a1eb81d68cf294fc89de558ee3a992bf7a6019fffcc languageName: node linkType: hard @@ -7682,15 +7584,6 @@ __metadata: languageName: node linkType: hard -"@types/graceful-fs@npm:^4.1.3": - version: 4.1.7 - resolution: "@types/graceful-fs@npm:4.1.7" - dependencies: - "@types/node": "npm:*" - checksum: a8c04a250cb40207b15097b33c053f5ecf4352f5107c0a2635f674dae8c9a90b28dc9bd6e28307d5aab0b5d3853e713de42110a149a6e303626915047134e87d - languageName: node - linkType: hard - "@types/hast@npm:^2.0.0": version: 2.3.6 resolution: "@types/hast@npm:2.3.6" @@ -8201,13 +8094,6 @@ __metadata: languageName: node linkType: hard -"@types/stack-utils@npm:^2.0.0": - version: 2.0.1 - resolution: "@types/stack-utils@npm:2.0.1" - checksum: 3327ee919a840ffe907bbd5c1d07dfd79137dd9732d2d466cf717ceec5bb21f66296173c53bb56cff95fae4185b9cd6770df3e9745fe4ba528bbc4975f54d13f - languageName: node - linkType: hard - "@types/supports-color@npm:^8.0.0": version: 8.1.3 resolution: "@types/supports-color@npm:8.1.3" @@ -8380,24 +8266,6 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^16.0.0": - version: 16.0.6 - resolution: "@types/yargs@npm:16.0.6" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: a2cc5796cea1aac492c856ff35e829a6a230e6d72540a9446273ab16392f6ef04b8fef05ddcff71c8106c047820b5534b22e031245ee55995b1ba0c8caa382b2 - languageName: node - linkType: hard - -"@types/yargs@npm:^17.0.8": - version: 17.0.26 - resolution: "@types/yargs@npm:17.0.26" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 34ab6eff6dff086b1044c65d53131e1d14e87c0c6dc44cb6851d74d8a4d1ac4503f7d12d1e1ecff25f8aea62ff7a9d6b04b05870a0324d15bbb226ddfc1d6065 - languageName: node - linkType: hard - "@typescript-eslint/eslint-plugin@npm:^6.18.1": version: 6.21.0 resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" @@ -8725,36 +8593,25 @@ __metadata: languageName: node linkType: hard -"@vitest/expect@npm:1.1.3": - version: 1.1.3 - resolution: "@vitest/expect@npm:1.1.3" - dependencies: - "@vitest/spy": "npm:1.1.3" - "@vitest/utils": "npm:1.1.3" - chai: "npm:^4.3.10" - checksum: fe5c9eade516a754efc26d4b6378a250f0c3b668fa15b3e6b6042190b64a65c4459b7fd67bfca72fb1fbf215feb838b68da4ab224a2a10137d8828ca6af70516 - languageName: node - linkType: hard - -"@vitest/expect@npm:1.2.2": - version: 1.2.2 - resolution: "@vitest/expect@npm:1.2.2" +"@vitest/expect@npm:1.3.1": + version: 1.3.1 + resolution: "@vitest/expect@npm:1.3.1" dependencies: - "@vitest/spy": "npm:1.2.2" - "@vitest/utils": "npm:1.2.2" + "@vitest/spy": "npm:1.3.1" + "@vitest/utils": "npm:1.3.1" chai: "npm:^4.3.10" - checksum: 920e80b956d9d5ef7909cbe2bf883c8556da11c5123ea037396cb672d7038116c9773bd36915a3df7be2ffd76b661d5a6487e7e5ded78f39e2500cb36ae81e59 + checksum: ea66a1e912d896a481a27631b68089b885af7e8ed62ba8aaa119c37a9beafe6c094fd672775a20e6e23460af66e294f9ca259e6e0562708d1b7724eaaf53c7bb languageName: node linkType: hard -"@vitest/expect@patch:@vitest/expect@npm%3A1.1.3#~/.yarn/patches/@vitest-expect-npm-1.1.3-2062bf533f.patch": - version: 1.1.3 - resolution: "@vitest/expect@patch:@vitest/expect@npm%3A1.1.3#~/.yarn/patches/@vitest-expect-npm-1.1.3-2062bf533f.patch::version=1.1.3&hash=8fb073" +"@vitest/expect@patch:@vitest/expect@npm%3A1.3.1#~/.yarn/patches/@vitest-expect-npm-1.3.1-973071a540.patch": + version: 1.3.1 + resolution: "@vitest/expect@patch:@vitest/expect@npm%3A1.3.1#~/.yarn/patches/@vitest-expect-npm-1.3.1-973071a540.patch::version=1.3.1&hash=9dbd39" dependencies: - "@vitest/spy": "npm:1.1.3" - "@vitest/utils": "npm:1.1.3" + "@vitest/spy": "npm:1.3.1" + "@vitest/utils": "npm:1.3.1" chai: "npm:^4.3.10" - checksum: c3bbcae82050b7e92438c85e679ef2cb09162dc5638a10b3f0b5a8fc5600dfb0be578a244d84012ae2f1715748189393ac0fc72b891efff3503338221795ebe5 + checksum: f54446b97ffac9d64653ed771b883e4d733dc4f3bb6d4b161a583a8c5ef0461383f3d457174af71baf5b2d3c92e1b75495f0c1d0cca75644ad4a6f0df8f4ec55 languageName: node linkType: hard @@ -8780,16 +8637,7 @@ __metadata: languageName: node linkType: hard -"@vitest/spy@npm:1.1.3": - version: 1.1.3 - resolution: "@vitest/spy@npm:1.1.3" - dependencies: - tinyspy: "npm:^2.2.0" - checksum: d1692582afb7b665ec283723b15bbb7da95896cbfd7befaad9fdac6b64a8250fd918781263d43e8e10ee4874cdd18646224f6d993749c3751296dced8095a9ed - languageName: node - linkType: hard - -"@vitest/spy@npm:1.2.2, @vitest/spy@npm:^1.1.3": +"@vitest/spy@npm:1.2.2": version: 1.2.2 resolution: "@vitest/spy@npm:1.2.2" dependencies: @@ -8798,15 +8646,12 @@ __metadata: languageName: node linkType: hard -"@vitest/utils@npm:1.1.3": - version: 1.1.3 - resolution: "@vitest/utils@npm:1.1.3" +"@vitest/spy@npm:1.3.1, @vitest/spy@npm:^1.3.1": + version: 1.3.1 + resolution: "@vitest/spy@npm:1.3.1" dependencies: - diff-sequences: "npm:^29.6.3" - estree-walker: "npm:^3.0.3" - loupe: "npm:^2.3.7" - pretty-format: "npm:^29.7.0" - checksum: 86f48a7722927741449f40f33584dd9857629782f6661654225b5dd3c039d61cc60806c5dfe419bd793f2a231ba91fe708cbdec5d99b62a1f6f819b6f2121fc3 + tinyspy: "npm:^2.2.0" + checksum: efc42f679d2a51fc6583ca3136ccd47581cb27c923ed3cb0500f5dee9aac99b681bfdd400c16ef108f2e0761daa642bc190816a6411931a2aba99ebf8b213dd4 languageName: node linkType: hard @@ -8822,14 +8667,15 @@ __metadata: languageName: node linkType: hard -"@vitest/utils@npm:^0.34.6": - version: 0.34.7 - resolution: "@vitest/utils@npm:0.34.7" +"@vitest/utils@npm:1.3.1, @vitest/utils@npm:^1.3.1": + version: 1.3.1 + resolution: "@vitest/utils@npm:1.3.1" dependencies: - diff-sequences: "npm:^29.4.3" - loupe: "npm:^2.3.6" - pretty-format: "npm:^29.5.0" - checksum: 5f26ec5b4a53709a50efdb57aa753e8090b3411e888774f67a0d192eb7f046ed5fcc6884eb3d6275d2674926e724b731e8d28cd3cea96a7f3d27462a0d44af9e + diff-sequences: "npm:^29.6.3" + estree-walker: "npm:^3.0.3" + loupe: "npm:^2.3.7" + pretty-format: "npm:^29.7.0" + checksum: d604c8ad3b1aee30d4dcd889098f591407bfe18547ff96485b1d1ed54eff58219c756a9544a7fbd4e37886863abacd7a89a76334cb3ea7f84c3d496bb757db23 languageName: node linkType: hard @@ -9781,7 +9627,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.0.0, anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": +"anymatch@npm:^3.0.0, anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: @@ -9876,7 +9722,7 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.0.0, aria-query@npm:^5.3.0": +"aria-query@npm:^5.3.0": version: 5.3.0 resolution: "aria-query@npm:5.3.0" dependencies: @@ -10389,7 +10235,7 @@ __metadata: languageName: node linkType: hard -"babel-plugin-istanbul@npm:6.1.1, babel-plugin-istanbul@npm:^6.1.1": +"babel-plugin-istanbul@npm:6.1.1": version: 6.1.1 resolution: "babel-plugin-istanbul@npm:6.1.1" dependencies: @@ -10473,28 +10319,6 @@ __metadata: languageName: node linkType: hard -"babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.0.1 - resolution: "babel-preset-current-node-syntax@npm:1.0.1" - dependencies: - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-bigint": "npm:^7.8.3" - "@babel/plugin-syntax-class-properties": "npm:^7.8.3" - "@babel/plugin-syntax-import-meta": "npm:^7.8.3" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.8.3" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-top-level-await": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 5ba39a3a0e6c37d25e56a4fb843be632dac98d54706d8a0933f9bcb1a07987a96d55c2b5a6c11788a74063fb2534fe68c1f1dbb6c93626850c785e0938495627 - languageName: node - linkType: hard - "babel-walk@npm:3.0.0-canary-5": version: 3.0.0-canary-5 resolution: "babel-walk@npm:3.0.0-canary-5" @@ -11176,15 +11000,6 @@ __metadata: languageName: node linkType: hard -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" - dependencies: - node-int64: "npm:^0.4.0" - checksum: 24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 - languageName: node - linkType: hard - "buffer-crc32@npm:^0.2.5": version: 0.2.13 resolution: "buffer-crc32@npm:0.2.13" @@ -11491,9 +11306,9 @@ __metadata: languageName: node linkType: hard -"chai@npm:^4.3.10, chai@npm:^4.3.7": - version: 4.3.10 - resolution: "chai@npm:4.3.10" +"chai@npm:^4.3.10, chai@npm:^4.4.1": + version: 4.4.1 + resolution: "chai@npm:4.4.1" dependencies: assertion-error: "npm:^1.1.0" check-error: "npm:^1.0.3" @@ -11502,7 +11317,7 @@ __metadata: loupe: "npm:^2.3.6" pathval: "npm:^1.1.1" type-detect: "npm:^4.0.8" - checksum: c887d24f67be6fb554c7ebbde3bb0568697a8833d475e4768296916891ba143f25fc079f6eb34146f3dd5a3279d34c1f387c32c9a6ab288e579f948d9ccf53fe + checksum: 91590a8fe18bd6235dece04ccb2d5b4ecec49984b50924499bdcd7a95c02cb1fd2a689407c19bb854497bde534ef57525cfad6c7fdd2507100fd802fbc2aefbd languageName: node linkType: hard @@ -11694,13 +11509,6 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.2.0": - version: 3.9.0 - resolution: "ci-info@npm:3.9.0" - checksum: 6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a - languageName: node - linkType: hard - "ci-info@npm:^4.0.0": version: 4.0.0 resolution: "ci-info@npm:4.0.0" @@ -13252,7 +13060,7 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^29.4.3, diff-sequences@npm:^29.6.3": +"diff-sequences@npm:^29.6.3": version: 29.6.3 resolution: "diff-sequences@npm:29.6.3" checksum: 32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 @@ -14324,13 +14132,6 @@ __metadata: languageName: node linkType: hard -"escape-string-regexp@npm:^2.0.0": - version: 2.0.0 - resolution: "escape-string-regexp@npm:2.0.0" - checksum: 2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 - languageName: node - linkType: hard - "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" @@ -15126,19 +14927,6 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.7.0": - version: 29.7.0 - resolution: "expect@npm:29.7.0" - dependencies: - "@jest/expect-utils": "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: 2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 - languageName: node - linkType: hard - "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -15299,7 +15087,7 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": +"fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: 7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b @@ -15371,15 +15159,6 @@ __metadata: languageName: node linkType: hard -"fb-watchman@npm:^2.0.0": - version: 2.0.2 - resolution: "fb-watchman@npm:2.0.2" - dependencies: - bser: "npm:2.1.1" - checksum: feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 - languageName: node - linkType: hard - "fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": version: 3.2.0 resolution: "fetch-blob@npm:3.2.0" @@ -16058,7 +15837,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": +"fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -16077,7 +15856,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": +"fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -18545,7 +18324,7 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.4.1, jest-diff@npm:^29.7.0": +"jest-diff@npm:^29.4.1": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" dependencies: @@ -18564,128 +18343,6 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-haste-map@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/graceful-fs": "npm:^4.1.3" - "@types/node": "npm:*" - anymatch: "npm:^3.0.3" - fb-watchman: "npm:^2.0.0" - fsevents: "npm:^2.3.2" - graceful-fs: "npm:^4.2.9" - jest-regex-util: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - walker: "npm:^1.0.8" - dependenciesMeta: - fsevents: - optional: true - checksum: 2683a8f29793c75a4728787662972fedd9267704c8f7ef9d84f2beed9a977f1cf5e998c07b6f36ba5603f53cb010c911fe8cd0ac9886e073fe28ca66beefd30c - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-matcher-utils@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - jest-diff: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e - languageName: node - linkType: hard - -"jest-message-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-message-util@npm:29.7.0" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@jest/types": "npm:^29.6.3" - "@types/stack-utils": "npm:^2.0.0" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 - languageName: node - linkType: hard - -"jest-mock@npm:^27.0.6": - version: 27.5.1 - resolution: "jest-mock@npm:27.5.1" - dependencies: - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - checksum: 6ad58454b37ee3f726930b07efbf40a7c79d2d2d9c7b226708b4b550bc0904de93bcacf714105d11952a5c0bc855e5d59145c8c9dbbb4e69b46e7367abf53b52 - languageName: node - linkType: hard - -"jest-mock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-mock@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-util: "npm:^29.7.0" - checksum: 7b9f8349ee87695a309fe15c46a74ab04c853369e5c40952d68061d9dc3159a0f0ed73e215f81b07ee97a9faaf10aebe5877a9d6255068a0977eae6a9ff1d5ac - languageName: node - linkType: hard - -"jest-regex-util@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-regex-util@npm:29.6.3" - checksum: 4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b - languageName: node - linkType: hard - -"jest-snapshot@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-snapshot@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@babel/generator": "npm:^7.7.2" - "@babel/plugin-syntax-jsx": "npm:^7.7.2" - "@babel/plugin-syntax-typescript": "npm:^7.7.2" - "@babel/types": "npm:^7.3.3" - "@jest/expect-utils": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - babel-preset-current-node-syntax: "npm:^1.0.0" - chalk: "npm:^4.0.0" - expect: "npm:^29.7.0" - graceful-fs: "npm:^4.2.9" - jest-diff: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - natural-compare: "npm:^1.4.0" - pretty-format: "npm:^29.7.0" - semver: "npm:^7.5.3" - checksum: 6e9003c94ec58172b4a62864a91c0146513207bedf4e0a06e1e2ac70a4484088a2683e3a0538d8ea913bcfd53dc54a9b98a98cdfa562e7fe1d1339aeae1da570 - languageName: node - linkType: hard - -"jest-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-util@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - graceful-fs: "npm:^4.2.9" - picomatch: "npm:^2.2.3" - checksum: bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 - languageName: node - linkType: hard - "jest-worker@npm:^27.4.5": version: 27.5.1 resolution: "jest-worker@npm:27.5.1" @@ -18697,18 +18354,6 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-worker@npm:29.7.0" - dependencies: - "@types/node": "npm:*" - jest-util: "npm:^29.7.0" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^8.0.0" - checksum: 5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 - languageName: node - linkType: hard - "jiti@npm:^1.18.2, jiti@npm:^1.20.0": version: 1.21.0 resolution: "jiti@npm:1.21.0" @@ -20011,15 +19656,6 @@ __metadata: languageName: node linkType: hard -"makeerror@npm:1.0.12": - version: 1.0.12 - resolution: "makeerror@npm:1.0.12" - dependencies: - tmpl: "npm:1.0.5" - checksum: b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c - languageName: node - linkType: hard - "map-async@npm:~0.1.1": version: 0.1.1 resolution: "map-async@npm:0.1.1" @@ -21989,13 +21625,6 @@ __metadata: languageName: node linkType: hard -"node-int64@npm:^0.4.0": - version: 0.4.0 - resolution: "node-int64@npm:0.4.0" - checksum: a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a - languageName: node - linkType: hard - "node-machine-id@npm:1.1.12": version: 1.1.12 resolution: "node-machine-id@npm:1.1.12" @@ -23277,7 +22906,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be @@ -23337,7 +22966,7 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.4, pirates@npm:^4.0.5": +"pirates@npm:^4.0.5": version: 4.0.6 resolution: "pirates@npm:4.0.6" checksum: 00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 @@ -23793,7 +23422,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.5.0, pretty-format@npm:^29.7.0": +"pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" dependencies: @@ -27061,15 +26690,6 @@ __metadata: languageName: node linkType: hard -"stack-utils@npm:^2.0.3": - version: 2.0.6 - resolution: "stack-utils@npm:2.0.6" - dependencies: - escape-string-regexp: "npm:^2.0.0" - checksum: 651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a - languageName: node - linkType: hard - "stackback@npm:0.0.2": version: 0.0.2 resolution: "stackback@npm:0.0.2" @@ -28089,13 +27709,6 @@ __metadata: languageName: node linkType: hard -"tmpl@npm:1.0.5": - version: 1.0.5 - resolution: "tmpl@npm:1.0.5" - checksum: f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 - languageName: node - linkType: hard - "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" @@ -28474,7 +28087,7 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.8": +"type-detect@npm:^4.0.0, type-detect@npm:^4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" checksum: 8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd @@ -29982,15 +29595,6 @@ __metadata: languageName: node linkType: hard -"walker@npm:^1.0.8": - version: 1.0.8 - resolution: "walker@npm:1.0.8" - dependencies: - makeerror: "npm:1.0.12" - checksum: a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e - languageName: node - linkType: hard - "warning@npm:^4.0.2, warning@npm:^4.0.3": version: 4.0.3 resolution: "warning@npm:4.0.3" @@ -30562,16 +30166,6 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^4.0.2": - version: 4.0.2 - resolution: "write-file-atomic@npm:4.0.2" - dependencies: - imurmurhash: "npm:^0.1.4" - signal-exit: "npm:^3.0.7" - checksum: a2c282c95ef5d8e1c27b335ae897b5eca00e85590d92a3fd69a437919b7b93ff36a69ea04145da55829d2164e724bc62202cdb5f4b208b425aba0807889375c7 - languageName: node - linkType: hard - "ws@npm:^8.13.0, ws@npm:^8.14.2, ws@npm:^8.2.3": version: 8.15.1 resolution: "ws@npm:8.15.1" From cdfd820763709497df94b06aae72d33aeca140be Mon Sep 17 00:00:00 2001 From: storybook-bot <32066757+storybook-bot@users.noreply.github.com> Date: Mon, 11 Mar 2024 13:43:55 +0000 Subject: [PATCH 50/70] Write changelog for 8.0.0-rc.5 [skip ci] --- CHANGELOG.prerelease.md | 4 ++++ code/package.json | 3 ++- docs/versions/next.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.prerelease.md b/CHANGELOG.prerelease.md index 2b0e49086ea5..aec117765b12 100644 --- a/CHANGELOG.prerelease.md +++ b/CHANGELOG.prerelease.md @@ -1,3 +1,7 @@ +## 8.0.0-rc.5 + +- CLI: Automigration fix version detection of upgrading related packages - [#26410](https://github.com/storybookjs/storybook/pull/26410), thanks @ndelangen! + ## 8.0.0-rc.4 - Actions: Fix attaching action after a spy is restored to original function - [#26364](https://github.com/storybookjs/storybook/pull/26364), thanks @kasperpeulen! diff --git a/code/package.json b/code/package.json index 42309691e56c..3d37c1912e4f 100644 --- a/code/package.json +++ b/code/package.json @@ -294,5 +294,6 @@ "Dependency Upgrades" ] ] - } + }, + "deferredNextVersion": "8.0.0-rc.5" } diff --git a/docs/versions/next.json b/docs/versions/next.json index 60521e66f7a9..e522ee4c40f2 100644 --- a/docs/versions/next.json +++ b/docs/versions/next.json @@ -1 +1 @@ -{"version":"8.0.0-rc.4","info":{"plain":"- Actions: Fix attaching action after a spy is restored to original function - [#26364](https://github.com/storybookjs/storybook/pull/26364), thanks @kasperpeulen!\n- CLI: Add explicit actions to header story - [#26352](https://github.com/storybookjs/storybook/pull/26352), thanks @kasperpeulen!\n- CLI: Automigration for upgrading storybook related dependencies - [#26377](https://github.com/storybookjs/storybook/pull/26377), thanks @ndelangen!\n- CLI: Fix doctor compatibility check - [#26363](https://github.com/storybookjs/storybook/pull/26363), thanks @yannbf!\n- CLI: Fix fn reference in preact templates - [#26384](https://github.com/storybookjs/storybook/pull/26384), thanks @kasperpeulen!\n- CLI: Remove duplicated dependency warning - [#26385](https://github.com/storybookjs/storybook/pull/26385), thanks @yannbf!\n- CLI: Vite migration link (shorter) - [#26379](https://github.com/storybookjs/storybook/pull/26379), thanks @ndelangen!\n- Composition: Fix refs not loading when there's multiple - [#26356](https://github.com/storybookjs/storybook/pull/26356), thanks @ndelangen!\n- Dependencies: Broaden `esbuild` version range - [#26405](https://github.com/storybookjs/storybook/pull/26405), thanks @ndelangen!\n- Maintenance: Replace `@storybook/testing-library` with `@storybook/test` in monorepo - [#26351](https://github.com/storybookjs/storybook/pull/26351), thanks @ndelangen!\n- Maintenance: What's new modal changes - [#26355](https://github.com/storybookjs/storybook/pull/26355), thanks @kasperpeulen!\n- Portable Stories: Fix injected root element changing layout - [#26387](https://github.com/storybookjs/storybook/pull/26387), thanks @JReinhold!\n- React: Support all React component types in JSX Decorator - [#26382](https://github.com/storybookjs/storybook/pull/26382), thanks @yannbf!"}} +{"version":"8.0.0-rc.5","info":{"plain":"- CLI: Automigration fix version detection of upgrading related packages - [#26410](https://github.com/storybookjs/storybook/pull/26410), thanks @ndelangen!"}} From 9050c69a50e5eb042a4a43b8007ee7ce5cb39c63 Mon Sep 17 00:00:00 2001 From: storybook-bot <32066757+storybook-bot@users.noreply.github.com> Date: Mon, 11 Mar 2024 13:53:47 +0000 Subject: [PATCH 51/70] Bump version from "8.0.0-rc.4" to "8.0.0-rc.5" [skip ci] --- code/addons/a11y/package.json | 2 +- code/addons/actions/package.json | 2 +- code/addons/backgrounds/package.json | 2 +- code/addons/controls/package.json | 2 +- code/addons/docs/package.json | 2 +- code/addons/essentials/package.json | 2 +- code/addons/gfm/package.json | 2 +- code/addons/highlight/package.json | 2 +- code/addons/interactions/package.json | 2 +- code/addons/jest/package.json | 2 +- code/addons/links/package.json | 2 +- code/addons/measure/package.json | 2 +- code/addons/onboarding/package.json | 2 +- code/addons/outline/package.json | 2 +- code/addons/storysource/package.json | 2 +- code/addons/themes/package.json | 2 +- code/addons/toolbars/package.json | 2 +- code/addons/viewport/package.json | 2 +- code/builders/builder-manager/package.json | 2 +- code/builders/builder-vite/package.json | 2 +- code/builders/builder-webpack5/package.json | 2 +- code/frameworks/angular/package.json | 2 +- code/frameworks/ember/package.json | 2 +- code/frameworks/html-vite/package.json | 2 +- code/frameworks/html-webpack5/package.json | 2 +- code/frameworks/nextjs/package.json | 2 +- code/frameworks/preact-vite/package.json | 2 +- code/frameworks/preact-webpack5/package.json | 2 +- code/frameworks/react-vite/package.json | 2 +- code/frameworks/react-webpack5/package.json | 2 +- code/frameworks/server-webpack5/package.json | 2 +- code/frameworks/svelte-vite/package.json | 2 +- code/frameworks/svelte-webpack5/package.json | 2 +- code/frameworks/sveltekit/package.json | 2 +- code/frameworks/vue3-vite/package.json | 2 +- code/frameworks/vue3-webpack5/package.json | 2 +- .../web-components-vite/package.json | 2 +- .../web-components-webpack5/package.json | 2 +- code/lib/channels/package.json | 2 +- code/lib/cli-sb/package.json | 2 +- code/lib/cli-storybook/package.json | 2 +- code/lib/cli/package.json | 2 +- code/lib/client-logger/package.json | 2 +- code/lib/codemod/package.json | 2 +- code/lib/core-common/package.json | 2 +- code/lib/core-common/src/versions.ts | 160 +++++++++--------- code/lib/core-events/package.json | 2 +- code/lib/core-server/package.json | 2 +- code/lib/core-webpack/package.json | 2 +- code/lib/csf-plugin/package.json | 2 +- code/lib/csf-tools/package.json | 2 +- code/lib/docs-tools/package.json | 2 +- code/lib/instrumenter/package.json | 2 +- code/lib/manager-api/package.json | 2 +- code/lib/manager-api/src/version.ts | 2 +- code/lib/node-logger/package.json | 2 +- code/lib/preview-api/package.json | 2 +- code/lib/preview/package.json | 2 +- code/lib/react-dom-shim/package.json | 2 +- code/lib/router/package.json | 2 +- code/lib/source-loader/package.json | 2 +- code/lib/telemetry/package.json | 2 +- code/lib/test/package.json | 2 +- code/lib/theming/package.json | 2 +- code/lib/types/package.json | 2 +- code/package.json | 5 +- code/presets/create-react-app/package.json | 2 +- code/presets/html-webpack/package.json | 2 +- code/presets/preact-webpack/package.json | 2 +- code/presets/react-webpack/package.json | 2 +- code/presets/server-webpack/package.json | 2 +- code/presets/svelte-webpack/package.json | 2 +- code/presets/vue3-webpack/package.json | 2 +- code/renderers/html/package.json | 2 +- code/renderers/preact/package.json | 2 +- code/renderers/react/package.json | 2 +- code/renderers/server/package.json | 2 +- code/renderers/svelte/package.json | 2 +- code/renderers/vue3/package.json | 2 +- code/renderers/web-components/package.json | 2 +- code/ui/blocks/package.json | 2 +- code/ui/components/package.json | 2 +- code/ui/manager/package.json | 2 +- 83 files changed, 163 insertions(+), 164 deletions(-) diff --git a/code/addons/a11y/package.json b/code/addons/a11y/package.json index 9d832fb1b42f..613dbdc000fb 100644 --- a/code/addons/a11y/package.json +++ b/code/addons/a11y/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-a11y", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Test component compliance with web accessibility standards", "keywords": [ "a11y", diff --git a/code/addons/actions/package.json b/code/addons/actions/package.json index c4e8f4adf0e1..4724520ee560 100644 --- a/code/addons/actions/package.json +++ b/code/addons/actions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-actions", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Get UI feedback when an action is performed on an interactive element", "keywords": [ "storybook", diff --git a/code/addons/backgrounds/package.json b/code/addons/backgrounds/package.json index 52abe3b3bad4..40173cebe181 100644 --- a/code/addons/backgrounds/package.json +++ b/code/addons/backgrounds/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-backgrounds", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Switch backgrounds to view components in different settings", "keywords": [ "addon", diff --git a/code/addons/controls/package.json b/code/addons/controls/package.json index 5c4714ecf4a1..682efb322c40 100644 --- a/code/addons/controls/package.json +++ b/code/addons/controls/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-controls", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Interact with component inputs dynamically in the Storybook UI", "keywords": [ "addon", diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json index 4e41f42a7200..86d2d040a1fa 100644 --- a/code/addons/docs/package.json +++ b/code/addons/docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-docs", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Document component usage and properties in Markdown", "keywords": [ "addon", diff --git a/code/addons/essentials/package.json b/code/addons/essentials/package.json index 161b3271408e..ea286c7e6daf 100644 --- a/code/addons/essentials/package.json +++ b/code/addons/essentials/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-essentials", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Curated addons to bring out the best of Storybook", "keywords": [ "addon", diff --git a/code/addons/gfm/package.json b/code/addons/gfm/package.json index fcd0fb36c190..8626bce63870 100644 --- a/code/addons/gfm/package.json +++ b/code/addons/gfm/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-mdx-gfm", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "GitHub Flavored Markdown in Storybook", "keywords": [ "addon", diff --git a/code/addons/highlight/package.json b/code/addons/highlight/package.json index d7d172852e7b..9bcf61952789 100644 --- a/code/addons/highlight/package.json +++ b/code/addons/highlight/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-highlight", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Highlight DOM nodes within your stories", "keywords": [ "storybook-addons", diff --git a/code/addons/interactions/package.json b/code/addons/interactions/package.json index c1262deb3d10..c0773463ab1a 100644 --- a/code/addons/interactions/package.json +++ b/code/addons/interactions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-interactions", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Automate, test and debug user interactions", "keywords": [ "storybook-addons", diff --git a/code/addons/jest/package.json b/code/addons/jest/package.json index 9ba05ec5f024..7f6f3de7b01d 100644 --- a/code/addons/jest/package.json +++ b/code/addons/jest/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-jest", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "React storybook addon that show component jest report", "keywords": [ "addon", diff --git a/code/addons/links/package.json b/code/addons/links/package.json index 1d6e3435af24..3c218f06f3de 100644 --- a/code/addons/links/package.json +++ b/code/addons/links/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-links", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Link stories together to build demos and prototypes with your UI components", "keywords": [ "addon", diff --git a/code/addons/measure/package.json b/code/addons/measure/package.json index c3ce95d213cf..8a6449f6a9e4 100644 --- a/code/addons/measure/package.json +++ b/code/addons/measure/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-measure", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Inspect layouts by visualizing the box model", "keywords": [ "storybook-addons", diff --git a/code/addons/onboarding/package.json b/code/addons/onboarding/package.json index c4159cc2d927..df3cad03d039 100644 --- a/code/addons/onboarding/package.json +++ b/code/addons/onboarding/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", diff --git a/code/addons/outline/package.json b/code/addons/outline/package.json index 129747a9615c..b87b89b4eb3b 100644 --- a/code/addons/outline/package.json +++ b/code/addons/outline/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-outline", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Outline all elements with CSS to help with layout placement and alignment", "keywords": [ "storybook-addons", diff --git a/code/addons/storysource/package.json b/code/addons/storysource/package.json index 704a1dd6b215..b9eefe5d2044 100644 --- a/code/addons/storysource/package.json +++ b/code/addons/storysource/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storysource", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "View a story’s source code to see how it works and paste into your app", "keywords": [ "addon", diff --git a/code/addons/themes/package.json b/code/addons/themes/package.json index f76abb04b06a..2e530e1427f3 100644 --- a/code/addons/themes/package.json +++ b/code/addons/themes/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-themes", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Switch between multiple themes for you components in Storybook", "keywords": [ "css", diff --git a/code/addons/toolbars/package.json b/code/addons/toolbars/package.json index 68198a7e380c..d5678032c004 100644 --- a/code/addons/toolbars/package.json +++ b/code/addons/toolbars/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-toolbars", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Create your own toolbar items that control story rendering", "keywords": [ "addon", diff --git a/code/addons/viewport/package.json b/code/addons/viewport/package.json index 957d7b13f347..e12051424124 100644 --- a/code/addons/viewport/package.json +++ b/code/addons/viewport/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-viewport", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Build responsive components by adjusting Storybook’s viewport size and orientation", "keywords": [ "addon", diff --git a/code/builders/builder-manager/package.json b/code/builders/builder-manager/package.json index 562a6543b8d4..818cd8bc9c1f 100644 --- a/code/builders/builder-manager/package.json +++ b/code/builders/builder-manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-manager", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook manager builder", "keywords": [ "storybook" diff --git a/code/builders/builder-vite/package.json b/code/builders/builder-vite/package.json index b757de543cd2..ecd31fb31953 100644 --- a/code/builders/builder-vite/package.json +++ b/code/builders/builder-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-vite", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "A plugin to run and build Storybooks with Vite", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme", "bugs": { diff --git a/code/builders/builder-webpack5/package.json b/code/builders/builder-webpack5/package.json index c84e6ff91318..09b3cc203aff 100644 --- a/code/builders/builder-webpack5/package.json +++ b/code/builders/builder-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-webpack5", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json index e95b942c6b6c..8b43006f3dc4 100644 --- a/code/frameworks/angular/package.json +++ b/code/frameworks/angular/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/angular", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Angular: Develop Angular components in isolation with hot reloading.", "keywords": [ "storybook", diff --git a/code/frameworks/ember/package.json b/code/frameworks/ember/package.json index 63f20400c17f..425c1eb5b888 100644 --- a/code/frameworks/ember/package.json +++ b/code/frameworks/ember/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/ember", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/frameworks/ember", "bugs": { diff --git a/code/frameworks/html-vite/package.json b/code/frameworks/html-vite/package.json index 8939c9d11a13..6cb46be12bd2 100644 --- a/code/frameworks/html-vite/package.json +++ b/code/frameworks/html-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-vite", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for HTML and Vite: Develop HTML in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/html-webpack5/package.json b/code/frameworks/html-webpack5/package.json index fb1088cdbc0a..d8181d85aa46 100644 --- a/code/frameworks/html-webpack5/package.json +++ b/code/frameworks/html-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-webpack5", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/nextjs/package.json b/code/frameworks/nextjs/package.json index 6a51cb37c598..4f038bac401d 100644 --- a/code/frameworks/nextjs/package.json +++ b/code/frameworks/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/nextjs", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Next.js", "keywords": [ "storybook", diff --git a/code/frameworks/preact-vite/package.json b/code/frameworks/preact-vite/package.json index eee35abf8fd6..2bb980d16d83 100644 --- a/code/frameworks/preact-vite/package.json +++ b/code/frameworks/preact-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-vite", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Preact and Vite: Develop Preact components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/preact-webpack5/package.json b/code/frameworks/preact-webpack5/package.json index 89f065ab1b12..33338d991b79 100644 --- a/code/frameworks/preact-webpack5/package.json +++ b/code/frameworks/preact-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-webpack5", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" diff --git a/code/frameworks/react-vite/package.json b/code/frameworks/react-vite/package.json index 9de5b270884c..37b42510626e 100644 --- a/code/frameworks/react-vite/package.json +++ b/code/frameworks/react-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-vite", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for React and Vite: Develop React components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/react-webpack5/package.json b/code/frameworks/react-webpack5/package.json index d69d0f49a329..c43671bb14fb 100644 --- a/code/frameworks/react-webpack5/package.json +++ b/code/frameworks/react-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-webpack5", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/server-webpack5/package.json b/code/frameworks/server-webpack5/package.json index 82f203429481..52cd8d871e45 100644 --- a/code/frameworks/server-webpack5/package.json +++ b/code/frameworks/server-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server-webpack5", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/svelte-vite/package.json b/code/frameworks/svelte-vite/package.json index 3f1c90667782..1b10dcb99319 100644 --- a/code/frameworks/svelte-vite/package.json +++ b/code/frameworks/svelte-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-vite", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Svelte and Vite: Develop Svelte components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/svelte-webpack5/package.json b/code/frameworks/svelte-webpack5/package.json index 4012b7283772..c63122e40028 100644 --- a/code/frameworks/svelte-webpack5/package.json +++ b/code/frameworks/svelte-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-webpack5", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/sveltekit/package.json b/code/frameworks/sveltekit/package.json index f05e664c2737..6cfbe9bf5460 100644 --- a/code/frameworks/sveltekit/package.json +++ b/code/frameworks/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/sveltekit", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for SvelteKit", "keywords": [ "storybook", diff --git a/code/frameworks/vue3-vite/package.json b/code/frameworks/vue3-vite/package.json index 992cbe6bc8f9..a36fc60ad2da 100644 --- a/code/frameworks/vue3-vite/package.json +++ b/code/frameworks/vue3-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-vite", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Vue3 and Vite: Develop Vue3 components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/vue3-webpack5/package.json b/code/frameworks/vue3-webpack5/package.json index 0187566a8403..27cb857d3aac 100644 --- a/code/frameworks/vue3-webpack5/package.json +++ b/code/frameworks/vue3-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-webpack5", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/web-components-vite/package.json b/code/frameworks/web-components-vite/package.json index ae3dda76f624..521db343776a 100644 --- a/code/frameworks/web-components-vite/package.json +++ b/code/frameworks/web-components-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-vite", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for web-components and Vite: Develop Web Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/web-components-webpack5/package.json b/code/frameworks/web-components-webpack5/package.json index d2f16a200664..cef8919e5d61 100644 --- a/code/frameworks/web-components-webpack5/package.json +++ b/code/frameworks/web-components-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-webpack5", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.", "keywords": [ "lit", diff --git a/code/lib/channels/package.json b/code/lib/channels/package.json index 4dde94702018..7215f9831110 100644 --- a/code/lib/channels/package.json +++ b/code/lib/channels/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channels", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "", "keywords": [ "storybook" diff --git a/code/lib/cli-sb/package.json b/code/lib/cli-sb/package.json index e2f7ecca9c6b..64c8731c1701 100644 --- a/code/lib/cli-sb/package.json +++ b/code/lib/cli-sb/package.json @@ -1,6 +1,6 @@ { "name": "sb", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook CLI", "keywords": [ "storybook" diff --git a/code/lib/cli-storybook/package.json b/code/lib/cli-storybook/package.json index 81dccf1a3750..eba2ad5c08ce 100644 --- a/code/lib/cli-storybook/package.json +++ b/code/lib/cli-storybook/package.json @@ -1,6 +1,6 @@ { "name": "storybook", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook CLI", "keywords": [ "storybook" diff --git a/code/lib/cli/package.json b/code/lib/cli/package.json index ee01d8cb4bb6..6baa876bc0d1 100644 --- a/code/lib/cli/package.json +++ b/code/lib/cli/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/cli", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook's CLI - install, dev, build, upgrade, and more", "keywords": [ "cli", diff --git a/code/lib/client-logger/package.json b/code/lib/client-logger/package.json index 938191cceb1b..915205d726f7 100644 --- a/code/lib/client-logger/package.json +++ b/code/lib/client-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-logger", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "", "keywords": [ "storybook" diff --git a/code/lib/codemod/package.json b/code/lib/codemod/package.json index 4142946bc4a0..a973e8585e7c 100644 --- a/code/lib/codemod/package.json +++ b/code/lib/codemod/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/codemod", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "A collection of codemod scripts written with JSCodeshift", "keywords": [ "storybook" diff --git a/code/lib/core-common/package.json b/code/lib/core-common/package.json index f64dbdb36892..d2beadd15a27 100644 --- a/code/lib/core-common/package.json +++ b/code/lib/core-common/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-common", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/core-common/src/versions.ts b/code/lib/core-common/src/versions.ts index 1c852592eb5a..1f3bf59707c4 100644 --- a/code/lib/core-common/src/versions.ts +++ b/code/lib/core-common/src/versions.ts @@ -1,83 +1,83 @@ // auto generated file, do not edit export default { - '@storybook/addon-a11y': '8.0.0-rc.4', - '@storybook/addon-actions': '8.0.0-rc.4', - '@storybook/addon-backgrounds': '8.0.0-rc.4', - '@storybook/addon-controls': '8.0.0-rc.4', - '@storybook/addon-docs': '8.0.0-rc.4', - '@storybook/addon-essentials': '8.0.0-rc.4', - '@storybook/addon-highlight': '8.0.0-rc.4', - '@storybook/addon-interactions': '8.0.0-rc.4', - '@storybook/addon-jest': '8.0.0-rc.4', - '@storybook/addon-links': '8.0.0-rc.4', - '@storybook/addon-mdx-gfm': '8.0.0-rc.4', - '@storybook/addon-measure': '8.0.0-rc.4', - '@storybook/addon-onboarding': '8.0.0-rc.4', - '@storybook/addon-outline': '8.0.0-rc.4', - '@storybook/addon-storysource': '8.0.0-rc.4', - '@storybook/addon-themes': '8.0.0-rc.4', - '@storybook/addon-toolbars': '8.0.0-rc.4', - '@storybook/addon-viewport': '8.0.0-rc.4', - '@storybook/angular': '8.0.0-rc.4', - '@storybook/blocks': '8.0.0-rc.4', - '@storybook/builder-manager': '8.0.0-rc.4', - '@storybook/builder-vite': '8.0.0-rc.4', - '@storybook/builder-webpack5': '8.0.0-rc.4', - '@storybook/channels': '8.0.0-rc.4', - '@storybook/cli': '8.0.0-rc.4', - '@storybook/client-logger': '8.0.0-rc.4', - '@storybook/codemod': '8.0.0-rc.4', - '@storybook/components': '8.0.0-rc.4', - '@storybook/core-common': '8.0.0-rc.4', - '@storybook/core-events': '8.0.0-rc.4', - '@storybook/core-server': '8.0.0-rc.4', - '@storybook/core-webpack': '8.0.0-rc.4', - '@storybook/csf-plugin': '8.0.0-rc.4', - '@storybook/csf-tools': '8.0.0-rc.4', - '@storybook/docs-tools': '8.0.0-rc.4', - '@storybook/ember': '8.0.0-rc.4', - '@storybook/html': '8.0.0-rc.4', - '@storybook/html-vite': '8.0.0-rc.4', - '@storybook/html-webpack5': '8.0.0-rc.4', - '@storybook/instrumenter': '8.0.0-rc.4', - '@storybook/manager': '8.0.0-rc.4', - '@storybook/manager-api': '8.0.0-rc.4', - '@storybook/nextjs': '8.0.0-rc.4', - '@storybook/node-logger': '8.0.0-rc.4', - '@storybook/preact': '8.0.0-rc.4', - '@storybook/preact-vite': '8.0.0-rc.4', - '@storybook/preact-webpack5': '8.0.0-rc.4', - '@storybook/preset-create-react-app': '8.0.0-rc.4', - '@storybook/preset-html-webpack': '8.0.0-rc.4', - '@storybook/preset-preact-webpack': '8.0.0-rc.4', - '@storybook/preset-react-webpack': '8.0.0-rc.4', - '@storybook/preset-server-webpack': '8.0.0-rc.4', - '@storybook/preset-svelte-webpack': '8.0.0-rc.4', - '@storybook/preset-vue3-webpack': '8.0.0-rc.4', - '@storybook/preview': '8.0.0-rc.4', - '@storybook/preview-api': '8.0.0-rc.4', - '@storybook/react': '8.0.0-rc.4', - '@storybook/react-dom-shim': '8.0.0-rc.4', - '@storybook/react-vite': '8.0.0-rc.4', - '@storybook/react-webpack5': '8.0.0-rc.4', - '@storybook/router': '8.0.0-rc.4', - '@storybook/server': '8.0.0-rc.4', - '@storybook/server-webpack5': '8.0.0-rc.4', - '@storybook/source-loader': '8.0.0-rc.4', - '@storybook/svelte': '8.0.0-rc.4', - '@storybook/svelte-vite': '8.0.0-rc.4', - '@storybook/svelte-webpack5': '8.0.0-rc.4', - '@storybook/sveltekit': '8.0.0-rc.4', - '@storybook/telemetry': '8.0.0-rc.4', - '@storybook/test': '8.0.0-rc.4', - '@storybook/theming': '8.0.0-rc.4', - '@storybook/types': '8.0.0-rc.4', - '@storybook/vue3': '8.0.0-rc.4', - '@storybook/vue3-vite': '8.0.0-rc.4', - '@storybook/vue3-webpack5': '8.0.0-rc.4', - '@storybook/web-components': '8.0.0-rc.4', - '@storybook/web-components-vite': '8.0.0-rc.4', - '@storybook/web-components-webpack5': '8.0.0-rc.4', - sb: '8.0.0-rc.4', - storybook: '8.0.0-rc.4', + '@storybook/addon-a11y': '8.0.0-rc.5', + '@storybook/addon-actions': '8.0.0-rc.5', + '@storybook/addon-backgrounds': '8.0.0-rc.5', + '@storybook/addon-controls': '8.0.0-rc.5', + '@storybook/addon-docs': '8.0.0-rc.5', + '@storybook/addon-essentials': '8.0.0-rc.5', + '@storybook/addon-highlight': '8.0.0-rc.5', + '@storybook/addon-interactions': '8.0.0-rc.5', + '@storybook/addon-jest': '8.0.0-rc.5', + '@storybook/addon-links': '8.0.0-rc.5', + '@storybook/addon-mdx-gfm': '8.0.0-rc.5', + '@storybook/addon-measure': '8.0.0-rc.5', + '@storybook/addon-onboarding': '8.0.0-rc.5', + '@storybook/addon-outline': '8.0.0-rc.5', + '@storybook/addon-storysource': '8.0.0-rc.5', + '@storybook/addon-themes': '8.0.0-rc.5', + '@storybook/addon-toolbars': '8.0.0-rc.5', + '@storybook/addon-viewport': '8.0.0-rc.5', + '@storybook/angular': '8.0.0-rc.5', + '@storybook/blocks': '8.0.0-rc.5', + '@storybook/builder-manager': '8.0.0-rc.5', + '@storybook/builder-vite': '8.0.0-rc.5', + '@storybook/builder-webpack5': '8.0.0-rc.5', + '@storybook/channels': '8.0.0-rc.5', + '@storybook/cli': '8.0.0-rc.5', + '@storybook/client-logger': '8.0.0-rc.5', + '@storybook/codemod': '8.0.0-rc.5', + '@storybook/components': '8.0.0-rc.5', + '@storybook/core-common': '8.0.0-rc.5', + '@storybook/core-events': '8.0.0-rc.5', + '@storybook/core-server': '8.0.0-rc.5', + '@storybook/core-webpack': '8.0.0-rc.5', + '@storybook/csf-plugin': '8.0.0-rc.5', + '@storybook/csf-tools': '8.0.0-rc.5', + '@storybook/docs-tools': '8.0.0-rc.5', + '@storybook/ember': '8.0.0-rc.5', + '@storybook/html': '8.0.0-rc.5', + '@storybook/html-vite': '8.0.0-rc.5', + '@storybook/html-webpack5': '8.0.0-rc.5', + '@storybook/instrumenter': '8.0.0-rc.5', + '@storybook/manager': '8.0.0-rc.5', + '@storybook/manager-api': '8.0.0-rc.5', + '@storybook/nextjs': '8.0.0-rc.5', + '@storybook/node-logger': '8.0.0-rc.5', + '@storybook/preact': '8.0.0-rc.5', + '@storybook/preact-vite': '8.0.0-rc.5', + '@storybook/preact-webpack5': '8.0.0-rc.5', + '@storybook/preset-create-react-app': '8.0.0-rc.5', + '@storybook/preset-html-webpack': '8.0.0-rc.5', + '@storybook/preset-preact-webpack': '8.0.0-rc.5', + '@storybook/preset-react-webpack': '8.0.0-rc.5', + '@storybook/preset-server-webpack': '8.0.0-rc.5', + '@storybook/preset-svelte-webpack': '8.0.0-rc.5', + '@storybook/preset-vue3-webpack': '8.0.0-rc.5', + '@storybook/preview': '8.0.0-rc.5', + '@storybook/preview-api': '8.0.0-rc.5', + '@storybook/react': '8.0.0-rc.5', + '@storybook/react-dom-shim': '8.0.0-rc.5', + '@storybook/react-vite': '8.0.0-rc.5', + '@storybook/react-webpack5': '8.0.0-rc.5', + '@storybook/router': '8.0.0-rc.5', + '@storybook/server': '8.0.0-rc.5', + '@storybook/server-webpack5': '8.0.0-rc.5', + '@storybook/source-loader': '8.0.0-rc.5', + '@storybook/svelte': '8.0.0-rc.5', + '@storybook/svelte-vite': '8.0.0-rc.5', + '@storybook/svelte-webpack5': '8.0.0-rc.5', + '@storybook/sveltekit': '8.0.0-rc.5', + '@storybook/telemetry': '8.0.0-rc.5', + '@storybook/test': '8.0.0-rc.5', + '@storybook/theming': '8.0.0-rc.5', + '@storybook/types': '8.0.0-rc.5', + '@storybook/vue3': '8.0.0-rc.5', + '@storybook/vue3-vite': '8.0.0-rc.5', + '@storybook/vue3-webpack5': '8.0.0-rc.5', + '@storybook/web-components': '8.0.0-rc.5', + '@storybook/web-components-vite': '8.0.0-rc.5', + '@storybook/web-components-webpack5': '8.0.0-rc.5', + sb: '8.0.0-rc.5', + storybook: '8.0.0-rc.5', }; diff --git a/code/lib/core-events/package.json b/code/lib/core-events/package.json index 3f0747cf92aa..0a06fbab9d30 100644 --- a/code/lib/core-events/package.json +++ b/code/lib/core-events/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-events", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Event names used in storybook core", "keywords": [ "storybook" diff --git a/code/lib/core-server/package.json b/code/lib/core-server/package.json index 397682e68f88..11904f82e863 100644 --- a/code/lib/core-server/package.json +++ b/code/lib/core-server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-server", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/core-webpack/package.json b/code/lib/core-webpack/package.json index 5a47cdc289e9..e2129ed58c9a 100644 --- a/code/lib/core-webpack/package.json +++ b/code/lib/core-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-webpack", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/csf-plugin/package.json b/code/lib/csf-plugin/package.json index 43b1ab413c13..f275a090e8d6 100644 --- a/code/lib/csf-plugin/package.json +++ b/code/lib/csf-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-plugin", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Enrich CSF files via static analysis", "keywords": [ "storybook" diff --git a/code/lib/csf-tools/package.json b/code/lib/csf-tools/package.json index b1977ce9e9a7..bb9749cfff93 100644 --- a/code/lib/csf-tools/package.json +++ b/code/lib/csf-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-tools", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Parse and manipulate CSF and Storybook config files", "keywords": [ "storybook" diff --git a/code/lib/docs-tools/package.json b/code/lib/docs-tools/package.json index f7794aee8bd5..2863f4b50d55 100644 --- a/code/lib/docs-tools/package.json +++ b/code/lib/docs-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/docs-tools", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Shared utility functions for frameworks to implement docs", "keywords": [ "storybook" diff --git a/code/lib/instrumenter/package.json b/code/lib/instrumenter/package.json index c5b8107c33da..a15743e36be3 100644 --- a/code/lib/instrumenter/package.json +++ b/code/lib/instrumenter/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/instrumenter", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "", "keywords": [ "storybook" diff --git a/code/lib/manager-api/package.json b/code/lib/manager-api/package.json index a198d58b9059..3c5faf93d744 100644 --- a/code/lib/manager-api/package.json +++ b/code/lib/manager-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager-api", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Core Storybook Manager API & Context", "keywords": [ "storybook" diff --git a/code/lib/manager-api/src/version.ts b/code/lib/manager-api/src/version.ts index 238a50abbb29..7a52ddfe9b62 100644 --- a/code/lib/manager-api/src/version.ts +++ b/code/lib/manager-api/src/version.ts @@ -1 +1 @@ -export const version = '8.0.0-rc.4'; +export const version = '8.0.0-rc.5'; diff --git a/code/lib/node-logger/package.json b/code/lib/node-logger/package.json index 79d051952eb2..d8a6f25ba21a 100644 --- a/code/lib/node-logger/package.json +++ b/code/lib/node-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/node-logger", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "", "keywords": [ "storybook" diff --git a/code/lib/preview-api/package.json b/code/lib/preview-api/package.json index a7a8a9b06751..c040ca46a430 100644 --- a/code/lib/preview-api/package.json +++ b/code/lib/preview-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview-api", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "", "keywords": [ "storybook" diff --git a/code/lib/preview/package.json b/code/lib/preview/package.json index bd9c345305c8..ec8800525a3e 100644 --- a/code/lib/preview/package.json +++ b/code/lib/preview/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "", "keywords": [ "storybook" diff --git a/code/lib/react-dom-shim/package.json b/code/lib/react-dom-shim/package.json index cf959321d247..67db8a18ccc8 100644 --- a/code/lib/react-dom-shim/package.json +++ b/code/lib/react-dom-shim/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-dom-shim", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "", "keywords": [ "storybook" diff --git a/code/lib/router/package.json b/code/lib/router/package.json index f89a79205956..52934e8306b4 100644 --- a/code/lib/router/package.json +++ b/code/lib/router/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/router", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Core Storybook Router", "keywords": [ "storybook" diff --git a/code/lib/source-loader/package.json b/code/lib/source-loader/package.json index ae7013a8a97a..14e5d3e46527 100644 --- a/code/lib/source-loader/package.json +++ b/code/lib/source-loader/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/source-loader", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Source loader", "keywords": [ "lib", diff --git a/code/lib/telemetry/package.json b/code/lib/telemetry/package.json index 7622ae48b100..67713dca4118 100644 --- a/code/lib/telemetry/package.json +++ b/code/lib/telemetry/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/telemetry", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Telemetry logging for crash reports and usage statistics", "keywords": [ "storybook" diff --git a/code/lib/test/package.json b/code/lib/test/package.json index 35f70c3fa448..237be906586f 100644 --- a/code/lib/test/package.json +++ b/code/lib/test/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/test", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "", "keywords": [ "storybook" diff --git a/code/lib/theming/package.json b/code/lib/theming/package.json index 8e05a12d6b02..5d8f48150adf 100644 --- a/code/lib/theming/package.json +++ b/code/lib/theming/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/theming", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Core Storybook Components", "keywords": [ "storybook" diff --git a/code/lib/types/package.json b/code/lib/types/package.json index a6dda430d034..aab80d40328c 100644 --- a/code/lib/types/package.json +++ b/code/lib/types/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/types", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Core Storybook TS Types", "keywords": [ "storybook" diff --git a/code/package.json b/code/package.json index 3d37c1912e4f..61f01e1274f8 100644 --- a/code/package.json +++ b/code/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/root", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "private": true, "description": "Storybook root", "homepage": "https://storybook.js.org/", @@ -294,6 +294,5 @@ "Dependency Upgrades" ] ] - }, - "deferredNextVersion": "8.0.0-rc.5" + } } diff --git a/code/presets/create-react-app/package.json b/code/presets/create-react-app/package.json index cfa0011c37ab..55fcc6d076e8 100644 --- a/code/presets/create-react-app/package.json +++ b/code/presets/create-react-app/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-create-react-app", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Create React App preset", "keywords": [ "storybook" diff --git a/code/presets/html-webpack/package.json b/code/presets/html-webpack/package.json index d9c8eb8d668e..2eb6a823eed7 100644 --- a/code/presets/html-webpack/package.json +++ b/code/presets/html-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-html-webpack", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/preact-webpack/package.json b/code/presets/preact-webpack/package.json index 86d416bf0635..71606e160146 100644 --- a/code/presets/preact-webpack/package.json +++ b/code/presets/preact-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-preact-webpack", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" diff --git a/code/presets/react-webpack/package.json b/code/presets/react-webpack/package.json index 3deb8a330927..7db8e8ec09d4 100644 --- a/code/presets/react-webpack/package.json +++ b/code/presets/react-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-react-webpack", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading", "keywords": [ "storybook" diff --git a/code/presets/server-webpack/package.json b/code/presets/server-webpack/package.json index ecf9225400e1..a95582e8c8b9 100644 --- a/code/presets/server-webpack/package.json +++ b/code/presets/server-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-server-webpack", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/svelte-webpack/package.json b/code/presets/svelte-webpack/package.json index 1841c80019fe..c11c76aab89f 100644 --- a/code/presets/svelte-webpack/package.json +++ b/code/presets/svelte-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-svelte-webpack", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/vue3-webpack/package.json b/code/presets/vue3-webpack/package.json index e35b0c2f09c0..b424bf3ed483 100644 --- a/code/presets/vue3-webpack/package.json +++ b/code/presets/vue3-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-vue3-webpack", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/renderers/html/package.json b/code/renderers/html/package.json index cb811c460fd1..18b504618783 100644 --- a/code/renderers/html/package.json +++ b/code/renderers/html/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook HTML renderer", "keywords": [ "storybook" diff --git a/code/renderers/preact/package.json b/code/renderers/preact/package.json index 7f5f1ae7d0e8..cd265a5f4285 100644 --- a/code/renderers/preact/package.json +++ b/code/renderers/preact/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook Preact renderer", "keywords": [ "storybook" diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json index 81b311d0c9f9..065ec55a4f44 100644 --- a/code/renderers/react/package.json +++ b/code/renderers/react/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook React renderer", "keywords": [ "storybook" diff --git a/code/renderers/server/package.json b/code/renderers/server/package.json index efb3bd37ef39..2d2b6b584266 100644 --- a/code/renderers/server/package.json +++ b/code/renderers/server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook Server renderer", "keywords": [ "storybook" diff --git a/code/renderers/svelte/package.json b/code/renderers/svelte/package.json index aa299991281a..cedaffe33caa 100644 --- a/code/renderers/svelte/package.json +++ b/code/renderers/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook Svelte renderer", "keywords": [ "storybook" diff --git a/code/renderers/vue3/package.json b/code/renderers/vue3/package.json index 0e6200950b6e..09d205d83f9f 100644 --- a/code/renderers/vue3/package.json +++ b/code/renderers/vue3/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook Vue 3 renderer", "keywords": [ "storybook" diff --git a/code/renderers/web-components/package.json b/code/renderers/web-components/package.json index 1a8fea295854..6866f00dd368 100644 --- a/code/renderers/web-components/package.json +++ b/code/renderers/web-components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook web-components renderer", "keywords": [ "lit", diff --git a/code/ui/blocks/package.json b/code/ui/blocks/package.json index 6defdcb29635..dae557b18504 100644 --- a/code/ui/blocks/package.json +++ b/code/ui/blocks/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/blocks", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Storybook Doc Blocks", "keywords": [ "storybook" diff --git a/code/ui/components/package.json b/code/ui/components/package.json index f6ebe8539469..cef804640bf3 100644 --- a/code/ui/components/package.json +++ b/code/ui/components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/components", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Core Storybook Components", "keywords": [ "storybook" diff --git a/code/ui/manager/package.json b/code/ui/manager/package.json index 257a1906b48c..e0c45acb051c 100644 --- a/code/ui/manager/package.json +++ b/code/ui/manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager", - "version": "8.0.0-rc.4", + "version": "8.0.0-rc.5", "description": "Core Storybook UI", "keywords": [ "storybook" From ac63ab2e0ce59333ad01b6815144a866d920622c Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Mon, 11 Mar 2024 14:56:53 +0100 Subject: [PATCH 52/70] only setState when the notification was found --- code/lib/manager-api/src/modules/notifications.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/lib/manager-api/src/modules/notifications.ts b/code/lib/manager-api/src/modules/notifications.ts index 83e95d3928ca..3358dd67a241 100644 --- a/code/lib/manager-api/src/modules/notifications.ts +++ b/code/lib/manager-api/src/modules/notifications.ts @@ -37,11 +37,13 @@ export const init: ModuleFn = ({ store }) => { clearNotification: (id) => { const { notifications } = store.getState(); - store.setState({ notifications: notifications.filter((n) => n.id !== id) }); - const notification = notifications.find((n) => n.id === id); - if (notification && notification.onClear) { - notification.onClear({ dismissed: false }); + + if (notification) { + store.setState({ notifications: notifications.filter((n) => n.id !== id) }); + if (notification.onClear) { + notification.onClear({ dismissed: false }); + } } }, }; From 116fd4acd4a86e49d528644e6a375e2984da4007 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Thu, 29 Feb 2024 10:32:34 -0700 Subject: [PATCH 53/70] Add react-vite framework doc --- code/frameworks/react-vite/README.md | 4 +- docs/get-started/react-vite.md | 140 ++++++++++++++++++ .../react/react-vite-add-framework.js.mdx | 8 + .../react/react-vite-add-framework.ts.mdx | 12 ++ .../react/react-vite-install.npm.js.mdx | 3 + .../react/react-vite-install.pnpm.js.mdx | 3 + .../react/react-vite-install.yarn.js.mdx | 3 + docs/toc.js | 5 + 8 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 docs/get-started/react-vite.md create mode 100644 docs/snippets/react/react-vite-add-framework.js.mdx create mode 100644 docs/snippets/react/react-vite-add-framework.ts.mdx create mode 100644 docs/snippets/react/react-vite-install.npm.js.mdx create mode 100644 docs/snippets/react/react-vite-install.pnpm.js.mdx create mode 100644 docs/snippets/react/react-vite-install.yarn.js.mdx diff --git a/code/frameworks/react-vite/README.md b/code/frameworks/react-vite/README.md index e8a35450aec9..272f8f50d55f 100644 --- a/code/frameworks/react-vite/README.md +++ b/code/frameworks/react-vite/README.md @@ -1 +1,3 @@ -# Storybook for React +# Storybook for React & Vite + +See [documentation](https://storybook.js.org/docs/8.0/get-started/react-vite?renderer=react) for installation instructions, usage examples, APIs, and more. \ No newline at end of file diff --git a/docs/get-started/react-vite.md b/docs/get-started/react-vite.md new file mode 100644 index 000000000000..edb6db8a9de3 --- /dev/null +++ b/docs/get-started/react-vite.md @@ -0,0 +1,140 @@ +--- +title: Storybook for React & Vite +--- + +export const SUPPORTED_RENDERER = 'react'; + +Storybook for React & Vite is a [framework](../contribute/framework.md) that makes it easy to develop and test UI components in isolation for [React](https://react.dev/) applications built with [Vite](https://vitejs.dev/). It includes: + +- 🏎️ Pre-bundled for performance +- 🪄 Zero config +- 💫 and more! + + + + + +Storybook for React & Vite is only supported in [React](?renderer=react) projects. + + + + + + + + + +## Requirements + +- React ≥ 16.8 +- Vite ≥ 3.0 (4+ recommended) +- Storybook ≥ 7.0 + +## Getting started + +### In a project without Storybook + +Follow the prompts after running this command in your React project's root directory: + + + + + + + +[More on getting started with Storybook.](./install.md) + +### In a project with Storybook + +This framework is designed to work with Storybook 7+. If you’re not already using v7, upgrade with this command: + + + + + + + +#### Automatic migration + +When running the `upgrade` command above, you should get a prompt asking you to migrate to `@storybook/react-vite`, which should handle everything for you. In case that auto-migration does not work for your project, refer to the manual migration below. + +#### Manual migration + +First, install the framework: + + + + + + + +Then, update your `.storybook/main.js|ts` to change the framework property: + + + + + + + +## Run the Setup Wizard + +If all goes well, you should see a setup wizard that will help you get started with Storybook introducing you to the main concepts and features, including how the UI is organized, how to write your first story, and how to test your components' response to various inputs utilizing [controls](../essentials/controls). + +![Storybook onboarding](./example-onboarding-wizard.png) + +If you skipped the wizard, you can always run it again by adding the `?path=/onboarding` query parameter to the URL of your Storybook instance, provided that the example stories are still available. + +## API + +### Options + +You can pass an options object for additional configuration if needed: + +```ts +// .storybook/main.ts +import type { StorybookConfig } from '@storybook/react-vite'; + +const config: StorybookConfig = { + framework: { + name: '@storybook/react-vite', + options: { + // ... + }, + }, +}; + +export default config; +``` + +#### `builder` + +Type: `Record` + +Configure options for the [framework's builder](../api/main-config-framework.md#optionsbuilder). For this framework, available options can be found in the [Vite builder docs](../builders/vite.md). + + + + diff --git a/docs/snippets/react/react-vite-add-framework.js.mdx b/docs/snippets/react/react-vite-add-framework.js.mdx new file mode 100644 index 000000000000..7a268b5768f0 --- /dev/null +++ b/docs/snippets/react/react-vite-add-framework.js.mdx @@ -0,0 +1,8 @@ +```js +// .storybook/main.js +export default { + // ... + // framework: '@storybook/react-webpack5', 👈 Remove this + framework: '@storybook/react-vite', // 👈 Add this +}; +``` diff --git a/docs/snippets/react/react-vite-add-framework.ts.mdx b/docs/snippets/react/react-vite-add-framework.ts.mdx new file mode 100644 index 000000000000..c407f12cc0a7 --- /dev/null +++ b/docs/snippets/react/react-vite-add-framework.ts.mdx @@ -0,0 +1,12 @@ +```ts +// .storybook/main.ts +import { StorybookConfig } from '@storybook/react-vite'; + +const config: StorybookConfig = { + // ... + // framework: '@storybook/react-webpack5', 👈 Remove this + framework: '@storybook/react-vite', // 👈 Add this +}; + +export default config; +``` diff --git a/docs/snippets/react/react-vite-install.npm.js.mdx b/docs/snippets/react/react-vite-install.npm.js.mdx new file mode 100644 index 000000000000..6a9b052c19bb --- /dev/null +++ b/docs/snippets/react/react-vite-install.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm install --save-dev @storybook/react-vite +``` diff --git a/docs/snippets/react/react-vite-install.pnpm.js.mdx b/docs/snippets/react/react-vite-install.pnpm.js.mdx new file mode 100644 index 000000000000..10b128bb0b31 --- /dev/null +++ b/docs/snippets/react/react-vite-install.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm install --save-dev @storybook/react-vite +``` diff --git a/docs/snippets/react/react-vite-install.yarn.js.mdx b/docs/snippets/react/react-vite-install.yarn.js.mdx new file mode 100644 index 000000000000..a566adef61ba --- /dev/null +++ b/docs/snippets/react/react-vite-install.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn add --dev @storybook/react-vite +``` diff --git a/docs/toc.js b/docs/toc.js index aecde723f11f..7b42d8d677e8 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -33,6 +33,11 @@ module.exports = { title: 'Next.js', type: 'link', }, + { + pathSegment: 'react-vite', + title: 'React & Vite', + type: 'link', + }, { pathSegment: 'vue3-vite', title: 'Vue & Vite', From 3586fc9b27833b275c7296cf7f38ae48a3ae1e35 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Thu, 7 Mar 2024 10:41:56 -0700 Subject: [PATCH 54/70] Address comments --- docs/get-started/react-vite.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/get-started/react-vite.md b/docs/get-started/react-vite.md index edb6db8a9de3..9fbe5eca53af 100644 --- a/docs/get-started/react-vite.md +++ b/docs/get-started/react-vite.md @@ -27,8 +27,8 @@ Storybook for React & Vite is only supported in [React](?renderer=react) project ## Requirements - React ≥ 16.8 -- Vite ≥ 3.0 (4+ recommended) -- Storybook ≥ 7.0 +- Vite ≥ 4.0 +- Storybook ≥ 8.0 ## Getting started From d392a9077658200e17151911224081b8eefa628a Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Tue, 5 Mar 2024 13:11:58 -0700 Subject: [PATCH 55/70] Add `react-webpack5` framework doc --- code/frameworks/react-webpack5/README.md | 48 +----- docs/get-started/react-webpack5.md | 144 ++++++++++++++++++ .../react/react-webpack5-add-framework.js.mdx | 7 + .../react/react-webpack5-add-framework.ts.mdx | 11 ++ .../react/react-webpack5-install.npm.js.mdx | 3 + .../react/react-webpack5-install.pnpm.js.mdx | 3 + .../react/react-webpack5-install.yarn.js.mdx | 3 + docs/toc.js | 5 + 8 files changed, 178 insertions(+), 46 deletions(-) create mode 100644 docs/get-started/react-webpack5.md create mode 100644 docs/snippets/react/react-webpack5-add-framework.js.mdx create mode 100644 docs/snippets/react/react-webpack5-add-framework.ts.mdx create mode 100644 docs/snippets/react/react-webpack5-install.npm.js.mdx create mode 100644 docs/snippets/react/react-webpack5-install.pnpm.js.mdx create mode 100644 docs/snippets/react/react-webpack5-install.yarn.js.mdx diff --git a/code/frameworks/react-webpack5/README.md b/code/frameworks/react-webpack5/README.md index b3b1d877eaa2..53e3de782715 100644 --- a/code/frameworks/react-webpack5/README.md +++ b/code/frameworks/react-webpack5/README.md @@ -1,47 +1,3 @@ -# Storybook for React +# Storybook for React & Webpack -Storybook for React is a UI development environment for your React components. -With it, you can visualize different states of your UI components and develop them interactively. - -![Storybook Screenshot](https://github.com/storybookjs/storybook/blob/main/media/storybook-intro.gif) - -Storybook runs outside of your app. -So you can develop UI components in isolation without worrying about app specific dependencies and requirements. - -## Getting Started - -```sh -cd my-react-app -npx storybook@latest init -``` - -For more information visit: [storybook.js.org](https://storybook.js.org) - ---- - -Storybook also comes with a lot of [addons](https://storybook.js.org/addons) and a great API to customize as you wish. -You can also build a [static version](https://storybook.js.org/docs/react/sharing/publish-storybook) of your Storybook and deploy it anywhere you want. - -Here are some featured storybooks that you can reference to see how Storybook works: - -- [Demo of Storybook Design System](https://storybook.js.org/design-system) - [source](https://github.com/storybookjs/design-system) - -## Create React App - -Support for [Create React App](https://create-react-app.dev/) is handled by [`@storybook/preset-create-react-app`](https://github.com/storybookjs/presets/tree/master/packages/preset-create-react-app). - -This preset enables support for all Create React App features, including Sass/SCSS and TypeScript. - -If you're working on an app that was initialized manually (i.e., without the use of Create React App), ensure that your app has [react-dom](https://www.npmjs.com/package/react-dom) included as a dependency. Failing to do so can lead to unforeseen issues with Storybook and your project. - -## Typescript - -`@storybook/react` is now exporting its own types to use with Typescript. -You don't need to have `@types/storybook__react` installed anymore if it was your case. -But you probably also need to use types from `@types/node @types/react`. - -## Docs - -- [Basics](https://storybook.js.org/docs/react/get-started) -- [Configurations](https://storybook.js.org/docs/react/configure) -- [Addons](https://storybook.js.org/docs/react/configure/storybook-addons) +See [documentation](https://storybook.js.org/docs/8.0/get-started/react-webpack5?renderer=react) for installation instructions, usage examples, APIs, and more. \ No newline at end of file diff --git a/docs/get-started/react-webpack5.md b/docs/get-started/react-webpack5.md new file mode 100644 index 000000000000..48f916d45b3f --- /dev/null +++ b/docs/get-started/react-webpack5.md @@ -0,0 +1,144 @@ +--- +title: Storybook for React & Webpack +--- + +export const SUPPORTED_RENDERER = 'react'; + +Storybook for React & Webpack is a [framework](../contribute/framework.md) that makes it easy to develop and test UI components in isolation for [React](https://react.dev/) applications built with [Webpack](https://webpack.js.org/). + + + + + +Storybook for React & Webpack is only supported in [React](?renderer=react) projects. + + + + + + + + + +## Requirements + +- React ≥ 16.8 +- Webpack ≥ 5.0 +- Storybook ≥ 7.0 + +## Getting started + +### In a project without Storybook + +Follow the prompts after running this command in your React project's root directory: + + + + + + + +[More on getting started with Storybook.](./install.md) + +### In a project with Storybook + +This framework is designed to work with Storybook 7+. If you’re not already using v7, upgrade with this command: + + + + + + + +#### Automatic migration + +When running the `upgrade` command above, you should get a prompt asking you to migrate to `@storybook/react-webpack5`, which should handle everything for you. In case that auto-migration does not work for your project, refer to the manual migration below. + +#### Manual migration + +First, install the framework: + + + + + + + +Then, update your `.storybook/main.js|ts` to change the framework property: + + + + + + + +## Run the Setup Wizard + +If all goes well, you should see a setup wizard that will help you get started with Storybook introducing you to the main concepts and features, including how the UI is organized, how to write your first story, and how to test your components' response to various inputs utilizing [controls](../essentials/controls). + +![Storybook onboarding](./example-onboarding-wizard.png) + +If you skipped the wizard, you can always run it again by adding the `?path=/onboarding` query parameter to the URL of your Storybook instance, provided that the example stories are still available. + +## Create React App (CRA) + +Support for [Create React App](https://create-react-app.dev/) is handled by [`@storybook/preset-create-react-app`](https://github.com/storybookjs/presets/tree/master/packages/preset-create-react-app). + +This preset enables support for all CRA features, including Sass/SCSS and TypeScript. + +If you're working on an app that was initialized manually (i.e., without the use of CRA), ensure that your app has [react-dom](https://www.npmjs.com/package/react-dom) included as a dependency. Failing to do so can lead to unforeseen issues with Storybook and your project. + +## API + +### Options + +You can pass an options object for additional configuration if needed: + +```ts +// .storybook/main.ts +import type { StorybookConfig } from '@storybook/react-webpack5'; + +const config: StorybookConfig = { + framework: { + name: '@storybook/react-webpack5', + options: { + // ... + }, + }, +}; + +export default config; +``` + +#### `builder` + +Type: `Record` + +Configure options for the [framework's builder](../api/main-config-framework.md#optionsbuilder). For this framework, available options can be found in the [Webpack builder docs](../builders/webpack.md). + + + + diff --git a/docs/snippets/react/react-webpack5-add-framework.js.mdx b/docs/snippets/react/react-webpack5-add-framework.js.mdx new file mode 100644 index 000000000000..cbacf99bd80a --- /dev/null +++ b/docs/snippets/react/react-webpack5-add-framework.js.mdx @@ -0,0 +1,7 @@ +```js +// .storybook/main.js +export default { + // ... + framework: '@storybook/react-webpack5', // 👈 Add this +}; +``` diff --git a/docs/snippets/react/react-webpack5-add-framework.ts.mdx b/docs/snippets/react/react-webpack5-add-framework.ts.mdx new file mode 100644 index 000000000000..2417fd5ea98a --- /dev/null +++ b/docs/snippets/react/react-webpack5-add-framework.ts.mdx @@ -0,0 +1,11 @@ +```ts +// .storybook/main.ts +import { StorybookConfig } from '@storybook/react-webpack5'; + +const config: StorybookConfig = { + // ... + framework: '@storybook/react-webpack5', // 👈 Add this +}; + +export default config; +``` diff --git a/docs/snippets/react/react-webpack5-install.npm.js.mdx b/docs/snippets/react/react-webpack5-install.npm.js.mdx new file mode 100644 index 000000000000..8b54052f3f28 --- /dev/null +++ b/docs/snippets/react/react-webpack5-install.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm install --save-dev @storybook/react-webpack5 +``` diff --git a/docs/snippets/react/react-webpack5-install.pnpm.js.mdx b/docs/snippets/react/react-webpack5-install.pnpm.js.mdx new file mode 100644 index 000000000000..840d64ae06c9 --- /dev/null +++ b/docs/snippets/react/react-webpack5-install.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm install --save-dev @storybook/react-webpack5 +``` diff --git a/docs/snippets/react/react-webpack5-install.yarn.js.mdx b/docs/snippets/react/react-webpack5-install.yarn.js.mdx new file mode 100644 index 000000000000..b4f143c8a120 --- /dev/null +++ b/docs/snippets/react/react-webpack5-install.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn add --dev @storybook/react-webpack5 +``` diff --git a/docs/toc.js b/docs/toc.js index 7b42d8d677e8..ac28d22b26af 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -38,6 +38,11 @@ module.exports = { title: 'React & Vite', type: 'link', }, + { + pathSegment: 'react-webpack5', + title: 'React & Webpack', + type: 'link', + }, { pathSegment: 'vue3-vite', title: 'Vue & Vite', From f9646ddf049d5bfb0a709dd1ce733b6f17dcc357 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Thu, 7 Mar 2024 10:40:54 -0700 Subject: [PATCH 56/70] Address comments --- docs/get-started/react-webpack5.md | 40 ++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/docs/get-started/react-webpack5.md b/docs/get-started/react-webpack5.md index 48f916d45b3f..769aa82a0f2d 100644 --- a/docs/get-started/react-webpack5.md +++ b/docs/get-started/react-webpack5.md @@ -24,7 +24,7 @@ Storybook for React & Webpack is only supported in [React](?renderer=react) proj - React ≥ 16.8 - Webpack ≥ 5.0 -- Storybook ≥ 7.0 +- Storybook ≥ 8.0 ## Getting started @@ -82,7 +82,43 @@ First, install the framework: -Then, update your `.storybook/main.js|ts` to change the framework property: +Next, install and register your appropriate compiler addon, depending on whether you're using SWC (recommended) or Babel: + + + +If your project is using [Create React App](#create-react-app-cra), you can skip this step. + + + + + + + + + +or + + + + + + + +More details can be found in the [Webpack builder docs](../builders/webpack.md#compiler-support). + +Finally, update your `.storybook/main.js|ts` to change the framework property: From fffbbc9db03f9fc4fd1de7c26725f42c779e7f69 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Wed, 6 Mar 2024 12:14:47 -0700 Subject: [PATCH 57/70] Add `svelte-vite` framework doc --- code/frameworks/svelte-vite/README.md | 4 +- docs/get-started/svelte-vite.md | 153 ++++++++++++++++++ .../svelte-csf-addon-install.npm.js.mdx | 2 +- .../svelte-csf-addon-install.pnpm.js.mdx | 2 +- .../svelte-csf-addon-install.yarn.js.mdx | 2 +- .../svelte/svelte-vite-add-framework.js.mdx | 7 + .../svelte/svelte-vite-add-framework.ts.mdx | 11 ++ .../svelte/svelte-vite-install.npm.js.mdx | 3 + .../svelte/svelte-vite-install.pnpm.js.mdx | 3 + .../svelte/svelte-vite-install.yarn.js.mdx | 3 + docs/toc.js | 5 + 11 files changed, 191 insertions(+), 4 deletions(-) create mode 100644 docs/get-started/svelte-vite.md create mode 100644 docs/snippets/svelte/svelte-vite-add-framework.js.mdx create mode 100644 docs/snippets/svelte/svelte-vite-add-framework.ts.mdx create mode 100644 docs/snippets/svelte/svelte-vite-install.npm.js.mdx create mode 100644 docs/snippets/svelte/svelte-vite-install.pnpm.js.mdx create mode 100644 docs/snippets/svelte/svelte-vite-install.yarn.js.mdx diff --git a/code/frameworks/svelte-vite/README.md b/code/frameworks/svelte-vite/README.md index 30a7c36ca01e..1f1dc740151d 100644 --- a/code/frameworks/svelte-vite/README.md +++ b/code/frameworks/svelte-vite/README.md @@ -1 +1,3 @@ -# Storybook for Svelte +# Storybook for Svelte & Vite + +See [documentation](https://storybook.js.org/docs/8.0/get-started/svelte-vite?renderer=svelte) for installation instructions, usage examples, APIs, and more. diff --git a/docs/get-started/svelte-vite.md b/docs/get-started/svelte-vite.md new file mode 100644 index 000000000000..2069a18d66ee --- /dev/null +++ b/docs/get-started/svelte-vite.md @@ -0,0 +1,153 @@ +--- +title: Storybook for Svelte & Vite +--- + +export const SUPPORTED_RENDERER = 'svelte'; + +Storybook for Svelte & Vite is a [framework](../contribute/framework.md) that makes it easy to develop and test UI components in isolation for applications using [Svelte](https://svelte.dev/) built with [Vite](https://vitejs.dev/). + + + + + +Storybook for Svelte & Vite is only supported in [Svelte](?renderer=svelte) projects. + + + + + + + + + +## Requirements + +- Svelte ≥ 4.0 +- Vite ≥ 4.0 +- Storybook ≥ 8.0 + +## Getting started + +### In a project without Storybook + +Follow the prompts after running this command in your Sveltekit project's root directory: + + + + + + + +[More on getting started with Storybook.](./install.md) + +### In a project with Storybook + +This framework is designed to work with Storybook 7+. If you’re not already using v7, upgrade with this command: + + + + + + + +#### Automatic migration + +When running the `upgrade` command above, you should get a prompt asking you to migrate to `@storybook/sveltekit`, which should handle everything for you. In case that auto-migration does not work for your project, refer to the manual migration below. + +#### Manual migration + +First, install the framework: + + + + + + + +Then, update your `.storybook/main.js|ts` to change the framework property: + + + + + + + +## Writing native Svelte stories + +Storybook provides a Svelte addon maintained by the community, enabling you to write stories for your Svelte components using the template syntax. You'll need to take some additional steps to enable this feature. + +Run the following command to install the addon. + + + + + + + + + +The community actively maintains the Svelte CSF addon but still lacks some features currently available in the official Storybook Svelte framework support. For more information, see [addon's documentation](https://github.com/storybookjs/addon-svelte-csf). + + + +## API + +### Options + +You can pass an options object for additional configuration if needed: + +```js +// .storybook/main.js +import * as path from 'path'; + +export default { + // ... + framework: { + name: '@storybook/svelte-vite', + options: { + // ... + }, + }, +}; +``` + +The available options are: + +#### `builder` + +Type: `Record` + +Configure options for the [framework's builder](../api/main-config-framework.md#optionsbuilder). For this framework, available options can be found in the [Vite builder docs](../builders/vite.md). + + + + diff --git a/docs/snippets/svelte/svelte-csf-addon-install.npm.js.mdx b/docs/snippets/svelte/svelte-csf-addon-install.npm.js.mdx index 574d63651863..3889ca8909c4 100644 --- a/docs/snippets/svelte/svelte-csf-addon-install.npm.js.mdx +++ b/docs/snippets/svelte/svelte-csf-addon-install.npm.js.mdx @@ -1,3 +1,3 @@ ```shell -npm install @storybook/addon-svelte-csf --save-dev +npx storybook@latest add @storybook/addon-svelte-csf ``` diff --git a/docs/snippets/svelte/svelte-csf-addon-install.pnpm.js.mdx b/docs/snippets/svelte/svelte-csf-addon-install.pnpm.js.mdx index 4ff9be66f107..eb8c09e0708c 100644 --- a/docs/snippets/svelte/svelte-csf-addon-install.pnpm.js.mdx +++ b/docs/snippets/svelte/svelte-csf-addon-install.pnpm.js.mdx @@ -1,3 +1,3 @@ ```shell -pnpm add --save-dev @storybook/addon-svelte-csf +pnpm dlx storybook@latest add @storybook/addon-svelte-csf ``` diff --git a/docs/snippets/svelte/svelte-csf-addon-install.yarn.js.mdx b/docs/snippets/svelte/svelte-csf-addon-install.yarn.js.mdx index 5b3e6dff23f6..52ecff831d4c 100644 --- a/docs/snippets/svelte/svelte-csf-addon-install.yarn.js.mdx +++ b/docs/snippets/svelte/svelte-csf-addon-install.yarn.js.mdx @@ -1,3 +1,3 @@ ```shell -yarn add --dev @storybook/addon-svelte-csf +yarn storybook@latest add @storybook/addon-svelte-csf ``` diff --git a/docs/snippets/svelte/svelte-vite-add-framework.js.mdx b/docs/snippets/svelte/svelte-vite-add-framework.js.mdx new file mode 100644 index 000000000000..a16370254866 --- /dev/null +++ b/docs/snippets/svelte/svelte-vite-add-framework.js.mdx @@ -0,0 +1,7 @@ +```js +// .storybook/main.js +export default { + // ... + framework: '@storybook/svelte-vite', // 👈 Add this +}; +``` diff --git a/docs/snippets/svelte/svelte-vite-add-framework.ts.mdx b/docs/snippets/svelte/svelte-vite-add-framework.ts.mdx new file mode 100644 index 000000000000..920d91ae6d13 --- /dev/null +++ b/docs/snippets/svelte/svelte-vite-add-framework.ts.mdx @@ -0,0 +1,11 @@ +```ts +// .storybook/main.ts +import { StorybookConfig } from '@storybook/svelte-vite'; + +const config: StorybookConfig = { + // ... + framework: '@storybook/svelte-vite', // 👈 Add this +}; + +export default config; +``` diff --git a/docs/snippets/svelte/svelte-vite-install.npm.js.mdx b/docs/snippets/svelte/svelte-vite-install.npm.js.mdx new file mode 100644 index 000000000000..8b6986b5ecfa --- /dev/null +++ b/docs/snippets/svelte/svelte-vite-install.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm install --save-dev @storybook/svelte-vite +``` diff --git a/docs/snippets/svelte/svelte-vite-install.pnpm.js.mdx b/docs/snippets/svelte/svelte-vite-install.pnpm.js.mdx new file mode 100644 index 000000000000..585bc12393ca --- /dev/null +++ b/docs/snippets/svelte/svelte-vite-install.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm install --save-dev @storybook/svelte-vite +``` diff --git a/docs/snippets/svelte/svelte-vite-install.yarn.js.mdx b/docs/snippets/svelte/svelte-vite-install.yarn.js.mdx new file mode 100644 index 000000000000..7a8b11a4d500 --- /dev/null +++ b/docs/snippets/svelte/svelte-vite-install.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn add --dev @storybook/svelte-vite +``` diff --git a/docs/toc.js b/docs/toc.js index ac28d22b26af..5b660a93cce5 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -43,6 +43,11 @@ module.exports = { title: 'React & Webpack', type: 'link', }, + { + pathSegment: 'svelte-vite', + title: 'Svelte & Vite', + type: 'link', + }, { pathSegment: 'vue3-vite', title: 'Vue & Vite', From a5cfe8eafd857cfbae8a8283fd7efe99e817a6e9 Mon Sep 17 00:00:00 2001 From: storybook-bot <32066757+storybook-bot@users.noreply.github.com> Date: Mon, 11 Mar 2024 15:43:51 +0000 Subject: [PATCH 58/70] Bump next to be one minor ahead of main [skip ci] --- code/addons/a11y/package.json | 2 +- code/addons/actions/package.json | 2 +- code/addons/backgrounds/package.json | 2 +- code/addons/controls/package.json | 2 +- code/addons/docs/package.json | 2 +- code/addons/essentials/package.json | 2 +- code/addons/gfm/package.json | 2 +- code/addons/highlight/package.json | 2 +- code/addons/interactions/package.json | 2 +- code/addons/jest/package.json | 2 +- code/addons/links/package.json | 2 +- code/addons/measure/package.json | 2 +- code/addons/onboarding/package.json | 2 +- code/addons/outline/package.json | 2 +- code/addons/storysource/package.json | 2 +- code/addons/themes/package.json | 2 +- code/addons/toolbars/package.json | 2 +- code/addons/viewport/package.json | 2 +- code/builders/builder-manager/package.json | 2 +- code/builders/builder-vite/package.json | 2 +- code/builders/builder-webpack5/package.json | 2 +- code/frameworks/angular/package.json | 2 +- code/frameworks/ember/package.json | 2 +- code/frameworks/html-vite/package.json | 2 +- code/frameworks/html-webpack5/package.json | 2 +- code/frameworks/nextjs/package.json | 2 +- code/frameworks/preact-vite/package.json | 2 +- code/frameworks/preact-webpack5/package.json | 2 +- code/frameworks/react-vite/package.json | 2 +- code/frameworks/react-webpack5/package.json | 2 +- code/frameworks/server-webpack5/package.json | 2 +- code/frameworks/svelte-vite/package.json | 2 +- code/frameworks/svelte-webpack5/package.json | 2 +- code/frameworks/sveltekit/package.json | 2 +- code/frameworks/vue3-vite/package.json | 2 +- code/frameworks/vue3-webpack5/package.json | 2 +- .../web-components-vite/package.json | 2 +- .../web-components-webpack5/package.json | 2 +- code/lib/channels/package.json | 2 +- code/lib/cli-sb/package.json | 2 +- code/lib/cli-storybook/package.json | 2 +- code/lib/cli/package.json | 2 +- code/lib/client-logger/package.json | 2 +- code/lib/codemod/package.json | 2 +- code/lib/core-common/package.json | 2 +- code/lib/core-common/src/versions.ts | 160 +++++++++--------- code/lib/core-events/package.json | 2 +- code/lib/core-server/package.json | 2 +- code/lib/core-webpack/package.json | 2 +- code/lib/csf-plugin/package.json | 2 +- code/lib/csf-tools/package.json | 2 +- code/lib/docs-tools/package.json | 2 +- code/lib/instrumenter/package.json | 2 +- code/lib/manager-api/package.json | 2 +- code/lib/manager-api/src/version.ts | 2 +- code/lib/node-logger/package.json | 2 +- code/lib/preview-api/package.json | 2 +- code/lib/preview/package.json | 2 +- code/lib/react-dom-shim/package.json | 2 +- code/lib/router/package.json | 2 +- code/lib/source-loader/package.json | 2 +- code/lib/telemetry/package.json | 2 +- code/lib/test/package.json | 2 +- code/lib/theming/package.json | 2 +- code/lib/types/package.json | 2 +- code/package.json | 2 +- code/presets/create-react-app/package.json | 2 +- code/presets/html-webpack/package.json | 2 +- code/presets/preact-webpack/package.json | 2 +- code/presets/react-webpack/package.json | 2 +- code/presets/server-webpack/package.json | 2 +- code/presets/svelte-webpack/package.json | 2 +- code/presets/vue3-webpack/package.json | 2 +- code/renderers/html/package.json | 2 +- code/renderers/preact/package.json | 2 +- code/renderers/react/package.json | 2 +- code/renderers/server/package.json | 2 +- code/renderers/svelte/package.json | 2 +- code/renderers/vue3/package.json | 2 +- code/renderers/web-components/package.json | 2 +- code/ui/blocks/package.json | 2 +- code/ui/components/package.json | 2 +- code/ui/manager/package.json | 2 +- 83 files changed, 162 insertions(+), 162 deletions(-) diff --git a/code/addons/a11y/package.json b/code/addons/a11y/package.json index 613dbdc000fb..73f802106851 100644 --- a/code/addons/a11y/package.json +++ b/code/addons/a11y/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-a11y", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Test component compliance with web accessibility standards", "keywords": [ "a11y", diff --git a/code/addons/actions/package.json b/code/addons/actions/package.json index 4724520ee560..2f13f8e98a15 100644 --- a/code/addons/actions/package.json +++ b/code/addons/actions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-actions", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Get UI feedback when an action is performed on an interactive element", "keywords": [ "storybook", diff --git a/code/addons/backgrounds/package.json b/code/addons/backgrounds/package.json index 40173cebe181..08ea5529d139 100644 --- a/code/addons/backgrounds/package.json +++ b/code/addons/backgrounds/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-backgrounds", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Switch backgrounds to view components in different settings", "keywords": [ "addon", diff --git a/code/addons/controls/package.json b/code/addons/controls/package.json index 682efb322c40..d59821722737 100644 --- a/code/addons/controls/package.json +++ b/code/addons/controls/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-controls", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Interact with component inputs dynamically in the Storybook UI", "keywords": [ "addon", diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json index 86d2d040a1fa..3c6eaa0d625a 100644 --- a/code/addons/docs/package.json +++ b/code/addons/docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-docs", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Document component usage and properties in Markdown", "keywords": [ "addon", diff --git a/code/addons/essentials/package.json b/code/addons/essentials/package.json index ea286c7e6daf..3b9143837d78 100644 --- a/code/addons/essentials/package.json +++ b/code/addons/essentials/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-essentials", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Curated addons to bring out the best of Storybook", "keywords": [ "addon", diff --git a/code/addons/gfm/package.json b/code/addons/gfm/package.json index 8626bce63870..b35c226de305 100644 --- a/code/addons/gfm/package.json +++ b/code/addons/gfm/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-mdx-gfm", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "GitHub Flavored Markdown in Storybook", "keywords": [ "addon", diff --git a/code/addons/highlight/package.json b/code/addons/highlight/package.json index 9bcf61952789..bae6a544048d 100644 --- a/code/addons/highlight/package.json +++ b/code/addons/highlight/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-highlight", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Highlight DOM nodes within your stories", "keywords": [ "storybook-addons", diff --git a/code/addons/interactions/package.json b/code/addons/interactions/package.json index c0773463ab1a..dbb88085b22b 100644 --- a/code/addons/interactions/package.json +++ b/code/addons/interactions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-interactions", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Automate, test and debug user interactions", "keywords": [ "storybook-addons", diff --git a/code/addons/jest/package.json b/code/addons/jest/package.json index 7f6f3de7b01d..bd511b8e0b5c 100644 --- a/code/addons/jest/package.json +++ b/code/addons/jest/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-jest", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "React storybook addon that show component jest report", "keywords": [ "addon", diff --git a/code/addons/links/package.json b/code/addons/links/package.json index 3c218f06f3de..686c684f829b 100644 --- a/code/addons/links/package.json +++ b/code/addons/links/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-links", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Link stories together to build demos and prototypes with your UI components", "keywords": [ "addon", diff --git a/code/addons/measure/package.json b/code/addons/measure/package.json index 8a6449f6a9e4..1985366f670c 100644 --- a/code/addons/measure/package.json +++ b/code/addons/measure/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-measure", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Inspect layouts by visualizing the box model", "keywords": [ "storybook-addons", diff --git a/code/addons/onboarding/package.json b/code/addons/onboarding/package.json index df3cad03d039..72726fb3726f 100644 --- a/code/addons/onboarding/package.json +++ b/code/addons/onboarding/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", diff --git a/code/addons/outline/package.json b/code/addons/outline/package.json index b87b89b4eb3b..f8db2b4ea149 100644 --- a/code/addons/outline/package.json +++ b/code/addons/outline/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-outline", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Outline all elements with CSS to help with layout placement and alignment", "keywords": [ "storybook-addons", diff --git a/code/addons/storysource/package.json b/code/addons/storysource/package.json index b9eefe5d2044..c7326a263ad1 100644 --- a/code/addons/storysource/package.json +++ b/code/addons/storysource/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storysource", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "View a story’s source code to see how it works and paste into your app", "keywords": [ "addon", diff --git a/code/addons/themes/package.json b/code/addons/themes/package.json index 2e530e1427f3..a3599f8288e2 100644 --- a/code/addons/themes/package.json +++ b/code/addons/themes/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-themes", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Switch between multiple themes for you components in Storybook", "keywords": [ "css", diff --git a/code/addons/toolbars/package.json b/code/addons/toolbars/package.json index d5678032c004..ec4a11506175 100644 --- a/code/addons/toolbars/package.json +++ b/code/addons/toolbars/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-toolbars", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Create your own toolbar items that control story rendering", "keywords": [ "addon", diff --git a/code/addons/viewport/package.json b/code/addons/viewport/package.json index e12051424124..92208b361584 100644 --- a/code/addons/viewport/package.json +++ b/code/addons/viewport/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-viewport", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Build responsive components by adjusting Storybook’s viewport size and orientation", "keywords": [ "addon", diff --git a/code/builders/builder-manager/package.json b/code/builders/builder-manager/package.json index 818cd8bc9c1f..a31a2e91a374 100644 --- a/code/builders/builder-manager/package.json +++ b/code/builders/builder-manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-manager", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook manager builder", "keywords": [ "storybook" diff --git a/code/builders/builder-vite/package.json b/code/builders/builder-vite/package.json index ecd31fb31953..1d0dd1b7610c 100644 --- a/code/builders/builder-vite/package.json +++ b/code/builders/builder-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-vite", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "A plugin to run and build Storybooks with Vite", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme", "bugs": { diff --git a/code/builders/builder-webpack5/package.json b/code/builders/builder-webpack5/package.json index 09b3cc203aff..31d47498ee40 100644 --- a/code/builders/builder-webpack5/package.json +++ b/code/builders/builder-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-webpack5", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json index 8b43006f3dc4..9ffa620ac401 100644 --- a/code/frameworks/angular/package.json +++ b/code/frameworks/angular/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/angular", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Angular: Develop Angular components in isolation with hot reloading.", "keywords": [ "storybook", diff --git a/code/frameworks/ember/package.json b/code/frameworks/ember/package.json index 425c1eb5b888..9c796b2f5b7c 100644 --- a/code/frameworks/ember/package.json +++ b/code/frameworks/ember/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/ember", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/frameworks/ember", "bugs": { diff --git a/code/frameworks/html-vite/package.json b/code/frameworks/html-vite/package.json index 6cb46be12bd2..26bcfa5687c7 100644 --- a/code/frameworks/html-vite/package.json +++ b/code/frameworks/html-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-vite", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for HTML and Vite: Develop HTML in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/html-webpack5/package.json b/code/frameworks/html-webpack5/package.json index d8181d85aa46..7c6e27ae25e1 100644 --- a/code/frameworks/html-webpack5/package.json +++ b/code/frameworks/html-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-webpack5", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/nextjs/package.json b/code/frameworks/nextjs/package.json index 4f038bac401d..f3a10ee4210d 100644 --- a/code/frameworks/nextjs/package.json +++ b/code/frameworks/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/nextjs", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Next.js", "keywords": [ "storybook", diff --git a/code/frameworks/preact-vite/package.json b/code/frameworks/preact-vite/package.json index 2bb980d16d83..b8b67128ef22 100644 --- a/code/frameworks/preact-vite/package.json +++ b/code/frameworks/preact-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-vite", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Preact and Vite: Develop Preact components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/preact-webpack5/package.json b/code/frameworks/preact-webpack5/package.json index 33338d991b79..51bdc48718ad 100644 --- a/code/frameworks/preact-webpack5/package.json +++ b/code/frameworks/preact-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-webpack5", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" diff --git a/code/frameworks/react-vite/package.json b/code/frameworks/react-vite/package.json index 37b42510626e..da08584b7625 100644 --- a/code/frameworks/react-vite/package.json +++ b/code/frameworks/react-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-vite", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for React and Vite: Develop React components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/react-webpack5/package.json b/code/frameworks/react-webpack5/package.json index c43671bb14fb..3d5ceb3ba80c 100644 --- a/code/frameworks/react-webpack5/package.json +++ b/code/frameworks/react-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-webpack5", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/server-webpack5/package.json b/code/frameworks/server-webpack5/package.json index 52cd8d871e45..6aa05a0c122d 100644 --- a/code/frameworks/server-webpack5/package.json +++ b/code/frameworks/server-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server-webpack5", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/svelte-vite/package.json b/code/frameworks/svelte-vite/package.json index 1b10dcb99319..9090da475670 100644 --- a/code/frameworks/svelte-vite/package.json +++ b/code/frameworks/svelte-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-vite", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Svelte and Vite: Develop Svelte components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/svelte-webpack5/package.json b/code/frameworks/svelte-webpack5/package.json index c63122e40028..db4ed258f40c 100644 --- a/code/frameworks/svelte-webpack5/package.json +++ b/code/frameworks/svelte-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-webpack5", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/sveltekit/package.json b/code/frameworks/sveltekit/package.json index 6cfbe9bf5460..2acf401c3f24 100644 --- a/code/frameworks/sveltekit/package.json +++ b/code/frameworks/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/sveltekit", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for SvelteKit", "keywords": [ "storybook", diff --git a/code/frameworks/vue3-vite/package.json b/code/frameworks/vue3-vite/package.json index a36fc60ad2da..44297c5a4047 100644 --- a/code/frameworks/vue3-vite/package.json +++ b/code/frameworks/vue3-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-vite", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Vue3 and Vite: Develop Vue3 components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/vue3-webpack5/package.json b/code/frameworks/vue3-webpack5/package.json index 27cb857d3aac..094fb5103f2d 100644 --- a/code/frameworks/vue3-webpack5/package.json +++ b/code/frameworks/vue3-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-webpack5", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/web-components-vite/package.json b/code/frameworks/web-components-vite/package.json index 521db343776a..cbe4ffdc247d 100644 --- a/code/frameworks/web-components-vite/package.json +++ b/code/frameworks/web-components-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-vite", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for web-components and Vite: Develop Web Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/web-components-webpack5/package.json b/code/frameworks/web-components-webpack5/package.json index cef8919e5d61..866ab3d35e5d 100644 --- a/code/frameworks/web-components-webpack5/package.json +++ b/code/frameworks/web-components-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-webpack5", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.", "keywords": [ "lit", diff --git a/code/lib/channels/package.json b/code/lib/channels/package.json index 7215f9831110..1f583dc9865d 100644 --- a/code/lib/channels/package.json +++ b/code/lib/channels/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channels", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/cli-sb/package.json b/code/lib/cli-sb/package.json index 64c8731c1701..e707547191dd 100644 --- a/code/lib/cli-sb/package.json +++ b/code/lib/cli-sb/package.json @@ -1,6 +1,6 @@ { "name": "sb", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook CLI", "keywords": [ "storybook" diff --git a/code/lib/cli-storybook/package.json b/code/lib/cli-storybook/package.json index eba2ad5c08ce..3eb1547fccc0 100644 --- a/code/lib/cli-storybook/package.json +++ b/code/lib/cli-storybook/package.json @@ -1,6 +1,6 @@ { "name": "storybook", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook CLI", "keywords": [ "storybook" diff --git a/code/lib/cli/package.json b/code/lib/cli/package.json index 6baa876bc0d1..01d064068c60 100644 --- a/code/lib/cli/package.json +++ b/code/lib/cli/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/cli", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook's CLI - install, dev, build, upgrade, and more", "keywords": [ "cli", diff --git a/code/lib/client-logger/package.json b/code/lib/client-logger/package.json index 915205d726f7..83926ddd07ac 100644 --- a/code/lib/client-logger/package.json +++ b/code/lib/client-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-logger", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/codemod/package.json b/code/lib/codemod/package.json index a973e8585e7c..290164c50f5f 100644 --- a/code/lib/codemod/package.json +++ b/code/lib/codemod/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/codemod", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "A collection of codemod scripts written with JSCodeshift", "keywords": [ "storybook" diff --git a/code/lib/core-common/package.json b/code/lib/core-common/package.json index d2beadd15a27..b46b9a1de983 100644 --- a/code/lib/core-common/package.json +++ b/code/lib/core-common/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-common", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/core-common/src/versions.ts b/code/lib/core-common/src/versions.ts index 1f3bf59707c4..0109c9c2a8a3 100644 --- a/code/lib/core-common/src/versions.ts +++ b/code/lib/core-common/src/versions.ts @@ -1,83 +1,83 @@ // auto generated file, do not edit export default { - '@storybook/addon-a11y': '8.0.0-rc.5', - '@storybook/addon-actions': '8.0.0-rc.5', - '@storybook/addon-backgrounds': '8.0.0-rc.5', - '@storybook/addon-controls': '8.0.0-rc.5', - '@storybook/addon-docs': '8.0.0-rc.5', - '@storybook/addon-essentials': '8.0.0-rc.5', - '@storybook/addon-highlight': '8.0.0-rc.5', - '@storybook/addon-interactions': '8.0.0-rc.5', - '@storybook/addon-jest': '8.0.0-rc.5', - '@storybook/addon-links': '8.0.0-rc.5', - '@storybook/addon-mdx-gfm': '8.0.0-rc.5', - '@storybook/addon-measure': '8.0.0-rc.5', - '@storybook/addon-onboarding': '8.0.0-rc.5', - '@storybook/addon-outline': '8.0.0-rc.5', - '@storybook/addon-storysource': '8.0.0-rc.5', - '@storybook/addon-themes': '8.0.0-rc.5', - '@storybook/addon-toolbars': '8.0.0-rc.5', - '@storybook/addon-viewport': '8.0.0-rc.5', - '@storybook/angular': '8.0.0-rc.5', - '@storybook/blocks': '8.0.0-rc.5', - '@storybook/builder-manager': '8.0.0-rc.5', - '@storybook/builder-vite': '8.0.0-rc.5', - '@storybook/builder-webpack5': '8.0.0-rc.5', - '@storybook/channels': '8.0.0-rc.5', - '@storybook/cli': '8.0.0-rc.5', - '@storybook/client-logger': '8.0.0-rc.5', - '@storybook/codemod': '8.0.0-rc.5', - '@storybook/components': '8.0.0-rc.5', - '@storybook/core-common': '8.0.0-rc.5', - '@storybook/core-events': '8.0.0-rc.5', - '@storybook/core-server': '8.0.0-rc.5', - '@storybook/core-webpack': '8.0.0-rc.5', - '@storybook/csf-plugin': '8.0.0-rc.5', - '@storybook/csf-tools': '8.0.0-rc.5', - '@storybook/docs-tools': '8.0.0-rc.5', - '@storybook/ember': '8.0.0-rc.5', - '@storybook/html': '8.0.0-rc.5', - '@storybook/html-vite': '8.0.0-rc.5', - '@storybook/html-webpack5': '8.0.0-rc.5', - '@storybook/instrumenter': '8.0.0-rc.5', - '@storybook/manager': '8.0.0-rc.5', - '@storybook/manager-api': '8.0.0-rc.5', - '@storybook/nextjs': '8.0.0-rc.5', - '@storybook/node-logger': '8.0.0-rc.5', - '@storybook/preact': '8.0.0-rc.5', - '@storybook/preact-vite': '8.0.0-rc.5', - '@storybook/preact-webpack5': '8.0.0-rc.5', - '@storybook/preset-create-react-app': '8.0.0-rc.5', - '@storybook/preset-html-webpack': '8.0.0-rc.5', - '@storybook/preset-preact-webpack': '8.0.0-rc.5', - '@storybook/preset-react-webpack': '8.0.0-rc.5', - '@storybook/preset-server-webpack': '8.0.0-rc.5', - '@storybook/preset-svelte-webpack': '8.0.0-rc.5', - '@storybook/preset-vue3-webpack': '8.0.0-rc.5', - '@storybook/preview': '8.0.0-rc.5', - '@storybook/preview-api': '8.0.0-rc.5', - '@storybook/react': '8.0.0-rc.5', - '@storybook/react-dom-shim': '8.0.0-rc.5', - '@storybook/react-vite': '8.0.0-rc.5', - '@storybook/react-webpack5': '8.0.0-rc.5', - '@storybook/router': '8.0.0-rc.5', - '@storybook/server': '8.0.0-rc.5', - '@storybook/server-webpack5': '8.0.0-rc.5', - '@storybook/source-loader': '8.0.0-rc.5', - '@storybook/svelte': '8.0.0-rc.5', - '@storybook/svelte-vite': '8.0.0-rc.5', - '@storybook/svelte-webpack5': '8.0.0-rc.5', - '@storybook/sveltekit': '8.0.0-rc.5', - '@storybook/telemetry': '8.0.0-rc.5', - '@storybook/test': '8.0.0-rc.5', - '@storybook/theming': '8.0.0-rc.5', - '@storybook/types': '8.0.0-rc.5', - '@storybook/vue3': '8.0.0-rc.5', - '@storybook/vue3-vite': '8.0.0-rc.5', - '@storybook/vue3-webpack5': '8.0.0-rc.5', - '@storybook/web-components': '8.0.0-rc.5', - '@storybook/web-components-vite': '8.0.0-rc.5', - '@storybook/web-components-webpack5': '8.0.0-rc.5', - sb: '8.0.0-rc.5', - storybook: '8.0.0-rc.5', + '@storybook/addon-a11y': '8.1.0-alpha.0', + '@storybook/addon-actions': '8.1.0-alpha.0', + '@storybook/addon-backgrounds': '8.1.0-alpha.0', + '@storybook/addon-controls': '8.1.0-alpha.0', + '@storybook/addon-docs': '8.1.0-alpha.0', + '@storybook/addon-essentials': '8.1.0-alpha.0', + '@storybook/addon-highlight': '8.1.0-alpha.0', + '@storybook/addon-interactions': '8.1.0-alpha.0', + '@storybook/addon-jest': '8.1.0-alpha.0', + '@storybook/addon-links': '8.1.0-alpha.0', + '@storybook/addon-mdx-gfm': '8.1.0-alpha.0', + '@storybook/addon-measure': '8.1.0-alpha.0', + '@storybook/addon-onboarding': '8.1.0-alpha.0', + '@storybook/addon-outline': '8.1.0-alpha.0', + '@storybook/addon-storysource': '8.1.0-alpha.0', + '@storybook/addon-themes': '8.1.0-alpha.0', + '@storybook/addon-toolbars': '8.1.0-alpha.0', + '@storybook/addon-viewport': '8.1.0-alpha.0', + '@storybook/angular': '8.1.0-alpha.0', + '@storybook/blocks': '8.1.0-alpha.0', + '@storybook/builder-manager': '8.1.0-alpha.0', + '@storybook/builder-vite': '8.1.0-alpha.0', + '@storybook/builder-webpack5': '8.1.0-alpha.0', + '@storybook/channels': '8.1.0-alpha.0', + '@storybook/cli': '8.1.0-alpha.0', + '@storybook/client-logger': '8.1.0-alpha.0', + '@storybook/codemod': '8.1.0-alpha.0', + '@storybook/components': '8.1.0-alpha.0', + '@storybook/core-common': '8.1.0-alpha.0', + '@storybook/core-events': '8.1.0-alpha.0', + '@storybook/core-server': '8.1.0-alpha.0', + '@storybook/core-webpack': '8.1.0-alpha.0', + '@storybook/csf-plugin': '8.1.0-alpha.0', + '@storybook/csf-tools': '8.1.0-alpha.0', + '@storybook/docs-tools': '8.1.0-alpha.0', + '@storybook/ember': '8.1.0-alpha.0', + '@storybook/html': '8.1.0-alpha.0', + '@storybook/html-vite': '8.1.0-alpha.0', + '@storybook/html-webpack5': '8.1.0-alpha.0', + '@storybook/instrumenter': '8.1.0-alpha.0', + '@storybook/manager': '8.1.0-alpha.0', + '@storybook/manager-api': '8.1.0-alpha.0', + '@storybook/nextjs': '8.1.0-alpha.0', + '@storybook/node-logger': '8.1.0-alpha.0', + '@storybook/preact': '8.1.0-alpha.0', + '@storybook/preact-vite': '8.1.0-alpha.0', + '@storybook/preact-webpack5': '8.1.0-alpha.0', + '@storybook/preset-create-react-app': '8.1.0-alpha.0', + '@storybook/preset-html-webpack': '8.1.0-alpha.0', + '@storybook/preset-preact-webpack': '8.1.0-alpha.0', + '@storybook/preset-react-webpack': '8.1.0-alpha.0', + '@storybook/preset-server-webpack': '8.1.0-alpha.0', + '@storybook/preset-svelte-webpack': '8.1.0-alpha.0', + '@storybook/preset-vue3-webpack': '8.1.0-alpha.0', + '@storybook/preview': '8.1.0-alpha.0', + '@storybook/preview-api': '8.1.0-alpha.0', + '@storybook/react': '8.1.0-alpha.0', + '@storybook/react-dom-shim': '8.1.0-alpha.0', + '@storybook/react-vite': '8.1.0-alpha.0', + '@storybook/react-webpack5': '8.1.0-alpha.0', + '@storybook/router': '8.1.0-alpha.0', + '@storybook/server': '8.1.0-alpha.0', + '@storybook/server-webpack5': '8.1.0-alpha.0', + '@storybook/source-loader': '8.1.0-alpha.0', + '@storybook/svelte': '8.1.0-alpha.0', + '@storybook/svelte-vite': '8.1.0-alpha.0', + '@storybook/svelte-webpack5': '8.1.0-alpha.0', + '@storybook/sveltekit': '8.1.0-alpha.0', + '@storybook/telemetry': '8.1.0-alpha.0', + '@storybook/test': '8.1.0-alpha.0', + '@storybook/theming': '8.1.0-alpha.0', + '@storybook/types': '8.1.0-alpha.0', + '@storybook/vue3': '8.1.0-alpha.0', + '@storybook/vue3-vite': '8.1.0-alpha.0', + '@storybook/vue3-webpack5': '8.1.0-alpha.0', + '@storybook/web-components': '8.1.0-alpha.0', + '@storybook/web-components-vite': '8.1.0-alpha.0', + '@storybook/web-components-webpack5': '8.1.0-alpha.0', + sb: '8.1.0-alpha.0', + storybook: '8.1.0-alpha.0', }; diff --git a/code/lib/core-events/package.json b/code/lib/core-events/package.json index 0a06fbab9d30..2fda3e0eb626 100644 --- a/code/lib/core-events/package.json +++ b/code/lib/core-events/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-events", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Event names used in storybook core", "keywords": [ "storybook" diff --git a/code/lib/core-server/package.json b/code/lib/core-server/package.json index 11904f82e863..2b44e68b8a22 100644 --- a/code/lib/core-server/package.json +++ b/code/lib/core-server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-server", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/core-webpack/package.json b/code/lib/core-webpack/package.json index e2129ed58c9a..d1e6142601ea 100644 --- a/code/lib/core-webpack/package.json +++ b/code/lib/core-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-webpack", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/csf-plugin/package.json b/code/lib/csf-plugin/package.json index f275a090e8d6..1761eb435ae1 100644 --- a/code/lib/csf-plugin/package.json +++ b/code/lib/csf-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-plugin", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Enrich CSF files via static analysis", "keywords": [ "storybook" diff --git a/code/lib/csf-tools/package.json b/code/lib/csf-tools/package.json index bb9749cfff93..f8e58033aff3 100644 --- a/code/lib/csf-tools/package.json +++ b/code/lib/csf-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-tools", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Parse and manipulate CSF and Storybook config files", "keywords": [ "storybook" diff --git a/code/lib/docs-tools/package.json b/code/lib/docs-tools/package.json index 2863f4b50d55..8ecc609ee401 100644 --- a/code/lib/docs-tools/package.json +++ b/code/lib/docs-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/docs-tools", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Shared utility functions for frameworks to implement docs", "keywords": [ "storybook" diff --git a/code/lib/instrumenter/package.json b/code/lib/instrumenter/package.json index a15743e36be3..c411b7c9138c 100644 --- a/code/lib/instrumenter/package.json +++ b/code/lib/instrumenter/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/instrumenter", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/manager-api/package.json b/code/lib/manager-api/package.json index 3c5faf93d744..566511f21346 100644 --- a/code/lib/manager-api/package.json +++ b/code/lib/manager-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager-api", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Core Storybook Manager API & Context", "keywords": [ "storybook" diff --git a/code/lib/manager-api/src/version.ts b/code/lib/manager-api/src/version.ts index 7a52ddfe9b62..f89e3528d2df 100644 --- a/code/lib/manager-api/src/version.ts +++ b/code/lib/manager-api/src/version.ts @@ -1 +1 @@ -export const version = '8.0.0-rc.5'; +export const version = '8.1.0-alpha.0'; diff --git a/code/lib/node-logger/package.json b/code/lib/node-logger/package.json index d8a6f25ba21a..739cd0051874 100644 --- a/code/lib/node-logger/package.json +++ b/code/lib/node-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/node-logger", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/preview-api/package.json b/code/lib/preview-api/package.json index c040ca46a430..126be65d5e3a 100644 --- a/code/lib/preview-api/package.json +++ b/code/lib/preview-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview-api", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/preview/package.json b/code/lib/preview/package.json index ec8800525a3e..94821536bc4a 100644 --- a/code/lib/preview/package.json +++ b/code/lib/preview/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/react-dom-shim/package.json b/code/lib/react-dom-shim/package.json index 67db8a18ccc8..ab34b8084785 100644 --- a/code/lib/react-dom-shim/package.json +++ b/code/lib/react-dom-shim/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-dom-shim", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/router/package.json b/code/lib/router/package.json index 52934e8306b4..767d40a74d23 100644 --- a/code/lib/router/package.json +++ b/code/lib/router/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/router", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Core Storybook Router", "keywords": [ "storybook" diff --git a/code/lib/source-loader/package.json b/code/lib/source-loader/package.json index 14e5d3e46527..65ab30b64945 100644 --- a/code/lib/source-loader/package.json +++ b/code/lib/source-loader/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/source-loader", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Source loader", "keywords": [ "lib", diff --git a/code/lib/telemetry/package.json b/code/lib/telemetry/package.json index 67713dca4118..f1f12541c50f 100644 --- a/code/lib/telemetry/package.json +++ b/code/lib/telemetry/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/telemetry", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Telemetry logging for crash reports and usage statistics", "keywords": [ "storybook" diff --git a/code/lib/test/package.json b/code/lib/test/package.json index 237be906586f..6717a6912906 100644 --- a/code/lib/test/package.json +++ b/code/lib/test/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/test", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/theming/package.json b/code/lib/theming/package.json index 5d8f48150adf..1f65e8cb47b5 100644 --- a/code/lib/theming/package.json +++ b/code/lib/theming/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/theming", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Core Storybook Components", "keywords": [ "storybook" diff --git a/code/lib/types/package.json b/code/lib/types/package.json index aab80d40328c..7441040beb30 100644 --- a/code/lib/types/package.json +++ b/code/lib/types/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/types", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Core Storybook TS Types", "keywords": [ "storybook" diff --git a/code/package.json b/code/package.json index 61f01e1274f8..decb2ffe484c 100644 --- a/code/package.json +++ b/code/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/root", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "private": true, "description": "Storybook root", "homepage": "https://storybook.js.org/", diff --git a/code/presets/create-react-app/package.json b/code/presets/create-react-app/package.json index 55fcc6d076e8..c4205df2cd82 100644 --- a/code/presets/create-react-app/package.json +++ b/code/presets/create-react-app/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-create-react-app", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Create React App preset", "keywords": [ "storybook" diff --git a/code/presets/html-webpack/package.json b/code/presets/html-webpack/package.json index 2eb6a823eed7..006e4420c607 100644 --- a/code/presets/html-webpack/package.json +++ b/code/presets/html-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-html-webpack", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/preact-webpack/package.json b/code/presets/preact-webpack/package.json index 71606e160146..41117bd1edc6 100644 --- a/code/presets/preact-webpack/package.json +++ b/code/presets/preact-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-preact-webpack", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" diff --git a/code/presets/react-webpack/package.json b/code/presets/react-webpack/package.json index 7db8e8ec09d4..f047c7b46f4c 100644 --- a/code/presets/react-webpack/package.json +++ b/code/presets/react-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-react-webpack", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading", "keywords": [ "storybook" diff --git a/code/presets/server-webpack/package.json b/code/presets/server-webpack/package.json index a95582e8c8b9..baee5080f344 100644 --- a/code/presets/server-webpack/package.json +++ b/code/presets/server-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-server-webpack", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/svelte-webpack/package.json b/code/presets/svelte-webpack/package.json index c11c76aab89f..a15e5e084c25 100644 --- a/code/presets/svelte-webpack/package.json +++ b/code/presets/svelte-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-svelte-webpack", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/vue3-webpack/package.json b/code/presets/vue3-webpack/package.json index b424bf3ed483..c1f50f0d3365 100644 --- a/code/presets/vue3-webpack/package.json +++ b/code/presets/vue3-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-vue3-webpack", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/renderers/html/package.json b/code/renderers/html/package.json index 18b504618783..c7cefb70c642 100644 --- a/code/renderers/html/package.json +++ b/code/renderers/html/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook HTML renderer", "keywords": [ "storybook" diff --git a/code/renderers/preact/package.json b/code/renderers/preact/package.json index cd265a5f4285..fe1df6ad774b 100644 --- a/code/renderers/preact/package.json +++ b/code/renderers/preact/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook Preact renderer", "keywords": [ "storybook" diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json index 065ec55a4f44..6abc64587845 100644 --- a/code/renderers/react/package.json +++ b/code/renderers/react/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook React renderer", "keywords": [ "storybook" diff --git a/code/renderers/server/package.json b/code/renderers/server/package.json index 2d2b6b584266..2b0bf9a31e1f 100644 --- a/code/renderers/server/package.json +++ b/code/renderers/server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook Server renderer", "keywords": [ "storybook" diff --git a/code/renderers/svelte/package.json b/code/renderers/svelte/package.json index cedaffe33caa..d7084c890c0c 100644 --- a/code/renderers/svelte/package.json +++ b/code/renderers/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook Svelte renderer", "keywords": [ "storybook" diff --git a/code/renderers/vue3/package.json b/code/renderers/vue3/package.json index 09d205d83f9f..875b5742a5f8 100644 --- a/code/renderers/vue3/package.json +++ b/code/renderers/vue3/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook Vue 3 renderer", "keywords": [ "storybook" diff --git a/code/renderers/web-components/package.json b/code/renderers/web-components/package.json index 6866f00dd368..73fe293ad3e3 100644 --- a/code/renderers/web-components/package.json +++ b/code/renderers/web-components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook web-components renderer", "keywords": [ "lit", diff --git a/code/ui/blocks/package.json b/code/ui/blocks/package.json index dae557b18504..c32ad8074761 100644 --- a/code/ui/blocks/package.json +++ b/code/ui/blocks/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/blocks", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Storybook Doc Blocks", "keywords": [ "storybook" diff --git a/code/ui/components/package.json b/code/ui/components/package.json index cef804640bf3..0cb6cc2278d3 100644 --- a/code/ui/components/package.json +++ b/code/ui/components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/components", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Core Storybook Components", "keywords": [ "storybook" diff --git a/code/ui/manager/package.json b/code/ui/manager/package.json index e0c45acb051c..1c2507505030 100644 --- a/code/ui/manager/package.json +++ b/code/ui/manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager", - "version": "8.0.0-rc.5", + "version": "8.1.0-alpha.0", "description": "Core Storybook UI", "keywords": [ "storybook" From ec3f7ceab62868966fb6e553344149a9fbdfb229 Mon Sep 17 00:00:00 2001 From: storybook-bot <32066757+storybook-bot@users.noreply.github.com> Date: Mon, 11 Mar 2024 15:43:53 +0000 Subject: [PATCH 59/70] Update CHANGELOG.md for v8.0.0 [skip ci] --- CHANGELOG.md | 187 ++++++++++++++++++++++++++++----------------------- 1 file changed, 102 insertions(+), 85 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 649310bf1c11..6a1978abc0d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,20 @@ +## 8.0.0 + +#### Storybook 8.0 is here + +It brings major improvements to Storybook's feature set for testing and documentation, with strengthened framework support across React, Vue, Angular, web-components, Svelte, and more. + +- 🩻 Built-in visual testing +- ⚛️ React Server Component support +- 🎛️ Improved controls for React and Vue projects +- ⚡️ Improved Vite architecture, Vitest testing, and Vite 5 support +- 🧪 2-4x faster Storybooks for testing +- ✨ Refreshed desktop UI +- 📲 Rebuilt mobile UX +- 🙅‍♀️ No more React requirement in non-React projects + +Please checkout our [Migration Guide](https://storybook.js.org/docs/8.0/migration-guide) to upgrade from earlier versions of Storybook. To see a comprehensive list of changes that went into 8.0, you can refer to the [8.0 prerelease changelogs](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.prerelease.md). + ## 7.6.17 - Addon-docs: Fix Table of Contents heading leak - [#23677](https://github.com/storybookjs/storybook/pull/23677), thanks [@vmizg](https://github.com/vmizg)! @@ -105,91 +122,91 @@ Storybook 7.6 is here with increased performance and much more! List of all updates - - Actions: Attach spies on actions across stories when defined in meta - [#24451](https://github.com/storybookjs/storybook/pull/24451), thanks [@kasperpeulen](https://github.com/kasperpeulen)! - - Actions: Fix `@storybook/core-events/preview-errors` dependency missing for Yarn PnP - [#24973](https://github.com/storybookjs/storybook/pull/24973), thanks [@JReinhold](https://github.com/JReinhold)! - - Actions: Fix missing crypto module crashing React Native - [#24546](https://github.com/storybookjs/storybook/pull/24546), thanks [@dannyhw](https://github.com/dannyhw)! - - Actions: Warn on implicit actions - [#24856](https://github.com/storybookjs/storybook/pull/24856), thanks [@kasperpeulen](https://github.com/kasperpeulen)! - - Addon A11y: Avoid CSP issue - [#24477](https://github.com/storybookjs/storybook/pull/24477), thanks [@Marklb](https://github.com/Marklb)! - - Addon: Move Visual Test addon to the code directory - [#24771](https://github.com/storybookjs/storybook/pull/24771), thanks [@cdedreuille](https://github.com/cdedreuille)! - - Addons, core: Make `react` and Storybook packages `devDependencies` where possible - [#24676](https://github.com/storybookjs/storybook/pull/24676), thanks [@JReinhold](https://github.com/JReinhold)! - - Addons, core: Make `react` and Storybook packages `devDependencies` where possible - ATTEMPT 2 - [#24834](https://github.com/storybookjs/storybook/pull/24834), thanks [@JReinhold](https://github.com/JReinhold)! - - Angular: Add source-map option to builder - [#24466](https://github.com/storybookjs/storybook/pull/24466), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Angular: Handle nested module metadata - [#24798](https://github.com/storybookjs/storybook/pull/24798), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Angular: Include object configured styles - [#24768](https://github.com/storybookjs/storybook/pull/24768), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Babel: Update all @babel/* dependencies - [#24610](https://github.com/storybookjs/storybook/pull/24610), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - CLI: Add "doctor" command - [#22236](https://github.com/storybookjs/storybook/pull/22236), thanks [@yannbf](https://github.com/yannbf)! - - CLI: Add @storybook/addon-designs to non-core list - [#24507](https://github.com/storybookjs/storybook/pull/24507), thanks [@yannbf](https://github.com/yannbf)! - - CLI: Ensure errors with opening the browser are caught - [#24668](https://github.com/storybookjs/storybook/pull/24668), thanks [@xueyawei](https://github.com/xueyawei)! - - CLI: Ignore `addon-onboarding` when checking versions - [#24634](https://github.com/storybookjs/storybook/pull/24634), thanks [@JReinhold](https://github.com/JReinhold)! - - CLI: Use @storybook/test in template stories - [#24393](https://github.com/storybookjs/storybook/pull/24393), thanks [@yannbf](https://github.com/yannbf)! - - Controls: Improve accessibility of BooleanControl for screen readers - [#24418](https://github.com/storybookjs/storybook/pull/24418), thanks [@danielmarcano](https://github.com/danielmarcano)! - - Core-Server: Ignore all node_module folders for watchpack - [#24553](https://github.com/storybookjs/storybook/pull/24553), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Core: Add deprecation notice for Vite + CommonJS - [#23950](https://github.com/storybookjs/storybook/pull/23950), thanks [@JReinhold](https://github.com/JReinhold)! - - Core: Detect no matching export error in storybook start and build - [#24877](https://github.com/storybookjs/storybook/pull/24877), thanks [@yannbf](https://github.com/yannbf)! - - Core: Fix `useStoryPrepared` hook failing with `undefined` data - [#22631](https://github.com/storybookjs/storybook/pull/22631), thanks [@SpookyJelly](https://github.com/SpookyJelly)! - - Core: Fix pnp support when cache dir is outside working dir - [#24572](https://github.com/storybookjs/storybook/pull/24572), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Core: Fix post message channel location.search access for React Native - [#24545](https://github.com/storybookjs/storybook/pull/24545), thanks [@dannyhw](https://github.com/dannyhw)! - - Core: Gracefully handle error when parsing preview.js file - [#24858](https://github.com/storybookjs/storybook/pull/24858), thanks [@yannbf](https://github.com/yannbf)! - - Core: Make warnOnIncompatibleAddons fault-tolerant - [#24880](https://github.com/storybookjs/storybook/pull/24880), thanks [@taozhou-glean](https://github.com/taozhou-glean)! - - Dependencies: Fix Yarn 4 failing to install due to jscodeshift dependency issue - [#24914](https://github.com/storybookjs/storybook/pull/24914), thanks [@samvv](https://github.com/samvv)! - - Dependencies: Update @babel/traverse and @babel/core to fix vulnerability - [#24670](https://github.com/storybookjs/storybook/pull/24670), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Dependencies: Update browserify-sign transitive dependency - [#24674](https://github.com/storybookjs/storybook/pull/24674), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Dependencies: Update jscodeshift to v0.15.1 - [#24882](https://github.com/storybookjs/storybook/pull/24882), thanks [@epreston](https://github.com/epreston)! - - Dependencies: Update nx dependencies to v17 - [#24671](https://github.com/storybookjs/storybook/pull/24671), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Doc Blocks: Add support for `of` prop to `Primary` block - [#23849](https://github.com/storybookjs/storybook/pull/23849), thanks [@Wilson2k](https://github.com/Wilson2k)! - - Doc Blocks: Remove `defaultProps` in `Stories` block - [#24506](https://github.com/storybookjs/storybook/pull/24506), thanks [@WouterK12](https://github.com/WouterK12)! - - Docs: Changes corresponding to docs design updates - [#24925](https://github.com/storybookjs/storybook/pull/24925), thanks [@kylegach](https://github.com/kylegach)! - - Maintenance: Split renderers preview entrypoints - [#24623](https://github.com/storybookjs/storybook/pull/24623), thanks [@ndelangen](https://github.com/ndelangen)! - - Manager: Update `store.settings.lastTrackedStoryId` - [#24115](https://github.com/storybookjs/storybook/pull/24115), thanks [@rashidshamloo](https://github.com/rashidshamloo)! - - ManagerAPI: Fix setting status without index, crashes storybook - [#24866](https://github.com/storybookjs/storybook/pull/24866), thanks [@ndelangen](https://github.com/ndelangen)! - - ManagerBuilder: Fix `"type": "commonjs"` compatibility - [#24534](https://github.com/storybookjs/storybook/pull/24534), thanks [@ndelangen](https://github.com/ndelangen)! - - Next.js: Add avif support - [#24611](https://github.com/storybookjs/storybook/pull/24611), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Next.js: Add back image context CommonJS export - [#24885](https://github.com/storybookjs/storybook/pull/24885), thanks [@martinnabhan](https://github.com/martinnabhan)! - - Next.js: Add experimental SWC support - [#24852](https://github.com/storybookjs/storybook/pull/24852), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Next.js: Fix Fast Refresh config for SWC mode - [#24991](https://github.com/storybookjs/storybook/pull/24991), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Next.js: Fix forwarding ref for Image component - [#24648](https://github.com/storybookjs/storybook/pull/24648), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Next.js: Fix import path in swc loader - [#24922](https://github.com/storybookjs/storybook/pull/24922), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Next.js: Fix react-docgen usage with preset-env settings - [#24993](https://github.com/storybookjs/storybook/pull/24993), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Next.js: Remove duplicate Fast Refresh plugin init - [#24963](https://github.com/storybookjs/storybook/pull/24963), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - React: Upgrade `react-docgen` to v7 - [#24530](https://github.com/storybookjs/storybook/pull/24530), thanks [@shilman](https://github.com/shilman)! - - ReactNative: Fix missing assert dep in docs-tools - [#24732](https://github.com/storybookjs/storybook/pull/24732), thanks [@dannyhw](https://github.com/dannyhw)! - - Svelte: Fix decorators always running twice - [#24921](https://github.com/storybookjs/storybook/pull/24921), thanks [@paoloricciuti](https://github.com/paoloricciuti)! - - Svelte: Fix source with decorators always showing the `SlotDecorator` component - [#24800](https://github.com/storybookjs/storybook/pull/24800), thanks [@JReinhold](https://github.com/JReinhold)! - - SvelteKit: Add experimental page and navigation mocking - [#24795](https://github.com/storybookjs/storybook/pull/24795), thanks [@paoloricciuti](https://github.com/paoloricciuti)! - - SvelteKit: Default to log an action for `goto`, `invalidate` and `invalidateAll` - [#24955](https://github.com/storybookjs/storybook/pull/24955), thanks [@paoloricciuti](https://github.com/paoloricciuti)! - - SWC: Add settings for react and preact - [#24805](https://github.com/storybookjs/storybook/pull/24805), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Test Build: Add env-variable support to `--test` CLI-flag - [#24862](https://github.com/storybookjs/storybook/pull/24862), thanks [@ndelangen](https://github.com/ndelangen)! - - Test Build: Add tests and rename to camelCase - [#24911](https://github.com/storybookjs/storybook/pull/24911), thanks [@ndelangen](https://github.com/ndelangen)! - - Test Build: Disable composition when `--test` is `true` - [#24799](https://github.com/storybookjs/storybook/pull/24799), thanks [@ndelangen](https://github.com/ndelangen)! - - Test Build: Disable docs related stuff for test builds - [#24691](https://github.com/storybookjs/storybook/pull/24691), thanks [@ndelangen](https://github.com/ndelangen)! - - Test Build: Disable telemetry for test builds - [#24706](https://github.com/storybookjs/storybook/pull/24706), thanks [@kasperpeulen](https://github.com/kasperpeulen)! - - Test Build: Disable warnOnIncompatibleAddons - [#24797](https://github.com/storybookjs/storybook/pull/24797), thanks [@ndelangen](https://github.com/ndelangen)! - - Test Build: Filter out addon-docs from essentials in the test build - [#24994](https://github.com/storybookjs/storybook/pull/24994), thanks [@kasperpeulen](https://github.com/kasperpeulen)! - - Test Build: Fix disabledAddons filter - [#24924](https://github.com/storybookjs/storybook/pull/24924), thanks [@IanVS](https://github.com/IanVS)! - - Test Build: Fix indexer bug - [#24890](https://github.com/storybookjs/storybook/pull/24890), thanks [@ndelangen](https://github.com/ndelangen)! - - Test Build: Globalize `@storybook/blocks` if `build.test.emptyBlocks` is `true` - [#24650](https://github.com/storybookjs/storybook/pull/24650), thanks [@ndelangen](https://github.com/ndelangen)! - - Test Build: Implement builder options for test build - [#24826](https://github.com/storybookjs/storybook/pull/24826), thanks [@kasperpeulen](https://github.com/kasperpeulen)! - - Test Build: Improve config loading & naming - [#24837](https://github.com/storybookjs/storybook/pull/24837), thanks [@ndelangen](https://github.com/ndelangen)! - - Test Build: No sourcemaps for test builds - [#24804](https://github.com/storybookjs/storybook/pull/24804), thanks [@ndelangen](https://github.com/ndelangen)! - - Test Build: Revert defaulting to SWC in test build, but keep using esbuild for minification - [#24843](https://github.com/storybookjs/storybook/pull/24843), thanks [@kasperpeulen](https://github.com/kasperpeulen)! - - Test: Create @storybook/test package based on vitest - [#24392](https://github.com/storybookjs/storybook/pull/24392), thanks [@kasperpeulen](https://github.com/kasperpeulen)! - - Test: Don\'t attach action to function mock if action was added already - [#24966](https://github.com/storybookjs/storybook/pull/24966), thanks [@tmeasday](https://github.com/tmeasday)! - - Test: Model loaders as before each and restore mocks properly - [#24948](https://github.com/storybookjs/storybook/pull/24948), thanks [@kasperpeulen](https://github.com/kasperpeulen)! - - Theming: Add theme variable to set the preview background color - [#24575](https://github.com/storybookjs/storybook/pull/24575), thanks [@JReinhold](https://github.com/JReinhold)! - - Typescript: Add \'skipCompiler\' option to TypeScript presets - [#24847](https://github.com/storybookjs/storybook/pull/24847), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - UI: Fix horizontal scroll bar in Canvas hidden by styling - [#24408](https://github.com/storybookjs/storybook/pull/24408), thanks [@yoshi2no](https://github.com/yoshi2no)! - - UI: improve A11Y remove redundant styling rules, update icon color - [#24402](https://github.com/storybookjs/storybook/pull/24402), thanks [@tolkadot](https://github.com/tolkadot)! - - UI: Logo fixed value - [#24726](https://github.com/storybookjs/storybook/pull/24726), thanks [@black-arm](https://github.com/black-arm)! - - UI: Update zIndex on NotificationList to fix the notification not being clickable in certain cases - [#24602](https://github.com/storybookjs/storybook/pull/24602), thanks [@yoshi2no](https://github.com/yoshi2no)! - - Viewport: Add newer device viewports - [#24777](https://github.com/storybookjs/storybook/pull/24777), thanks [@Tomo5524](https://github.com/Tomo5524)! - - Vite: Prevent non-deterministic build output - [#24833](https://github.com/storybookjs/storybook/pull/24833), thanks [@henkerik](https://github.com/henkerik)! - - Webpack: Add export-order-loader and remove babel-plugin-named-exports-order - [#24749](https://github.com/storybookjs/storybook/pull/24749), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Webpack: Add react-docgen loader and remove babel-plugin-react-docgen - [#24762](https://github.com/storybookjs/storybook/pull/24762), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Webpack: Fix race condition for export-order loader - [#24817](https://github.com/storybookjs/storybook/pull/24817), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Webpack: Hide critical dependency warning - [#24784](https://github.com/storybookjs/storybook/pull/24784), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Webpack: Only load babel config when babel-loader is used - [#25002](https://github.com/storybookjs/storybook/pull/25002), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - - Webpack: Resolve circular dependency and fix HMR - [#24974](https://github.com/storybookjs/storybook/pull/24974), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! - +- Actions: Attach spies on actions across stories when defined in meta - [#24451](https://github.com/storybookjs/storybook/pull/24451), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Actions: Fix `@storybook/core-events/preview-errors` dependency missing for Yarn PnP - [#24973](https://github.com/storybookjs/storybook/pull/24973), thanks [@JReinhold](https://github.com/JReinhold)! +- Actions: Fix missing crypto module crashing React Native - [#24546](https://github.com/storybookjs/storybook/pull/24546), thanks [@dannyhw](https://github.com/dannyhw)! +- Actions: Warn on implicit actions - [#24856](https://github.com/storybookjs/storybook/pull/24856), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Addon A11y: Avoid CSP issue - [#24477](https://github.com/storybookjs/storybook/pull/24477), thanks [@Marklb](https://github.com/Marklb)! +- Addon: Move Visual Test addon to the code directory - [#24771](https://github.com/storybookjs/storybook/pull/24771), thanks [@cdedreuille](https://github.com/cdedreuille)! +- Addons, core: Make `react` and Storybook packages `devDependencies` where possible - [#24676](https://github.com/storybookjs/storybook/pull/24676), thanks [@JReinhold](https://github.com/JReinhold)! +- Addons, core: Make `react` and Storybook packages `devDependencies` where possible - ATTEMPT 2 - [#24834](https://github.com/storybookjs/storybook/pull/24834), thanks [@JReinhold](https://github.com/JReinhold)! +- Angular: Add source-map option to builder - [#24466](https://github.com/storybookjs/storybook/pull/24466), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Angular: Handle nested module metadata - [#24798](https://github.com/storybookjs/storybook/pull/24798), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Angular: Include object configured styles - [#24768](https://github.com/storybookjs/storybook/pull/24768), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Babel: Update all @babel/\* dependencies - [#24610](https://github.com/storybookjs/storybook/pull/24610), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- CLI: Add "doctor" command - [#22236](https://github.com/storybookjs/storybook/pull/22236), thanks [@yannbf](https://github.com/yannbf)! +- CLI: Add @storybook/addon-designs to non-core list - [#24507](https://github.com/storybookjs/storybook/pull/24507), thanks [@yannbf](https://github.com/yannbf)! +- CLI: Ensure errors with opening the browser are caught - [#24668](https://github.com/storybookjs/storybook/pull/24668), thanks [@xueyawei](https://github.com/xueyawei)! +- CLI: Ignore `addon-onboarding` when checking versions - [#24634](https://github.com/storybookjs/storybook/pull/24634), thanks [@JReinhold](https://github.com/JReinhold)! +- CLI: Use @storybook/test in template stories - [#24393](https://github.com/storybookjs/storybook/pull/24393), thanks [@yannbf](https://github.com/yannbf)! +- Controls: Improve accessibility of BooleanControl for screen readers - [#24418](https://github.com/storybookjs/storybook/pull/24418), thanks [@danielmarcano](https://github.com/danielmarcano)! +- Core-Server: Ignore all node_module folders for watchpack - [#24553](https://github.com/storybookjs/storybook/pull/24553), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Core: Add deprecation notice for Vite + CommonJS - [#23950](https://github.com/storybookjs/storybook/pull/23950), thanks [@JReinhold](https://github.com/JReinhold)! +- Core: Detect no matching export error in storybook start and build - [#24877](https://github.com/storybookjs/storybook/pull/24877), thanks [@yannbf](https://github.com/yannbf)! +- Core: Fix `useStoryPrepared` hook failing with `undefined` data - [#22631](https://github.com/storybookjs/storybook/pull/22631), thanks [@SpookyJelly](https://github.com/SpookyJelly)! +- Core: Fix pnp support when cache dir is outside working dir - [#24572](https://github.com/storybookjs/storybook/pull/24572), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Core: Fix post message channel location.search access for React Native - [#24545](https://github.com/storybookjs/storybook/pull/24545), thanks [@dannyhw](https://github.com/dannyhw)! +- Core: Gracefully handle error when parsing preview.js file - [#24858](https://github.com/storybookjs/storybook/pull/24858), thanks [@yannbf](https://github.com/yannbf)! +- Core: Make warnOnIncompatibleAddons fault-tolerant - [#24880](https://github.com/storybookjs/storybook/pull/24880), thanks [@taozhou-glean](https://github.com/taozhou-glean)! +- Dependencies: Fix Yarn 4 failing to install due to jscodeshift dependency issue - [#24914](https://github.com/storybookjs/storybook/pull/24914), thanks [@samvv](https://github.com/samvv)! +- Dependencies: Update @babel/traverse and @babel/core to fix vulnerability - [#24670](https://github.com/storybookjs/storybook/pull/24670), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Dependencies: Update browserify-sign transitive dependency - [#24674](https://github.com/storybookjs/storybook/pull/24674), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Dependencies: Update jscodeshift to v0.15.1 - [#24882](https://github.com/storybookjs/storybook/pull/24882), thanks [@epreston](https://github.com/epreston)! +- Dependencies: Update nx dependencies to v17 - [#24671](https://github.com/storybookjs/storybook/pull/24671), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Doc Blocks: Add support for `of` prop to `Primary` block - [#23849](https://github.com/storybookjs/storybook/pull/23849), thanks [@Wilson2k](https://github.com/Wilson2k)! +- Doc Blocks: Remove `defaultProps` in `Stories` block - [#24506](https://github.com/storybookjs/storybook/pull/24506), thanks [@WouterK12](https://github.com/WouterK12)! +- Docs: Changes corresponding to docs design updates - [#24925](https://github.com/storybookjs/storybook/pull/24925), thanks [@kylegach](https://github.com/kylegach)! +- Maintenance: Split renderers preview entrypoints - [#24623](https://github.com/storybookjs/storybook/pull/24623), thanks [@ndelangen](https://github.com/ndelangen)! +- Manager: Update `store.settings.lastTrackedStoryId` - [#24115](https://github.com/storybookjs/storybook/pull/24115), thanks [@rashidshamloo](https://github.com/rashidshamloo)! +- ManagerAPI: Fix setting status without index, crashes storybook - [#24866](https://github.com/storybookjs/storybook/pull/24866), thanks [@ndelangen](https://github.com/ndelangen)! +- ManagerBuilder: Fix `"type": "commonjs"` compatibility - [#24534](https://github.com/storybookjs/storybook/pull/24534), thanks [@ndelangen](https://github.com/ndelangen)! +- Next.js: Add avif support - [#24611](https://github.com/storybookjs/storybook/pull/24611), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Next.js: Add back image context CommonJS export - [#24885](https://github.com/storybookjs/storybook/pull/24885), thanks [@martinnabhan](https://github.com/martinnabhan)! +- Next.js: Add experimental SWC support - [#24852](https://github.com/storybookjs/storybook/pull/24852), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Next.js: Fix Fast Refresh config for SWC mode - [#24991](https://github.com/storybookjs/storybook/pull/24991), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Next.js: Fix forwarding ref for Image component - [#24648](https://github.com/storybookjs/storybook/pull/24648), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Next.js: Fix import path in swc loader - [#24922](https://github.com/storybookjs/storybook/pull/24922), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Next.js: Fix react-docgen usage with preset-env settings - [#24993](https://github.com/storybookjs/storybook/pull/24993), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Next.js: Remove duplicate Fast Refresh plugin init - [#24963](https://github.com/storybookjs/storybook/pull/24963), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- React: Upgrade `react-docgen` to v7 - [#24530](https://github.com/storybookjs/storybook/pull/24530), thanks [@shilman](https://github.com/shilman)! +- ReactNative: Fix missing assert dep in docs-tools - [#24732](https://github.com/storybookjs/storybook/pull/24732), thanks [@dannyhw](https://github.com/dannyhw)! +- Svelte: Fix decorators always running twice - [#24921](https://github.com/storybookjs/storybook/pull/24921), thanks [@paoloricciuti](https://github.com/paoloricciuti)! +- Svelte: Fix source with decorators always showing the `SlotDecorator` component - [#24800](https://github.com/storybookjs/storybook/pull/24800), thanks [@JReinhold](https://github.com/JReinhold)! +- SvelteKit: Add experimental page and navigation mocking - [#24795](https://github.com/storybookjs/storybook/pull/24795), thanks [@paoloricciuti](https://github.com/paoloricciuti)! +- SvelteKit: Default to log an action for `goto`, `invalidate` and `invalidateAll` - [#24955](https://github.com/storybookjs/storybook/pull/24955), thanks [@paoloricciuti](https://github.com/paoloricciuti)! +- SWC: Add settings for react and preact - [#24805](https://github.com/storybookjs/storybook/pull/24805), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Test Build: Add env-variable support to `--test` CLI-flag - [#24862](https://github.com/storybookjs/storybook/pull/24862), thanks [@ndelangen](https://github.com/ndelangen)! +- Test Build: Add tests and rename to camelCase - [#24911](https://github.com/storybookjs/storybook/pull/24911), thanks [@ndelangen](https://github.com/ndelangen)! +- Test Build: Disable composition when `--test` is `true` - [#24799](https://github.com/storybookjs/storybook/pull/24799), thanks [@ndelangen](https://github.com/ndelangen)! +- Test Build: Disable docs related stuff for test builds - [#24691](https://github.com/storybookjs/storybook/pull/24691), thanks [@ndelangen](https://github.com/ndelangen)! +- Test Build: Disable telemetry for test builds - [#24706](https://github.com/storybookjs/storybook/pull/24706), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Test Build: Disable warnOnIncompatibleAddons - [#24797](https://github.com/storybookjs/storybook/pull/24797), thanks [@ndelangen](https://github.com/ndelangen)! +- Test Build: Filter out addon-docs from essentials in the test build - [#24994](https://github.com/storybookjs/storybook/pull/24994), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Test Build: Fix disabledAddons filter - [#24924](https://github.com/storybookjs/storybook/pull/24924), thanks [@IanVS](https://github.com/IanVS)! +- Test Build: Fix indexer bug - [#24890](https://github.com/storybookjs/storybook/pull/24890), thanks [@ndelangen](https://github.com/ndelangen)! +- Test Build: Globalize `@storybook/blocks` if `build.test.emptyBlocks` is `true` - [#24650](https://github.com/storybookjs/storybook/pull/24650), thanks [@ndelangen](https://github.com/ndelangen)! +- Test Build: Implement builder options for test build - [#24826](https://github.com/storybookjs/storybook/pull/24826), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Test Build: Improve config loading & naming - [#24837](https://github.com/storybookjs/storybook/pull/24837), thanks [@ndelangen](https://github.com/ndelangen)! +- Test Build: No sourcemaps for test builds - [#24804](https://github.com/storybookjs/storybook/pull/24804), thanks [@ndelangen](https://github.com/ndelangen)! +- Test Build: Revert defaulting to SWC in test build, but keep using esbuild for minification - [#24843](https://github.com/storybookjs/storybook/pull/24843), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Test: Create @storybook/test package based on vitest - [#24392](https://github.com/storybookjs/storybook/pull/24392), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Test: Don\'t attach action to function mock if action was added already - [#24966](https://github.com/storybookjs/storybook/pull/24966), thanks [@tmeasday](https://github.com/tmeasday)! +- Test: Model loaders as before each and restore mocks properly - [#24948](https://github.com/storybookjs/storybook/pull/24948), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Theming: Add theme variable to set the preview background color - [#24575](https://github.com/storybookjs/storybook/pull/24575), thanks [@JReinhold](https://github.com/JReinhold)! +- Typescript: Add \'skipCompiler\' option to TypeScript presets - [#24847](https://github.com/storybookjs/storybook/pull/24847), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- UI: Fix horizontal scroll bar in Canvas hidden by styling - [#24408](https://github.com/storybookjs/storybook/pull/24408), thanks [@yoshi2no](https://github.com/yoshi2no)! +- UI: improve A11Y remove redundant styling rules, update icon color - [#24402](https://github.com/storybookjs/storybook/pull/24402), thanks [@tolkadot](https://github.com/tolkadot)! +- UI: Logo fixed value - [#24726](https://github.com/storybookjs/storybook/pull/24726), thanks [@black-arm](https://github.com/black-arm)! +- UI: Update zIndex on NotificationList to fix the notification not being clickable in certain cases - [#24602](https://github.com/storybookjs/storybook/pull/24602), thanks [@yoshi2no](https://github.com/yoshi2no)! +- Viewport: Add newer device viewports - [#24777](https://github.com/storybookjs/storybook/pull/24777), thanks [@Tomo5524](https://github.com/Tomo5524)! +- Vite: Prevent non-deterministic build output - [#24833](https://github.com/storybookjs/storybook/pull/24833), thanks [@henkerik](https://github.com/henkerik)! +- Webpack: Add export-order-loader and remove babel-plugin-named-exports-order - [#24749](https://github.com/storybookjs/storybook/pull/24749), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Webpack: Add react-docgen loader and remove babel-plugin-react-docgen - [#24762](https://github.com/storybookjs/storybook/pull/24762), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Webpack: Fix race condition for export-order loader - [#24817](https://github.com/storybookjs/storybook/pull/24817), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Webpack: Hide critical dependency warning - [#24784](https://github.com/storybookjs/storybook/pull/24784), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Webpack: Only load babel config when babel-loader is used - [#25002](https://github.com/storybookjs/storybook/pull/25002), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- Webpack: Resolve circular dependency and fix HMR - [#24974](https://github.com/storybookjs/storybook/pull/24974), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! + ## 7.5.2 From a0078b3ff467dc2acc5f6a79d45623eeb27840f5 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Mon, 11 Mar 2024 13:00:46 -0600 Subject: [PATCH 60/70] Merge pull request #26359 from storybookjs/framework-doc-svelte-webpack5 Docs: Add `svelte-webpack5` framework doc --- code/frameworks/svelte-webpack5/README.md | 33 +--- docs/get-started/svelte-webpack5.md | 183 ++++++++++++++++++ .../svelte-webpack5-add-framework.js.mdx | 7 + .../svelte-webpack5-add-framework.ts.mdx | 11 ++ .../svelte/svelte-webpack5-install.npm.js.mdx | 3 + .../svelte-webpack5-install.pnpm.js.mdx | 3 + .../svelte-webpack5-install.yarn.js.mdx | 3 + docs/toc.js | 5 + 8 files changed, 217 insertions(+), 31 deletions(-) create mode 100644 docs/get-started/svelte-webpack5.md create mode 100644 docs/snippets/svelte/svelte-webpack5-add-framework.js.mdx create mode 100644 docs/snippets/svelte/svelte-webpack5-add-framework.ts.mdx create mode 100644 docs/snippets/svelte/svelte-webpack5-install.npm.js.mdx create mode 100644 docs/snippets/svelte/svelte-webpack5-install.pnpm.js.mdx create mode 100644 docs/snippets/svelte/svelte-webpack5-install.yarn.js.mdx diff --git a/code/frameworks/svelte-webpack5/README.md b/code/frameworks/svelte-webpack5/README.md index d490ff6af11c..fa37e5b2e74b 100644 --- a/code/frameworks/svelte-webpack5/README.md +++ b/code/frameworks/svelte-webpack5/README.md @@ -1,32 +1,3 @@ -# Storybook for Svelte +# Storybook for Svelte & Webpack -Storybook for Svelte is a UI development environment for your Svelte components. -With it, you can visualize different states of your UI components and develop them interactively. - -![Storybook Screenshot](https://github.com/storybookjs/storybook/blob/main/media/storybook-intro.gif) - -Storybook runs outside of your app. -So you can develop UI components in isolation without worrying about app specific dependencies and requirements. - -## Getting Started - -```sh -cd my-svelte-app -npx storybook@latest init -``` - -For more information visit: [storybook.js.org](https://storybook.js.org) - ---- - -Storybook also comes with a lot of [addons](https://storybook.js.org/addons) and a great API to customize as you wish. -You can also build a [static version](https://storybook.js.org/docs/svelte/sharing/publish-storybook) of your Storybook and deploy it anywhere you want. - -## TODOs - -- Support `addon-info` -- Support Svelte markup directly in stories -- Add Svelte storybook generator -- Provide stories that show advanced Svelte use cases -- Hydratable -- Advanced mount options +See [documentation](https://storybook.js.org/docs/8.0/get-started/svelte-webpack5?renderer=svelte) for installation instructions, usage examples, APIs, and more. diff --git a/docs/get-started/svelte-webpack5.md b/docs/get-started/svelte-webpack5.md new file mode 100644 index 000000000000..a2676a3e1cec --- /dev/null +++ b/docs/get-started/svelte-webpack5.md @@ -0,0 +1,183 @@ +--- +title: Storybook for Svelte & Webpack +--- + +export const SUPPORTED_RENDERER = 'svelte'; + +Storybook for Svelte & Webpack is a [framework](../contribute/framework.md) that makes it easy to develop and test UI components in isolation for applications using [Svelte](https://svelte.dev/) built with [Webpack](https://webpack.js.org/). + + + + + +Storybook for Svelte & Webpack is only supported in [Svelte](?renderer=svelte) projects. + + + + + + + + + +## Requirements + +- Svelte ≥ 4.0 +- Webpack ≥ 5.0 +- Storybook ≥ 8.0 + +## Getting started + +### In a project without Storybook + +Follow the prompts after running this command in your Svelte project's root directory: + + + + + + + +[More on getting started with Storybook.](./install.md) + +### In a project with Storybook + +This framework is designed to work with Storybook 7+. If you’re not already using v7, upgrade with this command: + + + + + + + +#### Automatic migration + +When running the `upgrade` command above, you should get a prompt asking you to migrate to `@storybook/svelte-webpack5`, which should handle everything for you. In case that auto-migration does not work for your project, refer to the manual migration below. + +#### Manual migration + +First, install the framework: + + + + + + + +Next, install and register your appropriate compiler addon, depending on whether you're using SWC (recommended) or Babel: + + + + + + + +or + + + + + + + +More details can be found in the [Webpack builder docs](../builders/webpack.md#compiler-support). + +Finally, update your `.storybook/main.js|ts` to change the framework property: + + + + + + + +## Writing native Svelte stories + +Storybook provides a Svelte addon maintained by the community, enabling you to write stories for your Svelte components using the template syntax. You'll need to take some additional steps to enable this feature. + +Run the following command to install the addon. + + + + + + + + + +The community actively maintains the Svelte CSF addon but still lacks some features currently available in the official Storybook Svelte framework support. For more information, see [the addon's documentation](https://github.com/storybookjs/addon-svelte-csf). + + + +## API + +### Options + +You can pass an options object for additional configuration if needed: + +```js +// .storybook/main.js +import * as path from 'path'; + +export default { + // ... + framework: { + name: '@storybook/svelte-webpack5', + options: { + // ... + }, + }, +}; +``` + +The available options are: + +#### `builder` + +Type: `Record` + +Configure options for the [framework's builder](../api/main-config-framework.md#optionsbuilder). For this framework, available options can be found in the [Webpack builder docs](../builders/webpack.md). + + + + diff --git a/docs/snippets/svelte/svelte-webpack5-add-framework.js.mdx b/docs/snippets/svelte/svelte-webpack5-add-framework.js.mdx new file mode 100644 index 000000000000..de6a0bdc94f0 --- /dev/null +++ b/docs/snippets/svelte/svelte-webpack5-add-framework.js.mdx @@ -0,0 +1,7 @@ +```js +// .storybook/main.js +export default { + // ... + framework: '@storybook/svelte-webpack5', // 👈 Add this +}; +``` diff --git a/docs/snippets/svelte/svelte-webpack5-add-framework.ts.mdx b/docs/snippets/svelte/svelte-webpack5-add-framework.ts.mdx new file mode 100644 index 000000000000..e2c5a9e91c04 --- /dev/null +++ b/docs/snippets/svelte/svelte-webpack5-add-framework.ts.mdx @@ -0,0 +1,11 @@ +```ts +// .storybook/main.ts +import { StorybookConfig } from '@storybook/svelte-webpack5'; + +const config: StorybookConfig = { + // ... + framework: '@storybook/svelte-webpack5', // 👈 Add this +}; + +export default config; +``` diff --git a/docs/snippets/svelte/svelte-webpack5-install.npm.js.mdx b/docs/snippets/svelte/svelte-webpack5-install.npm.js.mdx new file mode 100644 index 000000000000..395d6086a967 --- /dev/null +++ b/docs/snippets/svelte/svelte-webpack5-install.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm install --save-dev @storybook/svelte-webpack5 +``` diff --git a/docs/snippets/svelte/svelte-webpack5-install.pnpm.js.mdx b/docs/snippets/svelte/svelte-webpack5-install.pnpm.js.mdx new file mode 100644 index 000000000000..34cd1d6fc725 --- /dev/null +++ b/docs/snippets/svelte/svelte-webpack5-install.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm install --save-dev @storybook/svelte-webpack5 +``` diff --git a/docs/snippets/svelte/svelte-webpack5-install.yarn.js.mdx b/docs/snippets/svelte/svelte-webpack5-install.yarn.js.mdx new file mode 100644 index 000000000000..0350df4376bf --- /dev/null +++ b/docs/snippets/svelte/svelte-webpack5-install.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn add --dev @storybook/svelte-webpack5 +``` diff --git a/docs/toc.js b/docs/toc.js index 5b660a93cce5..346ab3a255d8 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -48,6 +48,11 @@ module.exports = { title: 'Svelte & Vite', type: 'link', }, + { + pathSegment: 'svelte-webpack5', + title: 'Svelte & Webpack', + type: 'link', + }, { pathSegment: 'vue3-vite', title: 'Vue & Vite', From 44f737b1fba7344981bfa1f12b8888324d774ce8 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Mon, 11 Mar 2024 13:07:20 -0600 Subject: [PATCH 61/70] Merge pull request #26266 from storybookjs/framework-doc-vue3-webpack5 Docs: Add `vue3-webpack5` framework doc --- code/frameworks/vue3-webpack5/README.md | 43 +--- docs/get-started/vue3-vite.md | 4 +- docs/get-started/vue3-webpack5.md | 197 ++++++++++++++++++ .../vue/vue3-webpack5-add-framework.js.mdx | 7 + .../vue/vue3-webpack5-add-framework.ts.mdx | 11 + .../vue/vue3-webpack5-install.npm.js.mdx | 3 + .../vue/vue3-webpack5-install.pnpm.js.mdx | 3 + .../vue/vue3-webpack5-install.yarn.js.mdx | 3 + docs/toc.js | 5 + 9 files changed, 232 insertions(+), 44 deletions(-) create mode 100644 docs/get-started/vue3-webpack5.md create mode 100644 docs/snippets/vue/vue3-webpack5-add-framework.js.mdx create mode 100644 docs/snippets/vue/vue3-webpack5-add-framework.ts.mdx create mode 100644 docs/snippets/vue/vue3-webpack5-install.npm.js.mdx create mode 100644 docs/snippets/vue/vue3-webpack5-install.pnpm.js.mdx create mode 100644 docs/snippets/vue/vue3-webpack5-install.yarn.js.mdx diff --git a/code/frameworks/vue3-webpack5/README.md b/code/frameworks/vue3-webpack5/README.md index 2e365a8a7f8e..a4e696468d58 100644 --- a/code/frameworks/vue3-webpack5/README.md +++ b/code/frameworks/vue3-webpack5/README.md @@ -1,44 +1,3 @@ # Storybook for Vue 3 and Webpack -Storybook for Vue 3 is a UI development environment for your Vue 3 components. -With it, you can visualize different states of your UI components and develop them interactively. - -![Storybook Screenshot](https://github.com/storybookjs/storybook/blob/main/media/storybook-intro.gif) - -Storybook runs outside of your app. -So you can develop UI components in isolation without worrying about app specific dependencies and requirements. - -## Getting Started - -```sh -cd my-vue3-app -npx storybook@latest init -``` - -For more information visit: [storybook.js.org](https://storybook.js.org) - ---- - -Storybook also comes with a lot of [addons](https://storybook.js.org/addons) and a great API to customize as you wish. -You can also build a [static version](https://storybook.js.org/docs/sharing/publish-storybook) of your Storybook and deploy it anywhere you want. - -## Extending the Vue application - -Storybook creates a [Vue 3 application](https://vuejs.org/api/application.html#application-api) for your component preview. -When using global custom components (`app.component`), directives (`app.directive`), extensions (`app.use`), or other application methods, you will need to configure those in the `./storybook/preview.js` file. - -Therefore, Storybook provides you with a `setup` function exported from this package, which receives as a callback your Storybook instance, which you can interact with and add your custom configuration. - -```js -// .storybook/preview.js - -import { setup } from '@storybook/vue3'; - -setup((app) => { - app.use(MyPlugin); - app.component('my-component', MyComponent); - app.mixin({ - /* My mixin */ - }); -}); -``` +See [documentation](https://storybook.js.org/docs/8.0/get-started/vue3-webpack5?renderer=vue) for installation instructions, usage examples, APIs, and more. \ No newline at end of file diff --git a/docs/get-started/vue3-vite.md b/docs/get-started/vue3-vite.md index e79cc1f3b6fc..776281caf29b 100644 --- a/docs/get-started/vue3-vite.md +++ b/docs/get-started/vue3-vite.md @@ -28,8 +28,8 @@ Storybook for Vue & Vite is only supported in [Vue](?renderer=vue) projects. ## Requirements - Vue ≥ 3 -- Vite ≥ 3.0 (4.X recommended) -- Storybook ≥ 7.0 +- Vite ≥ 4.0 +- Storybook ≥ 8.0 ## Getting started diff --git a/docs/get-started/vue3-webpack5.md b/docs/get-started/vue3-webpack5.md new file mode 100644 index 000000000000..283ba4fbe2d3 --- /dev/null +++ b/docs/get-started/vue3-webpack5.md @@ -0,0 +1,197 @@ +--- +title: Storybook for Vue & Webpack +--- + +export const SUPPORTED_RENDERER = 'vue'; + +Storybook for Vue & Webpack is a [framework](../contribute/framework.md) that makes it easy to develop and test UI components in isolation for [Vue](https://vuejs.org/) applications built with [Webpack](https://webpack.js.org/). + + + + + +Storybook for Vue & Webpack is only supported in [Vue](?renderer=vue) projects. + + + + + + + + + +## Requirements + +- Vue ≥ 3.0 +- Webpack ≥ 5.0 +- Storybook ≥ 8.0 + +## Getting started + +### In a project without Storybook + +Follow the prompts after running this command in your Vue project's root directory: + + + + + + + +[More on getting started with Storybook.](./install.md) + +### In a project with Storybook + +This framework is designed to work with Storybook 7+. If you’re not already using v7, upgrade with this command: + + + + + + + +#### Automatic migration + +When running the `upgrade` command above, you should get a prompt asking you to migrate to `@storybook/vue3-webpack5`, which should handle everything for you. In case that auto-migration does not work for your project, refer to the manual migration below. + +#### Manual migration + +First, install the framework: + + + + + + + +Next, install and register your appropriate compiler addon, depending on whether you're using SWC (recommended) or Babel: + + + + + + + +or + + + + + + + +More details can be found in the [Webpack builder docs](../builders/webpack.md#compiler-support). + +Finally, update your `.storybook/main.js|ts` to change the framework property: + + + + + + + +## Extending the Vue application + +Storybook creates a [Vue 3 application](https://vuejs.org/api/application.html#application-api) for your component preview. +When using global custom components (`app.component`), directives (`app.directive`), extensions (`app.use`), or other application methods, you will need to configure those in the `./storybook/preview.js` file. + +Therefore, Storybook provides you with a `setup` function exported from this package, which receives as a callback your Storybook instance, which you can interact with and add your custom configuration. + +```js +// .storybook/preview.js + +import { setup } from '@storybook/vue3'; + +setup((app) => { + app.use(MyPlugin); + app.component('my-component', MyComponent); + app.mixin({ + /* My mixin */ + }); +}); +``` + +## Troubleshooting + +### Storybook doesn't work with my Vue 2 project + +[Vue 2 entered End of Life](https://v2.vuejs.org/lts/) (EOL) on December 31st, 2023, and is no longer maintained by the Vue team. As a result, Storybook no longer supports Vue 2. We recommend you upgrade your project to Vue 3, which Storybook fully supports. If that's not an option, you can still use Storybook with Vue 2 by installing the latest version of Storybook 7 with the following command: + + + + + + + +## API + +### Options + +You can pass an options object for additional configuration if needed: + +```ts +// .storybook/main.ts +import type { StorybookConfig } from '@storybook/vue-webpack5'; + +const config: StorybookConfig = { + framework: { + name: '@storybook/vue-webpack5', + options: { + // ... + }, + }, +}; + +export default config; +``` + +#### `builder` + +Type: `Record` + +Configure options for the [framework's builder](../api/main-config-framework.md#optionsbuilder). For this framework, available options can be found in the [Webpack builder docs](../builders/webpack.md). + + + + diff --git a/docs/snippets/vue/vue3-webpack5-add-framework.js.mdx b/docs/snippets/vue/vue3-webpack5-add-framework.js.mdx new file mode 100644 index 000000000000..c5b6324a748e --- /dev/null +++ b/docs/snippets/vue/vue3-webpack5-add-framework.js.mdx @@ -0,0 +1,7 @@ +```js +// .storybook/main.js +export default { + // ... + framework: '@storybook/vue3-webpack5', // 👈 Add this +}; +``` diff --git a/docs/snippets/vue/vue3-webpack5-add-framework.ts.mdx b/docs/snippets/vue/vue3-webpack5-add-framework.ts.mdx new file mode 100644 index 000000000000..d83650ea1e35 --- /dev/null +++ b/docs/snippets/vue/vue3-webpack5-add-framework.ts.mdx @@ -0,0 +1,11 @@ +```ts +// .storybook/main.ts +import { StorybookConfig } from '@storybook/vue3-webpack5'; + +const config: StorybookConfig = { + // ... + framework: '@storybook/vue3-webpack5', // 👈 Add this +}; + +export default config; +``` diff --git a/docs/snippets/vue/vue3-webpack5-install.npm.js.mdx b/docs/snippets/vue/vue3-webpack5-install.npm.js.mdx new file mode 100644 index 000000000000..55a7bc78bd80 --- /dev/null +++ b/docs/snippets/vue/vue3-webpack5-install.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm install --save-dev @storybook/vue3-webpack5 +``` diff --git a/docs/snippets/vue/vue3-webpack5-install.pnpm.js.mdx b/docs/snippets/vue/vue3-webpack5-install.pnpm.js.mdx new file mode 100644 index 000000000000..24ce6105b49e --- /dev/null +++ b/docs/snippets/vue/vue3-webpack5-install.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm install --save-dev @storybook/vue3-webpack5 +``` diff --git a/docs/snippets/vue/vue3-webpack5-install.yarn.js.mdx b/docs/snippets/vue/vue3-webpack5-install.yarn.js.mdx new file mode 100644 index 000000000000..e811a7ae3025 --- /dev/null +++ b/docs/snippets/vue/vue3-webpack5-install.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn add --dev @storybook/vue3-webpack5 +``` diff --git a/docs/toc.js b/docs/toc.js index 346ab3a255d8..f8d36d34fcad 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -58,6 +58,11 @@ module.exports = { title: 'Vue & Vite', type: 'link', }, + { + pathSegment: 'vue3-webpack5', + title: 'Vue & Webpack', + type: 'link', + }, ], }, { From 589119891a70f4129daa00b709713bcefd4407d7 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Mon, 11 Mar 2024 13:11:28 -0600 Subject: [PATCH 62/70] Merge pull request #26331 from storybookjs/framework-doc-web-components-vite Docs: Add `web-components-vite` framework doc --- code/frameworks/web-components-vite/README.md | 4 +- docs/get-started/web-components-vite.md | 128 ++++++++++++++++++ .../web-components-vite-add-framework.js.mdx | 7 + .../web-components-vite-add-framework.ts.mdx | 11 ++ .../web-components-vite-install.npm.js.mdx | 3 + .../web-components-vite-install.pnpm.js.mdx | 3 + .../web-components-vite-install.yarn.js.mdx | 3 + docs/toc.js | 5 + 8 files changed, 163 insertions(+), 1 deletion(-) create mode 100644 docs/get-started/web-components-vite.md create mode 100644 docs/snippets/web-components/web-components-vite-add-framework.js.mdx create mode 100644 docs/snippets/web-components/web-components-vite-add-framework.ts.mdx create mode 100644 docs/snippets/web-components/web-components-vite-install.npm.js.mdx create mode 100644 docs/snippets/web-components/web-components-vite-install.pnpm.js.mdx create mode 100644 docs/snippets/web-components/web-components-vite-install.yarn.js.mdx diff --git a/code/frameworks/web-components-vite/README.md b/code/frameworks/web-components-vite/README.md index 9c68eca98041..af1a9ffaa853 100644 --- a/code/frameworks/web-components-vite/README.md +++ b/code/frameworks/web-components-vite/README.md @@ -1 +1,3 @@ -# Storybook for Web components +# Storybook for Web components & Vite + +See [documentation](https://storybook.js.org/docs/8.0/get-started/web-components-vite?renderer=web-components) for installation instructions, usage examples, APIs, and more. diff --git a/docs/get-started/web-components-vite.md b/docs/get-started/web-components-vite.md new file mode 100644 index 000000000000..e6099d32e99a --- /dev/null +++ b/docs/get-started/web-components-vite.md @@ -0,0 +1,128 @@ +--- +title: Storybook for Web components & Vite +--- + +export const SUPPORTED_RENDERER = 'web-components'; + +Storybook for Web components & Vite is a [framework](../contribute/framework.md) that makes it easy to develop and test UI components in isolation for applications using [Web components](https://www.webcomponents.org/introduction) built with [Vite](https://vitejs.dev/). + + + + + +Storybook for Web components & Vite is only supported in [Web components](?renderer=web-components) projects. + + + + + + + + + +## Requirements + +- Vite ≥ 4.0 +- Storybook ≥ 8.0 + +## Getting started + +### In a project without Storybook + +Follow the prompts after running this command in your Web components project's root directory: + + + + + + + +[More on getting started with Storybook.](./install.md) + +### In a project with Storybook + +This framework is designed to work with Storybook 7+. If you’re not already using v7, upgrade with this command: + + + + + + + +#### Automatic migration + +When running the `upgrade` command above, you should get a prompt asking you to migrate to `@storybook/web-components-vite`, which should handle everything for you. In case that auto-migration does not work for your project, refer to the manual migration below. + +#### Manual migration + +First, install the framework: + + + + + + + +Then, update your `.storybook/main.js|ts` to change the framework property: + + + + + + + +## API + +### Options + +You can pass an options object for additional configuration if needed: + +```js +// .storybook/main.js +import * as path from 'path'; + +export default { + // ... + framework: { + name: '@storybook/web-components-vite', + options: { + // ... + }, + }, +}; +``` + +The available options are: + +#### `builder` + +Type: `Record` + +Configure options for the [framework's builder](../api/main-config-framework.md#optionsbuilder). For this framework, available options can be found in the [Vite builder docs](../builders/vite.md). + + + + diff --git a/docs/snippets/web-components/web-components-vite-add-framework.js.mdx b/docs/snippets/web-components/web-components-vite-add-framework.js.mdx new file mode 100644 index 000000000000..25c7d8e1b51b --- /dev/null +++ b/docs/snippets/web-components/web-components-vite-add-framework.js.mdx @@ -0,0 +1,7 @@ +```js +// .storybook/main.js +export default { + // ... + framework: '@storybook/web-components-vite', // 👈 Add this +}; +``` diff --git a/docs/snippets/web-components/web-components-vite-add-framework.ts.mdx b/docs/snippets/web-components/web-components-vite-add-framework.ts.mdx new file mode 100644 index 000000000000..c4eee76aeb56 --- /dev/null +++ b/docs/snippets/web-components/web-components-vite-add-framework.ts.mdx @@ -0,0 +1,11 @@ +```ts +// .storybook/main.ts +import { StorybookConfig } from '@storybook/web-components-vite'; + +const config: StorybookConfig = { + // ... + framework: '@storybook/web-components-vite', // 👈 Add this +}; + +export default config; +``` diff --git a/docs/snippets/web-components/web-components-vite-install.npm.js.mdx b/docs/snippets/web-components/web-components-vite-install.npm.js.mdx new file mode 100644 index 000000000000..4472f27ea2a2 --- /dev/null +++ b/docs/snippets/web-components/web-components-vite-install.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm install --save-dev @storybook/web-components-vite +``` diff --git a/docs/snippets/web-components/web-components-vite-install.pnpm.js.mdx b/docs/snippets/web-components/web-components-vite-install.pnpm.js.mdx new file mode 100644 index 000000000000..c2fa67cea100 --- /dev/null +++ b/docs/snippets/web-components/web-components-vite-install.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm install --save-dev @storybook/web-components-vite +``` diff --git a/docs/snippets/web-components/web-components-vite-install.yarn.js.mdx b/docs/snippets/web-components/web-components-vite-install.yarn.js.mdx new file mode 100644 index 000000000000..895cf072d24a --- /dev/null +++ b/docs/snippets/web-components/web-components-vite-install.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn add --dev @storybook/web-components-vite +``` diff --git a/docs/toc.js b/docs/toc.js index f8d36d34fcad..4d6cbd3d1460 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -63,6 +63,11 @@ module.exports = { title: 'Vue & Webpack', type: 'link', }, + { + pathSegment: 'web-components-vite', + title: 'Web components & Vite', + type: 'link', + }, ], }, { From a77dfbeeb7636a255c3ff43606eb3e70199e4450 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Mon, 11 Mar 2024 13:15:41 -0600 Subject: [PATCH 63/70] Merge pull request #26333 from storybookjs/framework-doc-web-components-webpack5 Docs: Add `web-components-webpack5` framework doc --- .../web-components-webpack5/README.md | 72 +----- docs/get-started/web-components-webpack5.md | 215 ++++++++++++++++++ ...b-components-webpack5-add-framework.js.mdx | 8 + ...b-components-webpack5-add-framework.ts.mdx | 11 + ...web-components-webpack5-install.npm.js.mdx | 3 + ...eb-components-webpack5-install.pnpm.js.mdx | 3 + ...eb-components-webpack5-install.yarn.js.mdx | 3 + docs/toc.js | 5 + 8 files changed, 250 insertions(+), 70 deletions(-) create mode 100644 docs/get-started/web-components-webpack5.md create mode 100644 docs/snippets/web-components/web-components-webpack5-add-framework.js.mdx create mode 100644 docs/snippets/web-components/web-components-webpack5-add-framework.ts.mdx create mode 100644 docs/snippets/web-components/web-components-webpack5-install.npm.js.mdx create mode 100644 docs/snippets/web-components/web-components-webpack5-install.pnpm.js.mdx create mode 100644 docs/snippets/web-components/web-components-webpack5-install.yarn.js.mdx diff --git a/code/frameworks/web-components-webpack5/README.md b/code/frameworks/web-components-webpack5/README.md index 4562b5dc35ee..d9ee9b9fd385 100644 --- a/code/frameworks/web-components-webpack5/README.md +++ b/code/frameworks/web-components-webpack5/README.md @@ -1,71 +1,3 @@ -# Storybook for web-components +# Storybook for Web components & Webpack ---- - -Storybook for web-components is a UI development environment for your plain web-component snippets. -With it, you can visualize different states of your UI components and develop them interactively. - -![Storybook Screenshot](https://github.com/storybookjs/storybook/blob/main/media/storybook-intro.gif) - -Storybook runs outside of your app. -So you can develop UI components in isolation without worrying about app specific dependencies and requirements. - -## Getting Started - -```sh -cd my-app -npx storybook@latest init -t web_components -``` - -For more information visit: [storybook.js.org](https://storybook.js.org) - ---- - -Storybook also comes with a lot of [addons](https://storybook.js.org/addons) and a great API to customize as you wish. -You can also build a [static version](https://storybook.js.org/docs/web-components/sharing/publish-storybook) of your storybook and deploy it anywhere you want. - -# Hot Module Reloading (HMR) - -As web components register on a global registry which only accepts a certain name/class once it can lead to errors when using classical HMR. There are ideas on how to archive HMR with a static registry but there is no proven solution yet. Therefore the best approach for now is to do full page reloads. If you keep your stories to specific states of components (which we would recommend anyways) this usually means it is fast. - -# Setup es6/7 dependencies - -By default storybook only works with precompiled ES5 code but as most web components themselves and their libs are distributed as ES2017 you will need to manually mark those packages as "needs transpilation". - -For example if you have a library called `my-library` which is in ES2017 then you can add it like so - -```js -// .storybook/main.js - -export default { - webpackFinal: async (config) => { - // find web-components rule for extra transpilation - const webComponentsRule = config.module.rules.find( - (rule) => rule.use && rule.use.options && rule.use.options.babelrc === false - ); - // add your own `my-library` - webComponentsRule.test.push(new RegExp(`node_modules(\\/|\\\\)my-library(.*)\\.js$`)); - - return config; - }, -}; -``` - -By default the following folders are included - -- `src/*.js` -- `packages/*/src/*.js` -- `node_modules/lit-html/*.js` -- `node_modules/lit-element/*.js` -- `node_modules/@open-wc/*.js` -- `node_modules/@polymer/*.js` -- `node_modules/@vaadin/*.js` - -As you can see the `src` folder is also included. -The reason for that is as it has some extra configuration to allow for example `import.meta`. -If you use a different folder you will need to make sure webpack/babel can handle it. - -# FAQ - -- While working on my component I get the error `Failed to execute 'define' on 'CustomElementRegistry': the name "..." has already been used with this registry` - => please see Setup page reload via HMR +See [documentation](https://storybook.js.org/docs/8.0/get-started/web-components-webpack5?renderer=web-components) for installation instructions, usage examples, APIs, and more. diff --git a/docs/get-started/web-components-webpack5.md b/docs/get-started/web-components-webpack5.md new file mode 100644 index 000000000000..03e2205ccb20 --- /dev/null +++ b/docs/get-started/web-components-webpack5.md @@ -0,0 +1,215 @@ +--- +title: Storybook for Web components & Webpack +--- + +export const SUPPORTED_RENDERER = 'web-components'; + +Storybook for Web components & Webpack is a [framework](../contribute/framework.md) that makes it easy to develop and test UI components in isolation for applications using [Web components](https://www.webcomponents.org/introduction) built with [Webpack](https://webpack.js.org/). + + + + + +Storybook for Web components & Webpack is only supported in [Web components](?renderer=web-components) projects. + + + + + + + + + +## Requirements + +- Webpack ≥ 5.0 +- Storybook ≥ 8.0 + +## Getting started + +### In a project without Storybook + +Follow the prompts after running this command in your Web components project's root directory: + + + + + + + +[More on getting started with Storybook.](./install.md) + +### In a project with Storybook + +This framework is designed to work with Storybook 7+. If you’re not already using v7, upgrade with this command: + + + + + + + +#### Automatic migration + +When running the `upgrade` command above, you should get a prompt asking you to migrate to `@storybook/web-components-webpack5`, which should handle everything for you. In case that auto-migration does not work for your project, refer to the manual migration below. + +#### Manual migration + +First, install the framework: + + + + + + + +Next, install and register your appropriate compiler addon, depending on whether you're using SWC (recommended) or Babel: + + + + + + + +or + + + + + + + +More details can be found in the [Webpack builder docs](../builders/webpack.md#compiler-support). + +Finally, update your `.storybook/main.js|ts` to change the framework property: + + + + + + + +## Hot Module Reloading (HMR) + +Web components are registered on global registry, which only accepts a given name/class once. That can lead to errors when using classical HMR. While there are ideas on how to achieve HMR with a static registry, there is no proven solution yet. Therefore, the best approach for now is to do full page reloads while developing. You can ensure those page reloads happen quickly by defining your stories as specific states of components (which we would recommend regardless). + +## Set up es6/7 dependencies + +By default, Storybook only works with precompiled ES5 code. Because most web components themselves and their libs are distributed as ES2017, you will need to manually mark those packages as "needs transpilation". + +For example, if you have a library called `my-library` which is in ES2017, then you can configure your project like so: + +```js +// .storybook/main.js + +export default { + webpackFinal: async (config) => { + // Find web-components rule for extra transpilation + const webComponentsRule = config.module.rules.find( + (rule) => rule.use && rule.use.options && rule.use.options.babelrc === false + ); + // Add your own `my-library` + webComponentsRule.test.push(new RegExp(`node_modules(\\/|\\\\)my-library(.*)\\.js$`)); + + return config; + }, +}; +``` + +By default, the following folders are transpiled: + +- `src/*.js` +- `packages/*/src/*.js` +- `node_modules/lit-html/*.js` +- `node_modules/lit-element/*.js` +- `node_modules/@open-wc/*.js` +- `node_modules/@polymer/*.js` +- `node_modules/@vaadin/*.js` + + + +Note that the `src` folder is also included. This provides some extra configuration to allow for `import.meta` and some other features. + +If you use a folder for your components/stories other than `src`, you will need to use the configuration example above to have it properly transpiled. + + + +## API + +### Options + +You can pass an options object for additional configuration if needed: + +```js +// .storybook/main.js +import * as path from 'path'; + +export default { + // ... + framework: { + name: '@storybook/web-components-webpack5', + options: { + // ... + }, + }, +}; +``` + +The available options are: + +#### `builder` + +Type: `Record` + +Configure options for the [framework's builder](../api/main-config-framework.md#optionsbuilder). For this framework, available options can be found in the [Webpack builder docs](../builders/webpack.md). + +## Troubleshooting + +### Error while developing with HMR + +While developing a component, you might encounter this error: + +```sh +Failed to execute 'define' on 'CustomElementRegistry': the name "..." has already been used with this registry +``` + +This error occurs because the component is already registered in the global registry. See the [limitations of HMR with web components](#hot-module-reloading-hmr) for more information. + + + + diff --git a/docs/snippets/web-components/web-components-webpack5-add-framework.js.mdx b/docs/snippets/web-components/web-components-webpack5-add-framework.js.mdx new file mode 100644 index 000000000000..620630a1322a --- /dev/null +++ b/docs/snippets/web-components/web-components-webpack5-add-framework.js.mdx @@ -0,0 +1,8 @@ +```js +// .storybook/main.js +export default { + // ... + // framework: '@storybook/react-webpack5', 👈 Remove this + framework: '@storybook/nextjs', // 👈 Add this +}; +``` diff --git a/docs/snippets/web-components/web-components-webpack5-add-framework.ts.mdx b/docs/snippets/web-components/web-components-webpack5-add-framework.ts.mdx new file mode 100644 index 000000000000..8ec81b767573 --- /dev/null +++ b/docs/snippets/web-components/web-components-webpack5-add-framework.ts.mdx @@ -0,0 +1,11 @@ +```ts +// .storybook/main.ts +import { StorybookConfig } from '@storybook/web-components-webpack5'; + +const config: StorybookConfig = { + // ... + framework: '@storybook/web-components-webpack5', // 👈 Add this +}; + +export default config; +``` diff --git a/docs/snippets/web-components/web-components-webpack5-install.npm.js.mdx b/docs/snippets/web-components/web-components-webpack5-install.npm.js.mdx new file mode 100644 index 000000000000..cb74724ce972 --- /dev/null +++ b/docs/snippets/web-components/web-components-webpack5-install.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm install --save-dev @storybook/web-components-webpack5 +``` diff --git a/docs/snippets/web-components/web-components-webpack5-install.pnpm.js.mdx b/docs/snippets/web-components/web-components-webpack5-install.pnpm.js.mdx new file mode 100644 index 000000000000..91bf902cac48 --- /dev/null +++ b/docs/snippets/web-components/web-components-webpack5-install.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm install --save-dev @storybook/web-components-webpack5 +``` diff --git a/docs/snippets/web-components/web-components-webpack5-install.yarn.js.mdx b/docs/snippets/web-components/web-components-webpack5-install.yarn.js.mdx new file mode 100644 index 000000000000..561008e42cd4 --- /dev/null +++ b/docs/snippets/web-components/web-components-webpack5-install.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn add --dev @storybook/web-components-webpack5 +``` diff --git a/docs/toc.js b/docs/toc.js index 4d6cbd3d1460..13ad27311806 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -68,6 +68,11 @@ module.exports = { title: 'Web components & Vite', type: 'link', }, + { + pathSegment: 'web-components-webpack5', + title: 'Web components & Webpack', + type: 'link', + }, ], }, { From c5cf84f6a1e9b39e358a6ac8a043c76f8d8f0487 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Mon, 11 Mar 2024 14:02:35 -0600 Subject: [PATCH 64/70] Merge pull request #26329 from storybookjs/framework-doc-sveltekit Docs: Add `sveltekit` framework doc --- code/frameworks/sveltekit/README.md | 188 +--------- docs/get-started/sveltekit.md | 342 ++++++++++++++++++ .../svelte/sveltekit-add-framework.js.mdx | 8 + .../svelte/sveltekit-add-framework.ts.mdx | 12 + .../svelte/sveltekit-install.npm.js.mdx | 3 + .../svelte/sveltekit-install.pnpm.js.mdx | 3 + .../svelte/sveltekit-install.yarn.js.mdx | 3 + docs/toc.js | 5 + 8 files changed, 378 insertions(+), 186 deletions(-) create mode 100644 docs/get-started/sveltekit.md create mode 100644 docs/snippets/svelte/sveltekit-add-framework.js.mdx create mode 100644 docs/snippets/svelte/sveltekit-add-framework.ts.mdx create mode 100644 docs/snippets/svelte/sveltekit-install.npm.js.mdx create mode 100644 docs/snippets/svelte/sveltekit-install.pnpm.js.mdx create mode 100644 docs/snippets/svelte/sveltekit-install.yarn.js.mdx diff --git a/code/frameworks/sveltekit/README.md b/code/frameworks/sveltekit/README.md index 0243fde57b23..8bb8789a879d 100644 --- a/code/frameworks/sveltekit/README.md +++ b/code/frameworks/sveltekit/README.md @@ -1,190 +1,6 @@ -# Storybook for SvelteKit +# Storybook for SvelteKit -Our goal is to help you use the tools you love together with Storybook. That’s why Storybook has zero-config support for SvelteKit with the `@storybook/sveltekit` package. - -Check out our [Frameworks API](https://storybook.js.org/blog/framework-api/) announcement for what this all means for you and our continued efforts to make Storybook a seamless integration for any project. - -## Table of Contents - -- [Supported features](#supported-features) -- [Requirements](#requirements) -- [Getting Started](#getting-started) - - [In a project without Storybook](#in-a-project-without-storybook) - - [In a project with Storybook](#in-a-project-with-storybook) - - [Automatic migration](#automatic-migration) - - [Manual migration](#manual-migration) -- [How to mock](#how-to-mock) - - [Mocking links](#mocking-links) -- [Troubleshooting](#troubleshooting) - - [Error: `ERR! SyntaxError: Identifier '__esbuild_register_import_meta_url__' has already been declared` when starting Storybook](#error-err-syntaxerror-identifier-__esbuild_register_import_meta_url__-has-already-been-declared-when-starting-storybook) -- [Acknowledgements](#acknowledgements) - -## Supported features - -All Svelte language features are supported out of the box, as Storybook uses the Svelte compiler underneath. -However SvelteKit has some [Kit-specific modules](https://kit.svelte.dev/docs/modules) that currently aren't supported. It's on our roadmap to support most of them soon: - -| **Module** | **Status** | **Note** | -| ---------------------------------------------------------------------------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | -| [`$app/environment`](https://kit.svelte.dev/docs/modules#$app-environment) | ✅ Supported | `version` is always empty in Storybook. | -| [`$app/forms`](https://kit.svelte.dev/docs/modules#$app-forms) | ✅ Supported | See [How to mock](#how-to-mock) | -| [`$app/navigation`](https://kit.svelte.dev/docs/modules#$app-navigation) | ✅ Supported | See [How to mock](#how-to-mock) | -| [`$app/paths`](https://kit.svelte.dev/docs/modules#$app-paths) | ✅ Supported | Requires SvelteKit 1.4.0 or newer | -| [`$app/stores`](https://kit.svelte.dev/docs/modules#$app-stores) | ✅ Supported | See [How to mock](#how-to-mock) | -| [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private) | ⛔ Not supported | They are meant to only be available server-side, and Storybook renders all components on the client. | -| [`$env/dynamic/public`](https://kit.svelte.dev/docs/modules#$env-dynamic-public) | 🚧 Partially supported | Only supported in development mode. Storybook is built as a static app with no server-side API so cannot dynamically serve content. | -| [`$env/static/private`](https://kit.svelte.dev/docs/modules#$env-static-private) | ⛔ Not supported | They are meant to only be available server-side, and Storybook renders all components on the client. | -| [`$env/static/public`](https://kit.svelte.dev/docs/modules#$env-static-public) | ✅ Supported | | -| [`$lib`](https://kit.svelte.dev/docs/modules#$lib) | ✅ Supported | | -| [`$service-worker`](https://kit.svelte.dev/docs/modules#$service-worker) | ⛔ Not supported | They are only meant to be used in service workers | -| [`@sveltejs/kit/*`](https://kit.svelte.dev/docs/modules#sveltejs-kit) | ✅ Supported | | - -This is just the beginning. We're close to adding basic support for many of the SvelteKit features. Longer term we're planning on making it an even better experience to [build](https://storybook.js.org/docs/svelte/writing-stories), [test](https://storybook.js.org/docs/svelte/writing-tests) and [document](https://storybook.js.org/docs/svelte/writing-docs) all the SvelteKit goodies like [pages](https://kit.svelte.dev/docs/routing), [forms](https://kit.svelte.dev/docs/form-actions) and [layouts](https://kit.svelte.dev/docs/routing#layout) in Storybook, while still integrating with all the addons and workflows you know and love. - -## Requirements - -- [SvelteKit](https://kit.svelte.dev/) >= 1.0.0 (not including beta versions) -- [Storybook](https://storybook.js.org/) >= 7.x - -## Getting Started - -### In a project without Storybook - -Run the following command in your SvelteKit project's root directory, and follow the prompts: - -```bash -npx storybook@latest init -``` - -[More on getting started with Storybook](https://storybook.js.org/docs/svelte/get-started/install) - -### In a project with Storybook - -This framework is designed to work with Storybook 7. If you’re not already using v7, upgrade with this command: - -```bash -npx storybook@latest upgrade -``` - -#### Automatic migration - -When running the `upgrade` command above you should get a prompt asking you to migrate to `@storybook/sveltekit`, which should handle everything for you. In some cases it can't migrate for you, eg. if your existing Storybook setup is based on Webpack. In such cases, refer to the manual migration below. - -Storybook 7.0 automatically loads your Vite config, and by extension your Svelte config. If you had a `svelteOptions` property in `.storybook/main.js` the automigration will have removed it, as it is no longer supported. - -#### Manual migration - -Install the framework: - -```bash -yarn add -D @storybook/sveltekit -``` - -Update your `main.js` to change the framework property: - -```js -// .storybook/main.js -export default { - ... - framework: '@storybook/sveltekit', -}; -``` - -Storybook 7.0 automatically loads your Vite config, and by extension your Svelte config. If you have a `svelteOptions` property in `.storybook/main.js` you need to remove that. See [Troubleshooting](#error-about-__esbuild_register_import_meta_url__-when-starting-storybook) below. - -Remove any redundant dependencies, if you have them: - -```bash -yarn remove @storybook/svelte-vite -yarn remove @storybook/svelte-webpack5 -yarn remove storybook-builder-vite -yarn remove @storybook/builder-vite -``` - -## How to mock - -To mock a SvelteKit import you can set it on `parameters.sveltekit_experimental`: - -```ts -export const MyStory = { - parameters: { - sveltekit_experimental: { - stores: { - page: { - data: { - test: 'passed', - }, - }, - navigating: { - route: { - id: '/storybook', - }, - }, - updated: true, - }, - }, - }, -}; -``` - -You can add the name of the module you want to mock to `parameters.sveltekit_experimental` (in the example above we are mocking the `stores` module which correspond to `$app/stores`) and then pass the following kind of objects: - -| Module | Path in parameters | Kind of objects | -| ------------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- | -| `import { page } from "$app/stores"` | `parameters.sveltekit_experimental.stores.page` | A Partial of the page store | -| `import { navigating } from "$app/stores"` | `parameters.sveltekit_experimental.stores.navigating` | A Partial of the navigating store | -| `import { updated } from "$app/stores"` | `parameters.sveltekit_experimental.stores.updated` | A boolean representing the value of updated (you can also access `check()` which will be a noop) | -| `import { goto } from "$app/navigation"` | `parameters.sveltekit_experimental.navigation.goto` | A callback that will be called whenever goto is called, in no function is provided an action will be logged to the Actions panel | -| `import { pushState } from "$app/navigation"` | `parameters.sveltekit_experimental.navigation.pushState` | A callback that will be called whenever pushState is called, in no function is provided an action will be logged to the Actions panel | -| `import { replaceState } from "$app/navigation"` | `parameters.sveltekit_experimental.navigation.replaceState` | A callback that will be called whenever replaceState is called, in no function is provided an action will be logged to the Actions panel | -| `import { invalidate } from "$app/navigation"` | `parameters.sveltekit_experimental.navigation.invalidate` | A callback that will be called whenever invalidate is called, in no function is provided an action will be logged to the Actions panel | -| `import { invalidateAll } from "$app/navigation"` | `parameters.sveltekit_experimental.navigation.invalidateAll` | A callback that will be called whenever invalidateAll is called, in no function is provided an action will be logged to the Actions panel | -| `import { afterNavigate } from "$app/navigation"` | `parameters.sveltekit_experimental.navigation.afterNavigate` | An object that will be passed to the afterNavigate function (which will be invoked onMount) called | -| `import { enhance } from "$app/forms"` | `parameters.sveltekit_experimental.forms.enhance` | A callback that will called when a form with `use:enhance` is submitted | - -All the other functions are still exported as `noop` from the mocked modules so that your application will still work. - -### Mocking links - -The default link-handling behavior (ie. clicking an `` tag with an `href` attribute) is to log an action to the Actions panel. - -You can override this by setting an object on `parameter.sveltekit_experimental.hrefs`, where the keys are strings representing an href and the values are objects typed as `{ callback: (href, event) => void, asRegex?: boolean }`. - -If you have an `` tag inside your code with the `href` attribute that matches one or more of the links defined (treated as regex based on the `asRegex` property) the corresponding `callback` will be called. - -Example: - -```ts -export const MyStory = { - parameters: { - sveltekit_experimental: { - hrefs: { - '/basic-href': (to, event) => { - console.log(to, event); - }, - '/root.*': { - callback: (to, event) => { - console.log(to, event); - }, - asRegex: true, - }, - }, - }, - }, -}; -``` - -## Troubleshooting - -### Error: `ERR! SyntaxError: Identifier '__esbuild_register_import_meta_url__' has already been declared` when starting Storybook - -> When starting Storybook after upgrading to v7.0, it breaks with the following error: -> -> ``` -> ERR! SyntaxError: Identifier '__esbuild_register_import_meta_url__' has already been declared -> ``` - -You'll get this error when manually upgrading from 6.5 to 7.0. You need to remove the `svelteOptions` property in `.storybook/main.js`, as that is not supported by Storybook 7.0 + SvelteKit. The property is also not necessary anymore because the Vite and Svelte configurations are loaded automatically in Storybook 7.0. +See [documentation](https://storybook.js.org/docs/8.0/get-started/sveltekit?renderer=svelte) for installation instructions, usage examples, APIs, and more. ## Acknowledgements diff --git a/docs/get-started/sveltekit.md b/docs/get-started/sveltekit.md new file mode 100644 index 000000000000..c75c68cf6549 --- /dev/null +++ b/docs/get-started/sveltekit.md @@ -0,0 +1,342 @@ +--- +title: Storybook for SvelteKit +--- + +export const SUPPORTED_RENDERER = 'svelte'; + +Storybook for SvelteKit is a [framework](../contribute/framework.md) that makes it easy to develop and test UI components in isolation for [SvelteKit](https://kit.svelte.dev/) applications. It includes: + +- 🪄 Zero config +- 🧩 Easily mock many Kit modules +- 🔗 Automatic link handling +- 💫 and more! + + + + + +Storybook for SvelteKit is only supported in [Svelte](?renderer=svelte) projects. + + + + + + + + + +## Requirements + +- SvelteKit ≥ 1.0 +- Storybook ≥ 8.0 + +## Getting started + +### In a project without Storybook + +Follow the prompts after running this command in your Sveltekit project's root directory: + + + + + + + +[More on getting started with Storybook.](./install.md) + +### In a project with Storybook + +This framework is designed to work with Storybook 7+. If you’re not already using v7, upgrade with this command: + + + + + + + +#### Automatic migration + +When running the `upgrade` command above, you should get a prompt asking you to migrate to `@storybook/sveltekit`, which should handle everything for you. In case that auto-migration does not work for your project, refer to the manual migration below. + +#### Manual migration + +First, install the framework: + + + + + + + +Then, update your `.storybook/main.js|ts` to change the framework property: + + + + + + + +Finally, these packages are now either obsolete or part of `@storybook/sveltekit`, so you no longer need to depend on them directly. You can remove them (`npm uninstall`, `yarn remove`, `pnpm remove`) from your project: + +- `@storybook/svelte-vite` +- `@storybook/svelte-webpack5` +- `storybook-builder-vite` +- `@storybook/builder-vite` + +## Supported features + +All Svelte language features are supported out of the box, as the Storybook framework uses the Svelte compiler directly. +However, SvelteKit has some [Kit-specific modules](https://kit.svelte.dev/docs/modules) that aren't supported. Here's a breakdown of what will and will not work within Storybook: + +| Module | Status | Note | +| ---------------------------------------------------------------------------------- | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | +| [`$app/environment`](https://kit.svelte.dev/docs/modules#$app-environment) | ✅ Supported | `version` is always empty in Storybook. | +| [`$app/forms`](https://kit.svelte.dev/docs/modules#$app-forms) | ⚠️ **Experimental** | See [How to mock](#how-to-mock). | +| [`$app/navigation`](https://kit.svelte.dev/docs/modules#$app-navigation) | ⚠️ **Experimental** | See [How to mock](#how-to-mock). | +| [`$app/paths`](https://kit.svelte.dev/docs/modules#$app-paths) | ✅ Supported | Requires SvelteKit 1.4.0 or newer. | +| [`$app/stores`](https://kit.svelte.dev/docs/modules#$app-stores) | ⚠️ **Experimental** | See [How to mock](#how-to-mock). | +| [`$env/dynamic/public`](https://kit.svelte.dev/docs/modules#$env-dynamic-public) | 🚧 Partially supported | Only supported in development mode. Storybook is built as a static app with no server-side API, so it cannot dynamically serve content. | +| [`$env/static/public`](https://kit.svelte.dev/docs/modules#$env-static-public) | ✅ Supported | | +| [`$lib`](https://kit.svelte.dev/docs/modules#$lib) | ✅ Supported | | +| [`@sveltejs/kit/*`](https://kit.svelte.dev/docs/modules#sveltejs-kit) | ✅ Supported | | +| [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private) | ⛔ Not supported | This is a server-side feature, and Storybook renders all components on the client. | +| [`$env/static/private`](https://kit.svelte.dev/docs/modules#$env-static-private) | ⛔ Not supported | This is a server-side feature, and Storybook renders all components on the client. | +| [`$service-worker`](https://kit.svelte.dev/docs/modules#$service-worker) | ⛔ Not supported | This is a service worker feature, which does not apply to Storybook. | + +## How to mock + +To mock a SvelteKit import you can define it within `parameters.sveltekit_experimental`: + +```ts +// MyComponent.stories.svelte +export const MyStory = { + parameters: { + sveltekit_experimental: { + stores: { + page: { + data: { + test: 'passed', + }, + }, + navigating: { + route: { + id: '/storybook', + }, + }, + updated: true, + }, + }, + }, +}; +``` + +The [available parameters](#parameters) are documented in the API section, below. + +### Mocking links + +The default link-handling behavior (e.g. when clicking an `` element) is to log an action to the [Actions panel](../essentials/actions.md). + +You can override this by assigning an object to `parameters.sveltekit_experimental.hrefs`, where the keys are strings representing an href and the values define your mock. For example: + +```ts +// MyComponent.stories.svelte +export const MyStory = { + parameters: { + sveltekit_experimental: { + hrefs: { + '/basic-href': (to, event) => { + console.log(to, event); + }, + '/root.*': { + callback: (to, event) => { + console.log(to, event); + }, + asRegex: true, + }, + }, + }, + }, +}; +``` + +See the [API reference](#hrefs) for more information. + +## Writing native Svelte stories + +Storybook provides a Svelte addon maintained by the community, enabling you to write stories for your Svelte components using the template syntax. You'll need to take some additional steps to enable this feature. + +Run the following command to install the addon. + + + + + + + + + +The community actively maintains the Svelte CSF addon but still lacks some features currently available in the official Storybook Svelte framework support. For more information, see [the addon's documentation](https://github.com/storybookjs/addon-svelte-csf). + + + +## API + +### Parameters + +This framework contributes the following [parameters](../writing-stories/parameters.md) to Storybook, under the `sveltekit_experimental` namespace: + +#### `forms` + +Type: `{ enhance: () => void }` + +Provides mocks for the [`$app/forms`](https://kit.svelte.dev/docs/modules#$app-forms) module. + +##### `forms.enhance` + +Type: `() => void` + +A callback that will be called when a form with [`use:enhance`](https://kit.svelte.dev/docs/form-actions#progressive-enhancement-use-enhance) is submitted. + +#### `hrefs` + +Type: `Record<[path: string], (to: string, event: MouseEvent) => void | { callback: (to: string, event: MouseEvent) => void, asRegex?: boolean }>` + +If you have an `` tag inside your code with the `href` attribute that matches one or more of the links defined (treated as regex based if the `asRegex` property is `true`) the corresponding `callback` will be called. If no matching `hrefs` are defined, an action will be logged to the [Actions panel](../essentials/actions.md). See [Mocking links](#mocking-links) for an example. + +#### `navigation` + +Type: See [SvelteKit docs](https://kit.svelte.dev/docs/modules#$app-navigation) + +Provides mocks for the [`$app/navigation`](https://kit.svelte.dev/docs/modules#$app-navigation) module. + +##### `navigation.goto` + +Type: See [SvelteKit docs](https://kit.svelte.dev/docs/modules#$app-navigation-goto) + +A callback that will be called whenever [`goto`](https://kit.svelte.dev/docs/modules#$app-navigation-goto) is called. If no function is provided, an action will be logged to the [Actions panel](../essentials/actions.md). + +##### `navigation.pushState` + +Type: See [SvelteKit docs](https://kit.svelte.dev/docs/modules#$app-navigation-pushstate) + +A callback that will be called whenever [`pushState`](https://kit.svelte.dev/docs/modules#$app-navigation-pushstate) is called. If no function is provided, an action will be logged to the [Actions panel](../essentials/actions.md). + +##### `navigation.replaceState` + +Type: See [SvelteKit docs](https://kit.svelte.dev/docs/modules#$app-navigation-replacestate) + +A callback that will be called whenever [`replaceState`](https://kit.svelte.dev/docs/modules#$app-navigation-replacestate) is called. If no function is provided, an action will be logged to the [Actions panel](../essentials/actions.md). + +##### `navigation.invalidate` + +Type: See [SvelteKit docs](https://kit.svelte.dev/docs/modules#$app-navigation-invalidate) + +A callback that will be called whenever [`invalidate`](https://kit.svelte.dev/docs/modules#$app-navigation-invalidate) is called. If no function is provided, an action will be logged to the [Actions panel](../essentials/actions.md). + +##### `navigation.invalidateAll` + +Type: See [SvelteKit docs](https://kit.svelte.dev/docs/modules#$app-navigation-invalidateall) + +A callback that will be called whenever [`invalidateAll`](https://kit.svelte.dev/docs/modules#$app-navigation-invalidateall) is called. If no function is provided, an action will be logged to the [Actions panel](../essentials/actions.md). + +##### `navigation.afterNavigate` + +Type: See [SvelteKit docs](https://kit.svelte.dev/docs/modules#$app-navigation-afternavigate) + +An object that will be passed to the [`afterNavigate`](https://kit.svelte.dev/docs/modules#$app-navigation-afternavigate) function, which will be invoked when the `onMount` event fires. + +#### `stores` + +Type: See [SvelteKit docs](https://kit.svelte.dev/docs/modules#$app-stores) + +Provides mocks for the [`$app/stores`](https://kit.svelte.dev/docs/modules#$app-stores) module. + +##### `stores.navigating` + +Type: See [SvelteKit docs](https://kit.svelte.dev/docs/modules#$app-stores-navigating) + +A partial version of the [`navigating`](https://kit.svelte.dev/docs/modules#$app-stores-navigating) store. + +##### `stores.page` + +Type: See [SvelteKit docs](https://kit.svelte.dev/docs/modules#$app-stores-page) + +A partial version of the [`page`](https://kit.svelte.dev/docs/modules#$app-stores-page) store. + +##### `stores.updated` + +Type: boolean + +A boolean representing the value of [`updated`](https://kit.svelte.dev/docs/modules#$app-stores-updated) (you can also access `updated.check()` which will be a no-op). + +### Options + +You can pass an options object for additional configuration if needed: + +```js +// .storybook/main.js +import * as path from 'path'; + +export default { + // ... + framework: { + name: '@storybook/sveltekit', + options: { + // ... + }, + }, +}; +``` + +The available options are: + +#### `builder` + +Type: `Record` + +Configure options for the [framework's builder](../api/main-config-framework.md#optionsbuilder). For Sveltekit, available options can be found in the [Vite builder docs](../builders/vite.md). + +## Troubleshooting + +### Error when starting Storybook + +When starting Storybook after upgrading to v7.0, it may quit with the following error: + +```sh +ERR! SyntaxError: Identifier '__esbuild_register_import_meta_url__' has already been declared +``` + +This can occur when manually upgrading from 6.5 to 7.0. To resolve it, you'll need to remove the `svelteOptions` property in `.storybook/main.js`, as that is not supported (and no longer necessary) in Storybook 7+ with SvelteKit. + + + + diff --git a/docs/snippets/svelte/sveltekit-add-framework.js.mdx b/docs/snippets/svelte/sveltekit-add-framework.js.mdx new file mode 100644 index 000000000000..12ea1574f451 --- /dev/null +++ b/docs/snippets/svelte/sveltekit-add-framework.js.mdx @@ -0,0 +1,8 @@ +```js +// .storybook/main.js +export default { + // ... + framework: '@storybook/sveltekit', // 👈 Add this + // svelteOptions: { ... }, 👈 Remove this +}; +``` diff --git a/docs/snippets/svelte/sveltekit-add-framework.ts.mdx b/docs/snippets/svelte/sveltekit-add-framework.ts.mdx new file mode 100644 index 000000000000..d9b21745ab48 --- /dev/null +++ b/docs/snippets/svelte/sveltekit-add-framework.ts.mdx @@ -0,0 +1,12 @@ +```ts +// .storybook/main.ts +import { StorybookConfig } from '@storybook/nextjs'; + +const config: StorybookConfig = { + // ... + framework: '@storybook/sveltekit', // 👈 Add this + // svelteOptions: { ... }, 👈 Remove this +}; + +export default config; +``` diff --git a/docs/snippets/svelte/sveltekit-install.npm.js.mdx b/docs/snippets/svelte/sveltekit-install.npm.js.mdx new file mode 100644 index 000000000000..b63e43de7c6b --- /dev/null +++ b/docs/snippets/svelte/sveltekit-install.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm install --save-dev @storybook/sveltekit +``` diff --git a/docs/snippets/svelte/sveltekit-install.pnpm.js.mdx b/docs/snippets/svelte/sveltekit-install.pnpm.js.mdx new file mode 100644 index 000000000000..fcbd37499ee9 --- /dev/null +++ b/docs/snippets/svelte/sveltekit-install.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm install --save-dev @storybook/sveltekit +``` diff --git a/docs/snippets/svelte/sveltekit-install.yarn.js.mdx b/docs/snippets/svelte/sveltekit-install.yarn.js.mdx new file mode 100644 index 000000000000..2cb71e06c9ed --- /dev/null +++ b/docs/snippets/svelte/sveltekit-install.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn add --dev @storybook/sveltekit +``` diff --git a/docs/toc.js b/docs/toc.js index 13ad27311806..2ca9caac889e 100644 --- a/docs/toc.js +++ b/docs/toc.js @@ -43,6 +43,11 @@ module.exports = { title: 'React & Webpack', type: 'link', }, + { + pathSegment: 'sveltekit', + title: 'SvelteKit', + type: 'link', + }, { pathSegment: 'svelte-vite', title: 'Svelte & Vite', From ccb175d4a30cf2997001f84a7672d15869d594df Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Tue, 12 Mar 2024 08:46:08 +0100 Subject: [PATCH 65/70] Set version to 8.0.0 --- code/addons/a11y/package.json | 2 +- code/addons/actions/package.json | 2 +- code/addons/backgrounds/package.json | 2 +- code/addons/controls/package.json | 2 +- code/addons/docs/package.json | 2 +- code/addons/essentials/package.json | 2 +- code/addons/gfm/package.json | 2 +- code/addons/highlight/package.json | 2 +- code/addons/interactions/package.json | 2 +- code/addons/jest/package.json | 2 +- code/addons/links/package.json | 2 +- code/addons/measure/package.json | 2 +- code/addons/onboarding/package.json | 2 +- code/addons/outline/package.json | 2 +- code/addons/storysource/package.json | 2 +- code/addons/themes/package.json | 2 +- code/addons/toolbars/package.json | 2 +- code/addons/viewport/package.json | 2 +- code/builders/builder-manager/package.json | 2 +- code/builders/builder-vite/package.json | 2 +- code/builders/builder-webpack5/package.json | 2 +- code/frameworks/angular/package.json | 2 +- code/frameworks/ember/package.json | 2 +- code/frameworks/html-vite/package.json | 2 +- code/frameworks/html-webpack5/package.json | 2 +- code/frameworks/nextjs/package.json | 2 +- code/frameworks/preact-vite/package.json | 2 +- code/frameworks/preact-webpack5/package.json | 2 +- code/frameworks/react-vite/package.json | 2 +- code/frameworks/react-webpack5/package.json | 2 +- code/frameworks/server-webpack5/package.json | 2 +- code/frameworks/svelte-vite/package.json | 2 +- code/frameworks/svelte-webpack5/package.json | 2 +- code/frameworks/sveltekit/package.json | 2 +- code/frameworks/vue3-vite/package.json | 2 +- code/frameworks/vue3-webpack5/package.json | 2 +- .../web-components-vite/package.json | 2 +- .../web-components-webpack5/package.json | 2 +- code/lib/channels/package.json | 2 +- code/lib/cli-sb/package.json | 2 +- code/lib/cli-storybook/package.json | 2 +- code/lib/cli/package.json | 2 +- code/lib/client-logger/package.json | 2 +- code/lib/codemod/package.json | 2 +- code/lib/core-common/package.json | 2 +- code/lib/core-common/src/versions.ts | 160 +++++++++--------- code/lib/core-events/package.json | 2 +- code/lib/core-server/package.json | 2 +- code/lib/core-webpack/package.json | 2 +- code/lib/csf-plugin/package.json | 2 +- code/lib/csf-tools/package.json | 2 +- code/lib/docs-tools/package.json | 2 +- code/lib/instrumenter/package.json | 2 +- code/lib/manager-api/package.json | 2 +- code/lib/manager-api/src/version.ts | 2 +- code/lib/node-logger/package.json | 2 +- code/lib/preview-api/package.json | 2 +- code/lib/preview/package.json | 2 +- code/lib/react-dom-shim/package.json | 2 +- code/lib/router/package.json | 2 +- code/lib/source-loader/package.json | 2 +- code/lib/telemetry/package.json | 2 +- code/lib/test/package.json | 2 +- code/lib/theming/package.json | 2 +- code/lib/types/package.json | 2 +- code/package.json | 2 +- code/presets/create-react-app/package.json | 2 +- code/presets/html-webpack/package.json | 2 +- code/presets/preact-webpack/package.json | 2 +- code/presets/react-webpack/package.json | 2 +- code/presets/server-webpack/package.json | 2 +- code/presets/svelte-webpack/package.json | 2 +- code/presets/vue3-webpack/package.json | 2 +- code/renderers/html/package.json | 2 +- code/renderers/preact/package.json | 2 +- code/renderers/react/package.json | 2 +- code/renderers/server/package.json | 2 +- code/renderers/svelte/package.json | 2 +- code/renderers/vue3/package.json | 2 +- code/renderers/web-components/package.json | 2 +- code/ui/blocks/package.json | 2 +- code/ui/components/package.json | 2 +- code/ui/manager/package.json | 2 +- 83 files changed, 162 insertions(+), 162 deletions(-) diff --git a/code/addons/a11y/package.json b/code/addons/a11y/package.json index 73f802106851..c20046442614 100644 --- a/code/addons/a11y/package.json +++ b/code/addons/a11y/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-a11y", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Test component compliance with web accessibility standards", "keywords": [ "a11y", diff --git a/code/addons/actions/package.json b/code/addons/actions/package.json index 2f13f8e98a15..db65386dd902 100644 --- a/code/addons/actions/package.json +++ b/code/addons/actions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-actions", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Get UI feedback when an action is performed on an interactive element", "keywords": [ "storybook", diff --git a/code/addons/backgrounds/package.json b/code/addons/backgrounds/package.json index 08ea5529d139..00d2a6d695da 100644 --- a/code/addons/backgrounds/package.json +++ b/code/addons/backgrounds/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-backgrounds", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Switch backgrounds to view components in different settings", "keywords": [ "addon", diff --git a/code/addons/controls/package.json b/code/addons/controls/package.json index d59821722737..a2338b8641e1 100644 --- a/code/addons/controls/package.json +++ b/code/addons/controls/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-controls", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Interact with component inputs dynamically in the Storybook UI", "keywords": [ "addon", diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json index 3c6eaa0d625a..8af4bbb12e47 100644 --- a/code/addons/docs/package.json +++ b/code/addons/docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-docs", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Document component usage and properties in Markdown", "keywords": [ "addon", diff --git a/code/addons/essentials/package.json b/code/addons/essentials/package.json index 3b9143837d78..356ee89f202f 100644 --- a/code/addons/essentials/package.json +++ b/code/addons/essentials/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-essentials", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Curated addons to bring out the best of Storybook", "keywords": [ "addon", diff --git a/code/addons/gfm/package.json b/code/addons/gfm/package.json index b35c226de305..7b2b62811b84 100644 --- a/code/addons/gfm/package.json +++ b/code/addons/gfm/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-mdx-gfm", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "GitHub Flavored Markdown in Storybook", "keywords": [ "addon", diff --git a/code/addons/highlight/package.json b/code/addons/highlight/package.json index bae6a544048d..3465be44842d 100644 --- a/code/addons/highlight/package.json +++ b/code/addons/highlight/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-highlight", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Highlight DOM nodes within your stories", "keywords": [ "storybook-addons", diff --git a/code/addons/interactions/package.json b/code/addons/interactions/package.json index dbb88085b22b..a3f2fb45fa40 100644 --- a/code/addons/interactions/package.json +++ b/code/addons/interactions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-interactions", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Automate, test and debug user interactions", "keywords": [ "storybook-addons", diff --git a/code/addons/jest/package.json b/code/addons/jest/package.json index bd511b8e0b5c..0df0d4980d9c 100644 --- a/code/addons/jest/package.json +++ b/code/addons/jest/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-jest", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "React storybook addon that show component jest report", "keywords": [ "addon", diff --git a/code/addons/links/package.json b/code/addons/links/package.json index 686c684f829b..0e7cb990631d 100644 --- a/code/addons/links/package.json +++ b/code/addons/links/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-links", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Link stories together to build demos and prototypes with your UI components", "keywords": [ "addon", diff --git a/code/addons/measure/package.json b/code/addons/measure/package.json index 1985366f670c..da3ee3d9dae1 100644 --- a/code/addons/measure/package.json +++ b/code/addons/measure/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-measure", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Inspect layouts by visualizing the box model", "keywords": [ "storybook-addons", diff --git a/code/addons/onboarding/package.json b/code/addons/onboarding/package.json index 72726fb3726f..1d38b115b238 100644 --- a/code/addons/onboarding/package.json +++ b/code/addons/onboarding/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", diff --git a/code/addons/outline/package.json b/code/addons/outline/package.json index f8db2b4ea149..085a7073a49e 100644 --- a/code/addons/outline/package.json +++ b/code/addons/outline/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-outline", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Outline all elements with CSS to help with layout placement and alignment", "keywords": [ "storybook-addons", diff --git a/code/addons/storysource/package.json b/code/addons/storysource/package.json index c7326a263ad1..452e6fa417b3 100644 --- a/code/addons/storysource/package.json +++ b/code/addons/storysource/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storysource", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "View a story’s source code to see how it works and paste into your app", "keywords": [ "addon", diff --git a/code/addons/themes/package.json b/code/addons/themes/package.json index a3599f8288e2..52167d687610 100644 --- a/code/addons/themes/package.json +++ b/code/addons/themes/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-themes", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Switch between multiple themes for you components in Storybook", "keywords": [ "css", diff --git a/code/addons/toolbars/package.json b/code/addons/toolbars/package.json index ec4a11506175..48cc8dcd1a80 100644 --- a/code/addons/toolbars/package.json +++ b/code/addons/toolbars/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-toolbars", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Create your own toolbar items that control story rendering", "keywords": [ "addon", diff --git a/code/addons/viewport/package.json b/code/addons/viewport/package.json index 92208b361584..60620fc6abab 100644 --- a/code/addons/viewport/package.json +++ b/code/addons/viewport/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-viewport", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Build responsive components by adjusting Storybook’s viewport size and orientation", "keywords": [ "addon", diff --git a/code/builders/builder-manager/package.json b/code/builders/builder-manager/package.json index a31a2e91a374..b48290a00ad5 100644 --- a/code/builders/builder-manager/package.json +++ b/code/builders/builder-manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-manager", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook manager builder", "keywords": [ "storybook" diff --git a/code/builders/builder-vite/package.json b/code/builders/builder-vite/package.json index 1d0dd1b7610c..99e9a8070838 100644 --- a/code/builders/builder-vite/package.json +++ b/code/builders/builder-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-vite", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "A plugin to run and build Storybooks with Vite", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme", "bugs": { diff --git a/code/builders/builder-webpack5/package.json b/code/builders/builder-webpack5/package.json index 31d47498ee40..058aec7ab747 100644 --- a/code/builders/builder-webpack5/package.json +++ b/code/builders/builder-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json index 9ffa620ac401..a2f479091d30 100644 --- a/code/frameworks/angular/package.json +++ b/code/frameworks/angular/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/angular", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Angular: Develop Angular components in isolation with hot reloading.", "keywords": [ "storybook", diff --git a/code/frameworks/ember/package.json b/code/frameworks/ember/package.json index 9c796b2f5b7c..2c014d985f54 100644 --- a/code/frameworks/ember/package.json +++ b/code/frameworks/ember/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/ember", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/frameworks/ember", "bugs": { diff --git a/code/frameworks/html-vite/package.json b/code/frameworks/html-vite/package.json index 26bcfa5687c7..527c4de7c0a0 100644 --- a/code/frameworks/html-vite/package.json +++ b/code/frameworks/html-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-vite", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for HTML and Vite: Develop HTML in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/html-webpack5/package.json b/code/frameworks/html-webpack5/package.json index 7c6e27ae25e1..01a883691317 100644 --- a/code/frameworks/html-webpack5/package.json +++ b/code/frameworks/html-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/nextjs/package.json b/code/frameworks/nextjs/package.json index f3a10ee4210d..8ea8e72f8d7b 100644 --- a/code/frameworks/nextjs/package.json +++ b/code/frameworks/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/nextjs", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Next.js", "keywords": [ "storybook", diff --git a/code/frameworks/preact-vite/package.json b/code/frameworks/preact-vite/package.json index b8b67128ef22..d1bb2cffedd4 100644 --- a/code/frameworks/preact-vite/package.json +++ b/code/frameworks/preact-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-vite", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Preact and Vite: Develop Preact components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/preact-webpack5/package.json b/code/frameworks/preact-webpack5/package.json index 51bdc48718ad..fe359b400ca7 100644 --- a/code/frameworks/preact-webpack5/package.json +++ b/code/frameworks/preact-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" diff --git a/code/frameworks/react-vite/package.json b/code/frameworks/react-vite/package.json index da08584b7625..1c355d4fb1a9 100644 --- a/code/frameworks/react-vite/package.json +++ b/code/frameworks/react-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-vite", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for React and Vite: Develop React components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/react-webpack5/package.json b/code/frameworks/react-webpack5/package.json index 3d5ceb3ba80c..1fe433e9aa9f 100644 --- a/code/frameworks/react-webpack5/package.json +++ b/code/frameworks/react-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/server-webpack5/package.json b/code/frameworks/server-webpack5/package.json index 6aa05a0c122d..265502f9b607 100644 --- a/code/frameworks/server-webpack5/package.json +++ b/code/frameworks/server-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/svelte-vite/package.json b/code/frameworks/svelte-vite/package.json index 9090da475670..ddfd94f74cfe 100644 --- a/code/frameworks/svelte-vite/package.json +++ b/code/frameworks/svelte-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-vite", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Svelte and Vite: Develop Svelte components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/svelte-webpack5/package.json b/code/frameworks/svelte-webpack5/package.json index db4ed258f40c..a49afd3eb1bd 100644 --- a/code/frameworks/svelte-webpack5/package.json +++ b/code/frameworks/svelte-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/sveltekit/package.json b/code/frameworks/sveltekit/package.json index 2acf401c3f24..c8d68ff47d08 100644 --- a/code/frameworks/sveltekit/package.json +++ b/code/frameworks/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/sveltekit", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for SvelteKit", "keywords": [ "storybook", diff --git a/code/frameworks/vue3-vite/package.json b/code/frameworks/vue3-vite/package.json index 44297c5a4047..05d7d8bff07e 100644 --- a/code/frameworks/vue3-vite/package.json +++ b/code/frameworks/vue3-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-vite", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Vue3 and Vite: Develop Vue3 components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/vue3-webpack5/package.json b/code/frameworks/vue3-webpack5/package.json index 094fb5103f2d..6038e5de35f1 100644 --- a/code/frameworks/vue3-webpack5/package.json +++ b/code/frameworks/vue3-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/web-components-vite/package.json b/code/frameworks/web-components-vite/package.json index cbe4ffdc247d..7f30b0e62b32 100644 --- a/code/frameworks/web-components-vite/package.json +++ b/code/frameworks/web-components-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-vite", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for web-components and Vite: Develop Web Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/web-components-webpack5/package.json b/code/frameworks/web-components-webpack5/package.json index 866ab3d35e5d..d5f0d2a241f3 100644 --- a/code/frameworks/web-components-webpack5/package.json +++ b/code/frameworks/web-components-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.", "keywords": [ "lit", diff --git a/code/lib/channels/package.json b/code/lib/channels/package.json index 1f583dc9865d..bd50022489a9 100644 --- a/code/lib/channels/package.json +++ b/code/lib/channels/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channels", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/cli-sb/package.json b/code/lib/cli-sb/package.json index e707547191dd..34aedd948abe 100644 --- a/code/lib/cli-sb/package.json +++ b/code/lib/cli-sb/package.json @@ -1,6 +1,6 @@ { "name": "sb", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook CLI", "keywords": [ "storybook" diff --git a/code/lib/cli-storybook/package.json b/code/lib/cli-storybook/package.json index 3eb1547fccc0..7772af298cee 100644 --- a/code/lib/cli-storybook/package.json +++ b/code/lib/cli-storybook/package.json @@ -1,6 +1,6 @@ { "name": "storybook", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook CLI", "keywords": [ "storybook" diff --git a/code/lib/cli/package.json b/code/lib/cli/package.json index 01d064068c60..d49df9ad39ab 100644 --- a/code/lib/cli/package.json +++ b/code/lib/cli/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/cli", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook's CLI - install, dev, build, upgrade, and more", "keywords": [ "cli", diff --git a/code/lib/client-logger/package.json b/code/lib/client-logger/package.json index 83926ddd07ac..b73e0fb65091 100644 --- a/code/lib/client-logger/package.json +++ b/code/lib/client-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-logger", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/codemod/package.json b/code/lib/codemod/package.json index 290164c50f5f..42f3a6125262 100644 --- a/code/lib/codemod/package.json +++ b/code/lib/codemod/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/codemod", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "A collection of codemod scripts written with JSCodeshift", "keywords": [ "storybook" diff --git a/code/lib/core-common/package.json b/code/lib/core-common/package.json index b46b9a1de983..6d920db16cde 100644 --- a/code/lib/core-common/package.json +++ b/code/lib/core-common/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-common", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/core-common/src/versions.ts b/code/lib/core-common/src/versions.ts index 0109c9c2a8a3..995915f828e2 100644 --- a/code/lib/core-common/src/versions.ts +++ b/code/lib/core-common/src/versions.ts @@ -1,83 +1,83 @@ // auto generated file, do not edit export default { - '@storybook/addon-a11y': '8.1.0-alpha.0', - '@storybook/addon-actions': '8.1.0-alpha.0', - '@storybook/addon-backgrounds': '8.1.0-alpha.0', - '@storybook/addon-controls': '8.1.0-alpha.0', - '@storybook/addon-docs': '8.1.0-alpha.0', - '@storybook/addon-essentials': '8.1.0-alpha.0', - '@storybook/addon-highlight': '8.1.0-alpha.0', - '@storybook/addon-interactions': '8.1.0-alpha.0', - '@storybook/addon-jest': '8.1.0-alpha.0', - '@storybook/addon-links': '8.1.0-alpha.0', - '@storybook/addon-mdx-gfm': '8.1.0-alpha.0', - '@storybook/addon-measure': '8.1.0-alpha.0', - '@storybook/addon-onboarding': '8.1.0-alpha.0', - '@storybook/addon-outline': '8.1.0-alpha.0', - '@storybook/addon-storysource': '8.1.0-alpha.0', - '@storybook/addon-themes': '8.1.0-alpha.0', - '@storybook/addon-toolbars': '8.1.0-alpha.0', - '@storybook/addon-viewport': '8.1.0-alpha.0', - '@storybook/angular': '8.1.0-alpha.0', - '@storybook/blocks': '8.1.0-alpha.0', - '@storybook/builder-manager': '8.1.0-alpha.0', - '@storybook/builder-vite': '8.1.0-alpha.0', - '@storybook/builder-webpack5': '8.1.0-alpha.0', - '@storybook/channels': '8.1.0-alpha.0', - '@storybook/cli': '8.1.0-alpha.0', - '@storybook/client-logger': '8.1.0-alpha.0', - '@storybook/codemod': '8.1.0-alpha.0', - '@storybook/components': '8.1.0-alpha.0', - '@storybook/core-common': '8.1.0-alpha.0', - '@storybook/core-events': '8.1.0-alpha.0', - '@storybook/core-server': '8.1.0-alpha.0', - '@storybook/core-webpack': '8.1.0-alpha.0', - '@storybook/csf-plugin': '8.1.0-alpha.0', - '@storybook/csf-tools': '8.1.0-alpha.0', - '@storybook/docs-tools': '8.1.0-alpha.0', - '@storybook/ember': '8.1.0-alpha.0', - '@storybook/html': '8.1.0-alpha.0', - '@storybook/html-vite': '8.1.0-alpha.0', - '@storybook/html-webpack5': '8.1.0-alpha.0', - '@storybook/instrumenter': '8.1.0-alpha.0', - '@storybook/manager': '8.1.0-alpha.0', - '@storybook/manager-api': '8.1.0-alpha.0', - '@storybook/nextjs': '8.1.0-alpha.0', - '@storybook/node-logger': '8.1.0-alpha.0', - '@storybook/preact': '8.1.0-alpha.0', - '@storybook/preact-vite': '8.1.0-alpha.0', - '@storybook/preact-webpack5': '8.1.0-alpha.0', - '@storybook/preset-create-react-app': '8.1.0-alpha.0', - '@storybook/preset-html-webpack': '8.1.0-alpha.0', - '@storybook/preset-preact-webpack': '8.1.0-alpha.0', - '@storybook/preset-react-webpack': '8.1.0-alpha.0', - '@storybook/preset-server-webpack': '8.1.0-alpha.0', - '@storybook/preset-svelte-webpack': '8.1.0-alpha.0', - '@storybook/preset-vue3-webpack': '8.1.0-alpha.0', - '@storybook/preview': '8.1.0-alpha.0', - '@storybook/preview-api': '8.1.0-alpha.0', - '@storybook/react': '8.1.0-alpha.0', - '@storybook/react-dom-shim': '8.1.0-alpha.0', - '@storybook/react-vite': '8.1.0-alpha.0', - '@storybook/react-webpack5': '8.1.0-alpha.0', - '@storybook/router': '8.1.0-alpha.0', - '@storybook/server': '8.1.0-alpha.0', - '@storybook/server-webpack5': '8.1.0-alpha.0', - '@storybook/source-loader': '8.1.0-alpha.0', - '@storybook/svelte': '8.1.0-alpha.0', - '@storybook/svelte-vite': '8.1.0-alpha.0', - '@storybook/svelte-webpack5': '8.1.0-alpha.0', - '@storybook/sveltekit': '8.1.0-alpha.0', - '@storybook/telemetry': '8.1.0-alpha.0', - '@storybook/test': '8.1.0-alpha.0', - '@storybook/theming': '8.1.0-alpha.0', - '@storybook/types': '8.1.0-alpha.0', - '@storybook/vue3': '8.1.0-alpha.0', - '@storybook/vue3-vite': '8.1.0-alpha.0', - '@storybook/vue3-webpack5': '8.1.0-alpha.0', - '@storybook/web-components': '8.1.0-alpha.0', - '@storybook/web-components-vite': '8.1.0-alpha.0', - '@storybook/web-components-webpack5': '8.1.0-alpha.0', - sb: '8.1.0-alpha.0', - storybook: '8.1.0-alpha.0', + '@storybook/addon-a11y': '8.0.0', + '@storybook/addon-actions': '8.0.0', + '@storybook/addon-backgrounds': '8.0.0', + '@storybook/addon-controls': '8.0.0', + '@storybook/addon-docs': '8.0.0', + '@storybook/addon-essentials': '8.0.0', + '@storybook/addon-highlight': '8.0.0', + '@storybook/addon-interactions': '8.0.0', + '@storybook/addon-jest': '8.0.0', + '@storybook/addon-links': '8.0.0', + '@storybook/addon-mdx-gfm': '8.0.0', + '@storybook/addon-measure': '8.0.0', + '@storybook/addon-onboarding': '8.0.0', + '@storybook/addon-outline': '8.0.0', + '@storybook/addon-storysource': '8.0.0', + '@storybook/addon-themes': '8.0.0', + '@storybook/addon-toolbars': '8.0.0', + '@storybook/addon-viewport': '8.0.0', + '@storybook/angular': '8.0.0', + '@storybook/blocks': '8.0.0', + '@storybook/builder-manager': '8.0.0', + '@storybook/builder-vite': '8.0.0', + '@storybook/builder-webpack5': '8.0.0', + '@storybook/channels': '8.0.0', + '@storybook/cli': '8.0.0', + '@storybook/client-logger': '8.0.0', + '@storybook/codemod': '8.0.0', + '@storybook/components': '8.0.0', + '@storybook/core-common': '8.0.0', + '@storybook/core-events': '8.0.0', + '@storybook/core-server': '8.0.0', + '@storybook/core-webpack': '8.0.0', + '@storybook/csf-plugin': '8.0.0', + '@storybook/csf-tools': '8.0.0', + '@storybook/docs-tools': '8.0.0', + '@storybook/ember': '8.0.0', + '@storybook/html': '8.0.0', + '@storybook/html-vite': '8.0.0', + '@storybook/html-webpack5': '8.0.0', + '@storybook/instrumenter': '8.0.0', + '@storybook/manager': '8.0.0', + '@storybook/manager-api': '8.0.0', + '@storybook/nextjs': '8.0.0', + '@storybook/node-logger': '8.0.0', + '@storybook/preact': '8.0.0', + '@storybook/preact-vite': '8.0.0', + '@storybook/preact-webpack5': '8.0.0', + '@storybook/preset-create-react-app': '8.0.0', + '@storybook/preset-html-webpack': '8.0.0', + '@storybook/preset-preact-webpack': '8.0.0', + '@storybook/preset-react-webpack': '8.0.0', + '@storybook/preset-server-webpack': '8.0.0', + '@storybook/preset-svelte-webpack': '8.0.0', + '@storybook/preset-vue3-webpack': '8.0.0', + '@storybook/preview': '8.0.0', + '@storybook/preview-api': '8.0.0', + '@storybook/react': '8.0.0', + '@storybook/react-dom-shim': '8.0.0', + '@storybook/react-vite': '8.0.0', + '@storybook/react-webpack5': '8.0.0', + '@storybook/router': '8.0.0', + '@storybook/server': '8.0.0', + '@storybook/server-webpack5': '8.0.0', + '@storybook/source-loader': '8.0.0', + '@storybook/svelte': '8.0.0', + '@storybook/svelte-vite': '8.0.0', + '@storybook/svelte-webpack5': '8.0.0', + '@storybook/sveltekit': '8.0.0', + '@storybook/telemetry': '8.0.0', + '@storybook/test': '8.0.0', + '@storybook/theming': '8.0.0', + '@storybook/types': '8.0.0', + '@storybook/vue3': '8.0.0', + '@storybook/vue3-vite': '8.0.0', + '@storybook/vue3-webpack5': '8.0.0', + '@storybook/web-components': '8.0.0', + '@storybook/web-components-vite': '8.0.0', + '@storybook/web-components-webpack5': '8.0.0', + sb: '8.0.0', + storybook: '8.0.0', }; diff --git a/code/lib/core-events/package.json b/code/lib/core-events/package.json index 2fda3e0eb626..703abd1c4c43 100644 --- a/code/lib/core-events/package.json +++ b/code/lib/core-events/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-events", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Event names used in storybook core", "keywords": [ "storybook" diff --git a/code/lib/core-server/package.json b/code/lib/core-server/package.json index 2b44e68b8a22..0b2b4cac082a 100644 --- a/code/lib/core-server/package.json +++ b/code/lib/core-server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-server", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/core-webpack/package.json b/code/lib/core-webpack/package.json index d1e6142601ea..ab98e61903cd 100644 --- a/code/lib/core-webpack/package.json +++ b/code/lib/core-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-webpack", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/csf-plugin/package.json b/code/lib/csf-plugin/package.json index 1761eb435ae1..71ba943c4f06 100644 --- a/code/lib/csf-plugin/package.json +++ b/code/lib/csf-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-plugin", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Enrich CSF files via static analysis", "keywords": [ "storybook" diff --git a/code/lib/csf-tools/package.json b/code/lib/csf-tools/package.json index f8e58033aff3..5055915d9e0b 100644 --- a/code/lib/csf-tools/package.json +++ b/code/lib/csf-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-tools", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Parse and manipulate CSF and Storybook config files", "keywords": [ "storybook" diff --git a/code/lib/docs-tools/package.json b/code/lib/docs-tools/package.json index 8ecc609ee401..3b701447be5f 100644 --- a/code/lib/docs-tools/package.json +++ b/code/lib/docs-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/docs-tools", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Shared utility functions for frameworks to implement docs", "keywords": [ "storybook" diff --git a/code/lib/instrumenter/package.json b/code/lib/instrumenter/package.json index c411b7c9138c..9e8578e5b392 100644 --- a/code/lib/instrumenter/package.json +++ b/code/lib/instrumenter/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/instrumenter", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/manager-api/package.json b/code/lib/manager-api/package.json index 566511f21346..71a5a793d9a3 100644 --- a/code/lib/manager-api/package.json +++ b/code/lib/manager-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager-api", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Core Storybook Manager API & Context", "keywords": [ "storybook" diff --git a/code/lib/manager-api/src/version.ts b/code/lib/manager-api/src/version.ts index f89e3528d2df..d785b5b25ee7 100644 --- a/code/lib/manager-api/src/version.ts +++ b/code/lib/manager-api/src/version.ts @@ -1 +1 @@ -export const version = '8.1.0-alpha.0'; +export const version = '8.0.0'; diff --git a/code/lib/node-logger/package.json b/code/lib/node-logger/package.json index 739cd0051874..ff1c98ab8d65 100644 --- a/code/lib/node-logger/package.json +++ b/code/lib/node-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/node-logger", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/preview-api/package.json b/code/lib/preview-api/package.json index 126be65d5e3a..61aa33464abc 100644 --- a/code/lib/preview-api/package.json +++ b/code/lib/preview-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview-api", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/preview/package.json b/code/lib/preview/package.json index 94821536bc4a..77152bf25bda 100644 --- a/code/lib/preview/package.json +++ b/code/lib/preview/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/react-dom-shim/package.json b/code/lib/react-dom-shim/package.json index ab34b8084785..d28cd4ce0bf0 100644 --- a/code/lib/react-dom-shim/package.json +++ b/code/lib/react-dom-shim/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-dom-shim", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/router/package.json b/code/lib/router/package.json index 767d40a74d23..1e68a5f4cb9c 100644 --- a/code/lib/router/package.json +++ b/code/lib/router/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/router", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Core Storybook Router", "keywords": [ "storybook" diff --git a/code/lib/source-loader/package.json b/code/lib/source-loader/package.json index 65ab30b64945..9be474aca84d 100644 --- a/code/lib/source-loader/package.json +++ b/code/lib/source-loader/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/source-loader", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Source loader", "keywords": [ "lib", diff --git a/code/lib/telemetry/package.json b/code/lib/telemetry/package.json index f1f12541c50f..d97e3a4b4130 100644 --- a/code/lib/telemetry/package.json +++ b/code/lib/telemetry/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/telemetry", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Telemetry logging for crash reports and usage statistics", "keywords": [ "storybook" diff --git a/code/lib/test/package.json b/code/lib/test/package.json index 6717a6912906..5510b4b5f882 100644 --- a/code/lib/test/package.json +++ b/code/lib/test/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/test", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/theming/package.json b/code/lib/theming/package.json index 1f65e8cb47b5..4a37093ee71b 100644 --- a/code/lib/theming/package.json +++ b/code/lib/theming/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/theming", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Core Storybook Components", "keywords": [ "storybook" diff --git a/code/lib/types/package.json b/code/lib/types/package.json index 7441040beb30..378aa60801fb 100644 --- a/code/lib/types/package.json +++ b/code/lib/types/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/types", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Core Storybook TS Types", "keywords": [ "storybook" diff --git a/code/package.json b/code/package.json index decb2ffe484c..9e44d4f7f088 100644 --- a/code/package.json +++ b/code/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/root", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "private": true, "description": "Storybook root", "homepage": "https://storybook.js.org/", diff --git a/code/presets/create-react-app/package.json b/code/presets/create-react-app/package.json index c4205df2cd82..ecae0406e329 100644 --- a/code/presets/create-react-app/package.json +++ b/code/presets/create-react-app/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-create-react-app", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Create React App preset", "keywords": [ "storybook" diff --git a/code/presets/html-webpack/package.json b/code/presets/html-webpack/package.json index 006e4420c607..0e7ef0728613 100644 --- a/code/presets/html-webpack/package.json +++ b/code/presets/html-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-html-webpack", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/preact-webpack/package.json b/code/presets/preact-webpack/package.json index 41117bd1edc6..9007c22fd75f 100644 --- a/code/presets/preact-webpack/package.json +++ b/code/presets/preact-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-preact-webpack", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" diff --git a/code/presets/react-webpack/package.json b/code/presets/react-webpack/package.json index f047c7b46f4c..ea5d2ed9877e 100644 --- a/code/presets/react-webpack/package.json +++ b/code/presets/react-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-react-webpack", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading", "keywords": [ "storybook" diff --git a/code/presets/server-webpack/package.json b/code/presets/server-webpack/package.json index baee5080f344..f38f1ca874db 100644 --- a/code/presets/server-webpack/package.json +++ b/code/presets/server-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-server-webpack", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/svelte-webpack/package.json b/code/presets/svelte-webpack/package.json index a15e5e084c25..ad3388c924ea 100644 --- a/code/presets/svelte-webpack/package.json +++ b/code/presets/svelte-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-svelte-webpack", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/vue3-webpack/package.json b/code/presets/vue3-webpack/package.json index c1f50f0d3365..aa72427acb2d 100644 --- a/code/presets/vue3-webpack/package.json +++ b/code/presets/vue3-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-vue3-webpack", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/renderers/html/package.json b/code/renderers/html/package.json index c7cefb70c642..adbb56391d3e 100644 --- a/code/renderers/html/package.json +++ b/code/renderers/html/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook HTML renderer", "keywords": [ "storybook" diff --git a/code/renderers/preact/package.json b/code/renderers/preact/package.json index fe1df6ad774b..dda98eb9375f 100644 --- a/code/renderers/preact/package.json +++ b/code/renderers/preact/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook Preact renderer", "keywords": [ "storybook" diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json index 6abc64587845..eb0f00b27a06 100644 --- a/code/renderers/react/package.json +++ b/code/renderers/react/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook React renderer", "keywords": [ "storybook" diff --git a/code/renderers/server/package.json b/code/renderers/server/package.json index 2b0bf9a31e1f..88eab2fcd790 100644 --- a/code/renderers/server/package.json +++ b/code/renderers/server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook Server renderer", "keywords": [ "storybook" diff --git a/code/renderers/svelte/package.json b/code/renderers/svelte/package.json index d7084c890c0c..2d4b83f3b72f 100644 --- a/code/renderers/svelte/package.json +++ b/code/renderers/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook Svelte renderer", "keywords": [ "storybook" diff --git a/code/renderers/vue3/package.json b/code/renderers/vue3/package.json index 875b5742a5f8..59ceb665eb71 100644 --- a/code/renderers/vue3/package.json +++ b/code/renderers/vue3/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook Vue 3 renderer", "keywords": [ "storybook" diff --git a/code/renderers/web-components/package.json b/code/renderers/web-components/package.json index 73fe293ad3e3..e811f14dbbc5 100644 --- a/code/renderers/web-components/package.json +++ b/code/renderers/web-components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook web-components renderer", "keywords": [ "lit", diff --git a/code/ui/blocks/package.json b/code/ui/blocks/package.json index c32ad8074761..e95125017a8c 100644 --- a/code/ui/blocks/package.json +++ b/code/ui/blocks/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/blocks", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Storybook Doc Blocks", "keywords": [ "storybook" diff --git a/code/ui/components/package.json b/code/ui/components/package.json index 0cb6cc2278d3..d16c2c1192f2 100644 --- a/code/ui/components/package.json +++ b/code/ui/components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/components", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Core Storybook Components", "keywords": [ "storybook" diff --git a/code/ui/manager/package.json b/code/ui/manager/package.json index 1c2507505030..2209fdbfae3f 100644 --- a/code/ui/manager/package.json +++ b/code/ui/manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager", - "version": "8.1.0-alpha.0", + "version": "8.0.0", "description": "Core Storybook UI", "keywords": [ "storybook" From d7c9b1eb8293127d8ccfaf425c379f919cb7cbe4 Mon Sep 17 00:00:00 2001 From: storybook-bot <32066757+storybook-bot@users.noreply.github.com> Date: Tue, 12 Mar 2024 08:09:10 +0000 Subject: [PATCH 66/70] Write changelog for 8.1.0-alpha.0 [skip ci] --- CHANGELOG.prerelease.md | 3 +++ code/package.json | 3 ++- docs/versions/next.json | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.prerelease.md b/CHANGELOG.prerelease.md index aec117765b12..4de85d0173f8 100644 --- a/CHANGELOG.prerelease.md +++ b/CHANGELOG.prerelease.md @@ -1,3 +1,6 @@ +## 8.1.0-alpha.0 + + ## 8.0.0-rc.5 - CLI: Automigration fix version detection of upgrading related packages - [#26410](https://github.com/storybookjs/storybook/pull/26410), thanks @ndelangen! diff --git a/code/package.json b/code/package.json index 9e44d4f7f088..e19b53846567 100644 --- a/code/package.json +++ b/code/package.json @@ -294,5 +294,6 @@ "Dependency Upgrades" ] ] - } + }, + "deferredNextVersion": "8.1.0-alpha.0" } diff --git a/docs/versions/next.json b/docs/versions/next.json index e522ee4c40f2..886c30ce74ce 100644 --- a/docs/versions/next.json +++ b/docs/versions/next.json @@ -1 +1 @@ -{"version":"8.0.0-rc.5","info":{"plain":"- CLI: Automigration fix version detection of upgrading related packages - [#26410](https://github.com/storybookjs/storybook/pull/26410), thanks @ndelangen!"}} +{"version":"8.1.0-alpha.0","info":{"plain":""}} From 0ddb510e9e80a10b1f21e5205c27d68fca897f7c Mon Sep 17 00:00:00 2001 From: storybook-bot <32066757+storybook-bot@users.noreply.github.com> Date: Tue, 12 Mar 2024 08:14:14 +0000 Subject: [PATCH 67/70] Bump version from "8.0.0" to "8.1.0-alpha.0" [skip ci] --- code/addons/a11y/package.json | 2 +- code/addons/actions/package.json | 2 +- code/addons/backgrounds/package.json | 2 +- code/addons/controls/package.json | 2 +- code/addons/docs/package.json | 2 +- code/addons/essentials/package.json | 2 +- code/addons/gfm/package.json | 2 +- code/addons/highlight/package.json | 2 +- code/addons/interactions/package.json | 2 +- code/addons/jest/package.json | 2 +- code/addons/links/package.json | 2 +- code/addons/measure/package.json | 2 +- code/addons/onboarding/package.json | 2 +- code/addons/outline/package.json | 2 +- code/addons/storysource/package.json | 2 +- code/addons/themes/package.json | 2 +- code/addons/toolbars/package.json | 2 +- code/addons/viewport/package.json | 2 +- code/builders/builder-manager/package.json | 2 +- code/builders/builder-vite/package.json | 2 +- code/builders/builder-webpack5/package.json | 2 +- code/frameworks/angular/package.json | 2 +- code/frameworks/ember/package.json | 2 +- code/frameworks/html-vite/package.json | 2 +- code/frameworks/html-webpack5/package.json | 2 +- code/frameworks/nextjs/package.json | 2 +- code/frameworks/preact-vite/package.json | 2 +- code/frameworks/preact-webpack5/package.json | 2 +- code/frameworks/react-vite/package.json | 2 +- code/frameworks/react-webpack5/package.json | 2 +- code/frameworks/server-webpack5/package.json | 2 +- code/frameworks/svelte-vite/package.json | 2 +- code/frameworks/svelte-webpack5/package.json | 2 +- code/frameworks/sveltekit/package.json | 2 +- code/frameworks/vue3-vite/package.json | 2 +- code/frameworks/vue3-webpack5/package.json | 2 +- .../web-components-vite/package.json | 2 +- .../web-components-webpack5/package.json | 2 +- code/lib/channels/package.json | 2 +- code/lib/cli-sb/package.json | 2 +- code/lib/cli-storybook/package.json | 2 +- code/lib/cli/package.json | 2 +- code/lib/client-logger/package.json | 2 +- code/lib/codemod/package.json | 2 +- code/lib/core-common/package.json | 2 +- code/lib/core-common/src/versions.ts | 160 +++++++++--------- code/lib/core-events/package.json | 2 +- code/lib/core-server/package.json | 2 +- code/lib/core-webpack/package.json | 2 +- code/lib/csf-plugin/package.json | 2 +- code/lib/csf-tools/package.json | 2 +- code/lib/docs-tools/package.json | 2 +- code/lib/instrumenter/package.json | 2 +- code/lib/manager-api/package.json | 2 +- code/lib/manager-api/src/version.ts | 2 +- code/lib/node-logger/package.json | 2 +- code/lib/preview-api/package.json | 2 +- code/lib/preview/package.json | 2 +- code/lib/react-dom-shim/package.json | 2 +- code/lib/router/package.json | 2 +- code/lib/source-loader/package.json | 2 +- code/lib/telemetry/package.json | 2 +- code/lib/test/package.json | 2 +- code/lib/theming/package.json | 2 +- code/lib/types/package.json | 2 +- code/package.json | 5 +- code/presets/create-react-app/package.json | 2 +- code/presets/html-webpack/package.json | 2 +- code/presets/preact-webpack/package.json | 2 +- code/presets/react-webpack/package.json | 2 +- code/presets/server-webpack/package.json | 2 +- code/presets/svelte-webpack/package.json | 2 +- code/presets/vue3-webpack/package.json | 2 +- code/renderers/html/package.json | 2 +- code/renderers/preact/package.json | 2 +- code/renderers/react/package.json | 2 +- code/renderers/server/package.json | 2 +- code/renderers/svelte/package.json | 2 +- code/renderers/vue3/package.json | 2 +- code/renderers/web-components/package.json | 2 +- code/ui/blocks/package.json | 2 +- code/ui/components/package.json | 2 +- code/ui/manager/package.json | 2 +- 83 files changed, 163 insertions(+), 164 deletions(-) diff --git a/code/addons/a11y/package.json b/code/addons/a11y/package.json index c20046442614..73f802106851 100644 --- a/code/addons/a11y/package.json +++ b/code/addons/a11y/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-a11y", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Test component compliance with web accessibility standards", "keywords": [ "a11y", diff --git a/code/addons/actions/package.json b/code/addons/actions/package.json index db65386dd902..2f13f8e98a15 100644 --- a/code/addons/actions/package.json +++ b/code/addons/actions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-actions", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Get UI feedback when an action is performed on an interactive element", "keywords": [ "storybook", diff --git a/code/addons/backgrounds/package.json b/code/addons/backgrounds/package.json index 00d2a6d695da..08ea5529d139 100644 --- a/code/addons/backgrounds/package.json +++ b/code/addons/backgrounds/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-backgrounds", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Switch backgrounds to view components in different settings", "keywords": [ "addon", diff --git a/code/addons/controls/package.json b/code/addons/controls/package.json index a2338b8641e1..d59821722737 100644 --- a/code/addons/controls/package.json +++ b/code/addons/controls/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-controls", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Interact with component inputs dynamically in the Storybook UI", "keywords": [ "addon", diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json index 8af4bbb12e47..3c6eaa0d625a 100644 --- a/code/addons/docs/package.json +++ b/code/addons/docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-docs", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Document component usage and properties in Markdown", "keywords": [ "addon", diff --git a/code/addons/essentials/package.json b/code/addons/essentials/package.json index 356ee89f202f..3b9143837d78 100644 --- a/code/addons/essentials/package.json +++ b/code/addons/essentials/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-essentials", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Curated addons to bring out the best of Storybook", "keywords": [ "addon", diff --git a/code/addons/gfm/package.json b/code/addons/gfm/package.json index 7b2b62811b84..b35c226de305 100644 --- a/code/addons/gfm/package.json +++ b/code/addons/gfm/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-mdx-gfm", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "GitHub Flavored Markdown in Storybook", "keywords": [ "addon", diff --git a/code/addons/highlight/package.json b/code/addons/highlight/package.json index 3465be44842d..bae6a544048d 100644 --- a/code/addons/highlight/package.json +++ b/code/addons/highlight/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-highlight", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Highlight DOM nodes within your stories", "keywords": [ "storybook-addons", diff --git a/code/addons/interactions/package.json b/code/addons/interactions/package.json index a3f2fb45fa40..dbb88085b22b 100644 --- a/code/addons/interactions/package.json +++ b/code/addons/interactions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-interactions", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Automate, test and debug user interactions", "keywords": [ "storybook-addons", diff --git a/code/addons/jest/package.json b/code/addons/jest/package.json index 0df0d4980d9c..bd511b8e0b5c 100644 --- a/code/addons/jest/package.json +++ b/code/addons/jest/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-jest", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "React storybook addon that show component jest report", "keywords": [ "addon", diff --git a/code/addons/links/package.json b/code/addons/links/package.json index 0e7cb990631d..686c684f829b 100644 --- a/code/addons/links/package.json +++ b/code/addons/links/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-links", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Link stories together to build demos and prototypes with your UI components", "keywords": [ "addon", diff --git a/code/addons/measure/package.json b/code/addons/measure/package.json index da3ee3d9dae1..1985366f670c 100644 --- a/code/addons/measure/package.json +++ b/code/addons/measure/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-measure", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Inspect layouts by visualizing the box model", "keywords": [ "storybook-addons", diff --git a/code/addons/onboarding/package.json b/code/addons/onboarding/package.json index 1d38b115b238..72726fb3726f 100644 --- a/code/addons/onboarding/package.json +++ b/code/addons/onboarding/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", diff --git a/code/addons/outline/package.json b/code/addons/outline/package.json index 085a7073a49e..f8db2b4ea149 100644 --- a/code/addons/outline/package.json +++ b/code/addons/outline/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-outline", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Outline all elements with CSS to help with layout placement and alignment", "keywords": [ "storybook-addons", diff --git a/code/addons/storysource/package.json b/code/addons/storysource/package.json index 452e6fa417b3..c7326a263ad1 100644 --- a/code/addons/storysource/package.json +++ b/code/addons/storysource/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storysource", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "View a story’s source code to see how it works and paste into your app", "keywords": [ "addon", diff --git a/code/addons/themes/package.json b/code/addons/themes/package.json index 52167d687610..a3599f8288e2 100644 --- a/code/addons/themes/package.json +++ b/code/addons/themes/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-themes", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Switch between multiple themes for you components in Storybook", "keywords": [ "css", diff --git a/code/addons/toolbars/package.json b/code/addons/toolbars/package.json index 48cc8dcd1a80..ec4a11506175 100644 --- a/code/addons/toolbars/package.json +++ b/code/addons/toolbars/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-toolbars", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Create your own toolbar items that control story rendering", "keywords": [ "addon", diff --git a/code/addons/viewport/package.json b/code/addons/viewport/package.json index 60620fc6abab..92208b361584 100644 --- a/code/addons/viewport/package.json +++ b/code/addons/viewport/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-viewport", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Build responsive components by adjusting Storybook’s viewport size and orientation", "keywords": [ "addon", diff --git a/code/builders/builder-manager/package.json b/code/builders/builder-manager/package.json index b48290a00ad5..a31a2e91a374 100644 --- a/code/builders/builder-manager/package.json +++ b/code/builders/builder-manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-manager", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook manager builder", "keywords": [ "storybook" diff --git a/code/builders/builder-vite/package.json b/code/builders/builder-vite/package.json index 99e9a8070838..1d0dd1b7610c 100644 --- a/code/builders/builder-vite/package.json +++ b/code/builders/builder-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-vite", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "A plugin to run and build Storybooks with Vite", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme", "bugs": { diff --git a/code/builders/builder-webpack5/package.json b/code/builders/builder-webpack5/package.json index 058aec7ab747..31d47498ee40 100644 --- a/code/builders/builder-webpack5/package.json +++ b/code/builders/builder-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-webpack5", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json index a2f479091d30..9ffa620ac401 100644 --- a/code/frameworks/angular/package.json +++ b/code/frameworks/angular/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/angular", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Angular: Develop Angular components in isolation with hot reloading.", "keywords": [ "storybook", diff --git a/code/frameworks/ember/package.json b/code/frameworks/ember/package.json index 2c014d985f54..9c796b2f5b7c 100644 --- a/code/frameworks/ember/package.json +++ b/code/frameworks/ember/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/ember", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/frameworks/ember", "bugs": { diff --git a/code/frameworks/html-vite/package.json b/code/frameworks/html-vite/package.json index 527c4de7c0a0..26bcfa5687c7 100644 --- a/code/frameworks/html-vite/package.json +++ b/code/frameworks/html-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-vite", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for HTML and Vite: Develop HTML in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/html-webpack5/package.json b/code/frameworks/html-webpack5/package.json index 01a883691317..7c6e27ae25e1 100644 --- a/code/frameworks/html-webpack5/package.json +++ b/code/frameworks/html-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-webpack5", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/nextjs/package.json b/code/frameworks/nextjs/package.json index 8ea8e72f8d7b..f3a10ee4210d 100644 --- a/code/frameworks/nextjs/package.json +++ b/code/frameworks/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/nextjs", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Next.js", "keywords": [ "storybook", diff --git a/code/frameworks/preact-vite/package.json b/code/frameworks/preact-vite/package.json index d1bb2cffedd4..b8b67128ef22 100644 --- a/code/frameworks/preact-vite/package.json +++ b/code/frameworks/preact-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-vite", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Preact and Vite: Develop Preact components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/preact-webpack5/package.json b/code/frameworks/preact-webpack5/package.json index fe359b400ca7..51bdc48718ad 100644 --- a/code/frameworks/preact-webpack5/package.json +++ b/code/frameworks/preact-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-webpack5", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" diff --git a/code/frameworks/react-vite/package.json b/code/frameworks/react-vite/package.json index 1c355d4fb1a9..da08584b7625 100644 --- a/code/frameworks/react-vite/package.json +++ b/code/frameworks/react-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-vite", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for React and Vite: Develop React components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/react-webpack5/package.json b/code/frameworks/react-webpack5/package.json index 1fe433e9aa9f..3d5ceb3ba80c 100644 --- a/code/frameworks/react-webpack5/package.json +++ b/code/frameworks/react-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-webpack5", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/server-webpack5/package.json b/code/frameworks/server-webpack5/package.json index 265502f9b607..6aa05a0c122d 100644 --- a/code/frameworks/server-webpack5/package.json +++ b/code/frameworks/server-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server-webpack5", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/svelte-vite/package.json b/code/frameworks/svelte-vite/package.json index ddfd94f74cfe..9090da475670 100644 --- a/code/frameworks/svelte-vite/package.json +++ b/code/frameworks/svelte-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-vite", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Svelte and Vite: Develop Svelte components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/svelte-webpack5/package.json b/code/frameworks/svelte-webpack5/package.json index a49afd3eb1bd..db4ed258f40c 100644 --- a/code/frameworks/svelte-webpack5/package.json +++ b/code/frameworks/svelte-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-webpack5", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/sveltekit/package.json b/code/frameworks/sveltekit/package.json index c8d68ff47d08..2acf401c3f24 100644 --- a/code/frameworks/sveltekit/package.json +++ b/code/frameworks/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/sveltekit", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for SvelteKit", "keywords": [ "storybook", diff --git a/code/frameworks/vue3-vite/package.json b/code/frameworks/vue3-vite/package.json index 05d7d8bff07e..44297c5a4047 100644 --- a/code/frameworks/vue3-vite/package.json +++ b/code/frameworks/vue3-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-vite", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Vue3 and Vite: Develop Vue3 components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/vue3-webpack5/package.json b/code/frameworks/vue3-webpack5/package.json index 6038e5de35f1..094fb5103f2d 100644 --- a/code/frameworks/vue3-webpack5/package.json +++ b/code/frameworks/vue3-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-webpack5", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/web-components-vite/package.json b/code/frameworks/web-components-vite/package.json index 7f30b0e62b32..cbe4ffdc247d 100644 --- a/code/frameworks/web-components-vite/package.json +++ b/code/frameworks/web-components-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-vite", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for web-components and Vite: Develop Web Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/web-components-webpack5/package.json b/code/frameworks/web-components-webpack5/package.json index d5f0d2a241f3..866ab3d35e5d 100644 --- a/code/frameworks/web-components-webpack5/package.json +++ b/code/frameworks/web-components-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-webpack5", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.", "keywords": [ "lit", diff --git a/code/lib/channels/package.json b/code/lib/channels/package.json index bd50022489a9..1f583dc9865d 100644 --- a/code/lib/channels/package.json +++ b/code/lib/channels/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channels", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/cli-sb/package.json b/code/lib/cli-sb/package.json index 34aedd948abe..e707547191dd 100644 --- a/code/lib/cli-sb/package.json +++ b/code/lib/cli-sb/package.json @@ -1,6 +1,6 @@ { "name": "sb", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook CLI", "keywords": [ "storybook" diff --git a/code/lib/cli-storybook/package.json b/code/lib/cli-storybook/package.json index 7772af298cee..3eb1547fccc0 100644 --- a/code/lib/cli-storybook/package.json +++ b/code/lib/cli-storybook/package.json @@ -1,6 +1,6 @@ { "name": "storybook", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook CLI", "keywords": [ "storybook" diff --git a/code/lib/cli/package.json b/code/lib/cli/package.json index d49df9ad39ab..01d064068c60 100644 --- a/code/lib/cli/package.json +++ b/code/lib/cli/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/cli", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook's CLI - install, dev, build, upgrade, and more", "keywords": [ "cli", diff --git a/code/lib/client-logger/package.json b/code/lib/client-logger/package.json index b73e0fb65091..83926ddd07ac 100644 --- a/code/lib/client-logger/package.json +++ b/code/lib/client-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-logger", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/codemod/package.json b/code/lib/codemod/package.json index 42f3a6125262..290164c50f5f 100644 --- a/code/lib/codemod/package.json +++ b/code/lib/codemod/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/codemod", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "A collection of codemod scripts written with JSCodeshift", "keywords": [ "storybook" diff --git a/code/lib/core-common/package.json b/code/lib/core-common/package.json index 6d920db16cde..b46b9a1de983 100644 --- a/code/lib/core-common/package.json +++ b/code/lib/core-common/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-common", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/core-common/src/versions.ts b/code/lib/core-common/src/versions.ts index 995915f828e2..0109c9c2a8a3 100644 --- a/code/lib/core-common/src/versions.ts +++ b/code/lib/core-common/src/versions.ts @@ -1,83 +1,83 @@ // auto generated file, do not edit export default { - '@storybook/addon-a11y': '8.0.0', - '@storybook/addon-actions': '8.0.0', - '@storybook/addon-backgrounds': '8.0.0', - '@storybook/addon-controls': '8.0.0', - '@storybook/addon-docs': '8.0.0', - '@storybook/addon-essentials': '8.0.0', - '@storybook/addon-highlight': '8.0.0', - '@storybook/addon-interactions': '8.0.0', - '@storybook/addon-jest': '8.0.0', - '@storybook/addon-links': '8.0.0', - '@storybook/addon-mdx-gfm': '8.0.0', - '@storybook/addon-measure': '8.0.0', - '@storybook/addon-onboarding': '8.0.0', - '@storybook/addon-outline': '8.0.0', - '@storybook/addon-storysource': '8.0.0', - '@storybook/addon-themes': '8.0.0', - '@storybook/addon-toolbars': '8.0.0', - '@storybook/addon-viewport': '8.0.0', - '@storybook/angular': '8.0.0', - '@storybook/blocks': '8.0.0', - '@storybook/builder-manager': '8.0.0', - '@storybook/builder-vite': '8.0.0', - '@storybook/builder-webpack5': '8.0.0', - '@storybook/channels': '8.0.0', - '@storybook/cli': '8.0.0', - '@storybook/client-logger': '8.0.0', - '@storybook/codemod': '8.0.0', - '@storybook/components': '8.0.0', - '@storybook/core-common': '8.0.0', - '@storybook/core-events': '8.0.0', - '@storybook/core-server': '8.0.0', - '@storybook/core-webpack': '8.0.0', - '@storybook/csf-plugin': '8.0.0', - '@storybook/csf-tools': '8.0.0', - '@storybook/docs-tools': '8.0.0', - '@storybook/ember': '8.0.0', - '@storybook/html': '8.0.0', - '@storybook/html-vite': '8.0.0', - '@storybook/html-webpack5': '8.0.0', - '@storybook/instrumenter': '8.0.0', - '@storybook/manager': '8.0.0', - '@storybook/manager-api': '8.0.0', - '@storybook/nextjs': '8.0.0', - '@storybook/node-logger': '8.0.0', - '@storybook/preact': '8.0.0', - '@storybook/preact-vite': '8.0.0', - '@storybook/preact-webpack5': '8.0.0', - '@storybook/preset-create-react-app': '8.0.0', - '@storybook/preset-html-webpack': '8.0.0', - '@storybook/preset-preact-webpack': '8.0.0', - '@storybook/preset-react-webpack': '8.0.0', - '@storybook/preset-server-webpack': '8.0.0', - '@storybook/preset-svelte-webpack': '8.0.0', - '@storybook/preset-vue3-webpack': '8.0.0', - '@storybook/preview': '8.0.0', - '@storybook/preview-api': '8.0.0', - '@storybook/react': '8.0.0', - '@storybook/react-dom-shim': '8.0.0', - '@storybook/react-vite': '8.0.0', - '@storybook/react-webpack5': '8.0.0', - '@storybook/router': '8.0.0', - '@storybook/server': '8.0.0', - '@storybook/server-webpack5': '8.0.0', - '@storybook/source-loader': '8.0.0', - '@storybook/svelte': '8.0.0', - '@storybook/svelte-vite': '8.0.0', - '@storybook/svelte-webpack5': '8.0.0', - '@storybook/sveltekit': '8.0.0', - '@storybook/telemetry': '8.0.0', - '@storybook/test': '8.0.0', - '@storybook/theming': '8.0.0', - '@storybook/types': '8.0.0', - '@storybook/vue3': '8.0.0', - '@storybook/vue3-vite': '8.0.0', - '@storybook/vue3-webpack5': '8.0.0', - '@storybook/web-components': '8.0.0', - '@storybook/web-components-vite': '8.0.0', - '@storybook/web-components-webpack5': '8.0.0', - sb: '8.0.0', - storybook: '8.0.0', + '@storybook/addon-a11y': '8.1.0-alpha.0', + '@storybook/addon-actions': '8.1.0-alpha.0', + '@storybook/addon-backgrounds': '8.1.0-alpha.0', + '@storybook/addon-controls': '8.1.0-alpha.0', + '@storybook/addon-docs': '8.1.0-alpha.0', + '@storybook/addon-essentials': '8.1.0-alpha.0', + '@storybook/addon-highlight': '8.1.0-alpha.0', + '@storybook/addon-interactions': '8.1.0-alpha.0', + '@storybook/addon-jest': '8.1.0-alpha.0', + '@storybook/addon-links': '8.1.0-alpha.0', + '@storybook/addon-mdx-gfm': '8.1.0-alpha.0', + '@storybook/addon-measure': '8.1.0-alpha.0', + '@storybook/addon-onboarding': '8.1.0-alpha.0', + '@storybook/addon-outline': '8.1.0-alpha.0', + '@storybook/addon-storysource': '8.1.0-alpha.0', + '@storybook/addon-themes': '8.1.0-alpha.0', + '@storybook/addon-toolbars': '8.1.0-alpha.0', + '@storybook/addon-viewport': '8.1.0-alpha.0', + '@storybook/angular': '8.1.0-alpha.0', + '@storybook/blocks': '8.1.0-alpha.0', + '@storybook/builder-manager': '8.1.0-alpha.0', + '@storybook/builder-vite': '8.1.0-alpha.0', + '@storybook/builder-webpack5': '8.1.0-alpha.0', + '@storybook/channels': '8.1.0-alpha.0', + '@storybook/cli': '8.1.0-alpha.0', + '@storybook/client-logger': '8.1.0-alpha.0', + '@storybook/codemod': '8.1.0-alpha.0', + '@storybook/components': '8.1.0-alpha.0', + '@storybook/core-common': '8.1.0-alpha.0', + '@storybook/core-events': '8.1.0-alpha.0', + '@storybook/core-server': '8.1.0-alpha.0', + '@storybook/core-webpack': '8.1.0-alpha.0', + '@storybook/csf-plugin': '8.1.0-alpha.0', + '@storybook/csf-tools': '8.1.0-alpha.0', + '@storybook/docs-tools': '8.1.0-alpha.0', + '@storybook/ember': '8.1.0-alpha.0', + '@storybook/html': '8.1.0-alpha.0', + '@storybook/html-vite': '8.1.0-alpha.0', + '@storybook/html-webpack5': '8.1.0-alpha.0', + '@storybook/instrumenter': '8.1.0-alpha.0', + '@storybook/manager': '8.1.0-alpha.0', + '@storybook/manager-api': '8.1.0-alpha.0', + '@storybook/nextjs': '8.1.0-alpha.0', + '@storybook/node-logger': '8.1.0-alpha.0', + '@storybook/preact': '8.1.0-alpha.0', + '@storybook/preact-vite': '8.1.0-alpha.0', + '@storybook/preact-webpack5': '8.1.0-alpha.0', + '@storybook/preset-create-react-app': '8.1.0-alpha.0', + '@storybook/preset-html-webpack': '8.1.0-alpha.0', + '@storybook/preset-preact-webpack': '8.1.0-alpha.0', + '@storybook/preset-react-webpack': '8.1.0-alpha.0', + '@storybook/preset-server-webpack': '8.1.0-alpha.0', + '@storybook/preset-svelte-webpack': '8.1.0-alpha.0', + '@storybook/preset-vue3-webpack': '8.1.0-alpha.0', + '@storybook/preview': '8.1.0-alpha.0', + '@storybook/preview-api': '8.1.0-alpha.0', + '@storybook/react': '8.1.0-alpha.0', + '@storybook/react-dom-shim': '8.1.0-alpha.0', + '@storybook/react-vite': '8.1.0-alpha.0', + '@storybook/react-webpack5': '8.1.0-alpha.0', + '@storybook/router': '8.1.0-alpha.0', + '@storybook/server': '8.1.0-alpha.0', + '@storybook/server-webpack5': '8.1.0-alpha.0', + '@storybook/source-loader': '8.1.0-alpha.0', + '@storybook/svelte': '8.1.0-alpha.0', + '@storybook/svelte-vite': '8.1.0-alpha.0', + '@storybook/svelte-webpack5': '8.1.0-alpha.0', + '@storybook/sveltekit': '8.1.0-alpha.0', + '@storybook/telemetry': '8.1.0-alpha.0', + '@storybook/test': '8.1.0-alpha.0', + '@storybook/theming': '8.1.0-alpha.0', + '@storybook/types': '8.1.0-alpha.0', + '@storybook/vue3': '8.1.0-alpha.0', + '@storybook/vue3-vite': '8.1.0-alpha.0', + '@storybook/vue3-webpack5': '8.1.0-alpha.0', + '@storybook/web-components': '8.1.0-alpha.0', + '@storybook/web-components-vite': '8.1.0-alpha.0', + '@storybook/web-components-webpack5': '8.1.0-alpha.0', + sb: '8.1.0-alpha.0', + storybook: '8.1.0-alpha.0', }; diff --git a/code/lib/core-events/package.json b/code/lib/core-events/package.json index 703abd1c4c43..2fda3e0eb626 100644 --- a/code/lib/core-events/package.json +++ b/code/lib/core-events/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-events", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Event names used in storybook core", "keywords": [ "storybook" diff --git a/code/lib/core-server/package.json b/code/lib/core-server/package.json index 0b2b4cac082a..2b44e68b8a22 100644 --- a/code/lib/core-server/package.json +++ b/code/lib/core-server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-server", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/core-webpack/package.json b/code/lib/core-webpack/package.json index ab98e61903cd..d1e6142601ea 100644 --- a/code/lib/core-webpack/package.json +++ b/code/lib/core-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-webpack", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/csf-plugin/package.json b/code/lib/csf-plugin/package.json index 71ba943c4f06..1761eb435ae1 100644 --- a/code/lib/csf-plugin/package.json +++ b/code/lib/csf-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-plugin", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Enrich CSF files via static analysis", "keywords": [ "storybook" diff --git a/code/lib/csf-tools/package.json b/code/lib/csf-tools/package.json index 5055915d9e0b..f8e58033aff3 100644 --- a/code/lib/csf-tools/package.json +++ b/code/lib/csf-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-tools", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Parse and manipulate CSF and Storybook config files", "keywords": [ "storybook" diff --git a/code/lib/docs-tools/package.json b/code/lib/docs-tools/package.json index 3b701447be5f..8ecc609ee401 100644 --- a/code/lib/docs-tools/package.json +++ b/code/lib/docs-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/docs-tools", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Shared utility functions for frameworks to implement docs", "keywords": [ "storybook" diff --git a/code/lib/instrumenter/package.json b/code/lib/instrumenter/package.json index 9e8578e5b392..c411b7c9138c 100644 --- a/code/lib/instrumenter/package.json +++ b/code/lib/instrumenter/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/instrumenter", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/manager-api/package.json b/code/lib/manager-api/package.json index 71a5a793d9a3..566511f21346 100644 --- a/code/lib/manager-api/package.json +++ b/code/lib/manager-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager-api", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Core Storybook Manager API & Context", "keywords": [ "storybook" diff --git a/code/lib/manager-api/src/version.ts b/code/lib/manager-api/src/version.ts index d785b5b25ee7..f89e3528d2df 100644 --- a/code/lib/manager-api/src/version.ts +++ b/code/lib/manager-api/src/version.ts @@ -1 +1 @@ -export const version = '8.0.0'; +export const version = '8.1.0-alpha.0'; diff --git a/code/lib/node-logger/package.json b/code/lib/node-logger/package.json index ff1c98ab8d65..739cd0051874 100644 --- a/code/lib/node-logger/package.json +++ b/code/lib/node-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/node-logger", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/preview-api/package.json b/code/lib/preview-api/package.json index 61aa33464abc..126be65d5e3a 100644 --- a/code/lib/preview-api/package.json +++ b/code/lib/preview-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview-api", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/preview/package.json b/code/lib/preview/package.json index 77152bf25bda..94821536bc4a 100644 --- a/code/lib/preview/package.json +++ b/code/lib/preview/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/react-dom-shim/package.json b/code/lib/react-dom-shim/package.json index d28cd4ce0bf0..ab34b8084785 100644 --- a/code/lib/react-dom-shim/package.json +++ b/code/lib/react-dom-shim/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-dom-shim", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/router/package.json b/code/lib/router/package.json index 1e68a5f4cb9c..767d40a74d23 100644 --- a/code/lib/router/package.json +++ b/code/lib/router/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/router", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Core Storybook Router", "keywords": [ "storybook" diff --git a/code/lib/source-loader/package.json b/code/lib/source-loader/package.json index 9be474aca84d..65ab30b64945 100644 --- a/code/lib/source-loader/package.json +++ b/code/lib/source-loader/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/source-loader", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Source loader", "keywords": [ "lib", diff --git a/code/lib/telemetry/package.json b/code/lib/telemetry/package.json index d97e3a4b4130..f1f12541c50f 100644 --- a/code/lib/telemetry/package.json +++ b/code/lib/telemetry/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/telemetry", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Telemetry logging for crash reports and usage statistics", "keywords": [ "storybook" diff --git a/code/lib/test/package.json b/code/lib/test/package.json index 5510b4b5f882..6717a6912906 100644 --- a/code/lib/test/package.json +++ b/code/lib/test/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/test", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "", "keywords": [ "storybook" diff --git a/code/lib/theming/package.json b/code/lib/theming/package.json index 4a37093ee71b..1f65e8cb47b5 100644 --- a/code/lib/theming/package.json +++ b/code/lib/theming/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/theming", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Core Storybook Components", "keywords": [ "storybook" diff --git a/code/lib/types/package.json b/code/lib/types/package.json index 378aa60801fb..7441040beb30 100644 --- a/code/lib/types/package.json +++ b/code/lib/types/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/types", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Core Storybook TS Types", "keywords": [ "storybook" diff --git a/code/package.json b/code/package.json index e19b53846567..decb2ffe484c 100644 --- a/code/package.json +++ b/code/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/root", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "private": true, "description": "Storybook root", "homepage": "https://storybook.js.org/", @@ -294,6 +294,5 @@ "Dependency Upgrades" ] ] - }, - "deferredNextVersion": "8.1.0-alpha.0" + } } diff --git a/code/presets/create-react-app/package.json b/code/presets/create-react-app/package.json index ecae0406e329..c4205df2cd82 100644 --- a/code/presets/create-react-app/package.json +++ b/code/presets/create-react-app/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-create-react-app", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Create React App preset", "keywords": [ "storybook" diff --git a/code/presets/html-webpack/package.json b/code/presets/html-webpack/package.json index 0e7ef0728613..006e4420c607 100644 --- a/code/presets/html-webpack/package.json +++ b/code/presets/html-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-html-webpack", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/preact-webpack/package.json b/code/presets/preact-webpack/package.json index 9007c22fd75f..41117bd1edc6 100644 --- a/code/presets/preact-webpack/package.json +++ b/code/presets/preact-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-preact-webpack", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" diff --git a/code/presets/react-webpack/package.json b/code/presets/react-webpack/package.json index ea5d2ed9877e..f047c7b46f4c 100644 --- a/code/presets/react-webpack/package.json +++ b/code/presets/react-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-react-webpack", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading", "keywords": [ "storybook" diff --git a/code/presets/server-webpack/package.json b/code/presets/server-webpack/package.json index f38f1ca874db..baee5080f344 100644 --- a/code/presets/server-webpack/package.json +++ b/code/presets/server-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-server-webpack", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/svelte-webpack/package.json b/code/presets/svelte-webpack/package.json index ad3388c924ea..a15e5e084c25 100644 --- a/code/presets/svelte-webpack/package.json +++ b/code/presets/svelte-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-svelte-webpack", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/vue3-webpack/package.json b/code/presets/vue3-webpack/package.json index aa72427acb2d..c1f50f0d3365 100644 --- a/code/presets/vue3-webpack/package.json +++ b/code/presets/vue3-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-vue3-webpack", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/renderers/html/package.json b/code/renderers/html/package.json index adbb56391d3e..c7cefb70c642 100644 --- a/code/renderers/html/package.json +++ b/code/renderers/html/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook HTML renderer", "keywords": [ "storybook" diff --git a/code/renderers/preact/package.json b/code/renderers/preact/package.json index dda98eb9375f..fe1df6ad774b 100644 --- a/code/renderers/preact/package.json +++ b/code/renderers/preact/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook Preact renderer", "keywords": [ "storybook" diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json index eb0f00b27a06..6abc64587845 100644 --- a/code/renderers/react/package.json +++ b/code/renderers/react/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook React renderer", "keywords": [ "storybook" diff --git a/code/renderers/server/package.json b/code/renderers/server/package.json index 88eab2fcd790..2b0bf9a31e1f 100644 --- a/code/renderers/server/package.json +++ b/code/renderers/server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook Server renderer", "keywords": [ "storybook" diff --git a/code/renderers/svelte/package.json b/code/renderers/svelte/package.json index 2d4b83f3b72f..d7084c890c0c 100644 --- a/code/renderers/svelte/package.json +++ b/code/renderers/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook Svelte renderer", "keywords": [ "storybook" diff --git a/code/renderers/vue3/package.json b/code/renderers/vue3/package.json index 59ceb665eb71..875b5742a5f8 100644 --- a/code/renderers/vue3/package.json +++ b/code/renderers/vue3/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook Vue 3 renderer", "keywords": [ "storybook" diff --git a/code/renderers/web-components/package.json b/code/renderers/web-components/package.json index e811f14dbbc5..73fe293ad3e3 100644 --- a/code/renderers/web-components/package.json +++ b/code/renderers/web-components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook web-components renderer", "keywords": [ "lit", diff --git a/code/ui/blocks/package.json b/code/ui/blocks/package.json index e95125017a8c..c32ad8074761 100644 --- a/code/ui/blocks/package.json +++ b/code/ui/blocks/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/blocks", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Storybook Doc Blocks", "keywords": [ "storybook" diff --git a/code/ui/components/package.json b/code/ui/components/package.json index d16c2c1192f2..0cb6cc2278d3 100644 --- a/code/ui/components/package.json +++ b/code/ui/components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/components", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Core Storybook Components", "keywords": [ "storybook" diff --git a/code/ui/manager/package.json b/code/ui/manager/package.json index 2209fdbfae3f..1c2507505030 100644 --- a/code/ui/manager/package.json +++ b/code/ui/manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager", - "version": "8.0.0", + "version": "8.1.0-alpha.0", "description": "Core Storybook UI", "keywords": [ "storybook" From 218a2ebb40a39a1fc949ef7546e0ea2d7ecdc026 Mon Sep 17 00:00:00 2001 From: storybook-bot <32066757+storybook-bot@users.noreply.github.com> Date: Tue, 12 Mar 2024 08:55:35 +0000 Subject: [PATCH 68/70] Write changelog for 8.1.0-alpha.1 [skip ci] --- CHANGELOG.prerelease.md | 4 ++++ code/package.json | 3 ++- docs/versions/next.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.prerelease.md b/CHANGELOG.prerelease.md index 4de85d0173f8..cae0fb533129 100644 --- a/CHANGELOG.prerelease.md +++ b/CHANGELOG.prerelease.md @@ -1,3 +1,7 @@ +## 8.1.0-alpha.1 + +- Maintenance: Fix performance regressions - [#26411](https://github.com/storybookjs/storybook/pull/26411), thanks @kasperpeulen! + ## 8.1.0-alpha.0 diff --git a/code/package.json b/code/package.json index ea712e8d698a..716d1a846a47 100644 --- a/code/package.json +++ b/code/package.json @@ -295,5 +295,6 @@ "Dependency Upgrades" ] ] - } + }, + "deferredNextVersion": "8.1.0-alpha.1" } diff --git a/docs/versions/next.json b/docs/versions/next.json index 886c30ce74ce..5e0704023df8 100644 --- a/docs/versions/next.json +++ b/docs/versions/next.json @@ -1 +1 @@ -{"version":"8.1.0-alpha.0","info":{"plain":""}} +{"version":"8.1.0-alpha.1","info":{"plain":"- Maintenance: Fix performance regressions - [#26411](https://github.com/storybookjs/storybook/pull/26411), thanks @kasperpeulen!"}} From 7dd433dbe3918d91e63b6a034b288a6e0c6ddf10 Mon Sep 17 00:00:00 2001 From: storybook-bot <32066757+storybook-bot@users.noreply.github.com> Date: Tue, 12 Mar 2024 11:52:35 +0000 Subject: [PATCH 69/70] Bump version from "8.1.0-alpha.0" to "8.1.0-alpha.1" [skip ci] --- code/addons/a11y/package.json | 2 +- code/addons/actions/package.json | 2 +- code/addons/backgrounds/package.json | 2 +- code/addons/controls/package.json | 2 +- code/addons/docs/package.json | 2 +- code/addons/essentials/package.json | 2 +- code/addons/gfm/package.json | 2 +- code/addons/highlight/package.json | 2 +- code/addons/interactions/package.json | 2 +- code/addons/jest/package.json | 2 +- code/addons/links/package.json | 2 +- code/addons/measure/package.json | 2 +- code/addons/onboarding/package.json | 2 +- code/addons/outline/package.json | 2 +- code/addons/storysource/package.json | 2 +- code/addons/themes/package.json | 2 +- code/addons/toolbars/package.json | 2 +- code/addons/viewport/package.json | 2 +- code/builders/builder-manager/package.json | 2 +- code/builders/builder-vite/package.json | 2 +- code/builders/builder-webpack5/package.json | 2 +- code/frameworks/angular/package.json | 2 +- code/frameworks/ember/package.json | 2 +- code/frameworks/html-vite/package.json | 2 +- code/frameworks/html-webpack5/package.json | 2 +- code/frameworks/nextjs/package.json | 2 +- code/frameworks/preact-vite/package.json | 2 +- code/frameworks/preact-webpack5/package.json | 2 +- code/frameworks/react-vite/package.json | 2 +- code/frameworks/react-webpack5/package.json | 2 +- code/frameworks/server-webpack5/package.json | 2 +- code/frameworks/svelte-vite/package.json | 2 +- code/frameworks/svelte-webpack5/package.json | 2 +- code/frameworks/sveltekit/package.json | 2 +- code/frameworks/vue3-vite/package.json | 2 +- code/frameworks/vue3-webpack5/package.json | 2 +- .../web-components-vite/package.json | 2 +- .../web-components-webpack5/package.json | 2 +- code/lib/channels/package.json | 2 +- code/lib/cli-sb/package.json | 2 +- code/lib/cli-storybook/package.json | 2 +- code/lib/cli/package.json | 2 +- code/lib/client-logger/package.json | 2 +- code/lib/codemod/package.json | 2 +- code/lib/core-common/package.json | 2 +- code/lib/core-common/src/versions.ts | 160 +++++++++--------- code/lib/core-events/package.json | 2 +- code/lib/core-server/package.json | 2 +- code/lib/core-webpack/package.json | 2 +- code/lib/csf-plugin/package.json | 2 +- code/lib/csf-tools/package.json | 2 +- code/lib/docs-tools/package.json | 2 +- code/lib/instrumenter/package.json | 2 +- code/lib/manager-api/package.json | 2 +- code/lib/manager-api/src/version.ts | 2 +- code/lib/node-logger/package.json | 2 +- code/lib/preview-api/package.json | 2 +- code/lib/preview/package.json | 2 +- code/lib/react-dom-shim/package.json | 2 +- code/lib/router/package.json | 2 +- code/lib/source-loader/package.json | 2 +- code/lib/telemetry/package.json | 2 +- code/lib/test/package.json | 2 +- code/lib/theming/package.json | 2 +- code/lib/types/package.json | 2 +- code/package.json | 5 +- code/presets/create-react-app/package.json | 2 +- code/presets/html-webpack/package.json | 2 +- code/presets/preact-webpack/package.json | 2 +- code/presets/react-webpack/package.json | 2 +- code/presets/server-webpack/package.json | 2 +- code/presets/svelte-webpack/package.json | 2 +- code/presets/vue3-webpack/package.json | 2 +- code/renderers/html/package.json | 2 +- code/renderers/preact/package.json | 2 +- code/renderers/react/package.json | 2 +- code/renderers/server/package.json | 2 +- code/renderers/svelte/package.json | 2 +- code/renderers/vue3/package.json | 2 +- code/renderers/web-components/package.json | 2 +- code/ui/blocks/package.json | 2 +- code/ui/components/package.json | 2 +- code/ui/manager/package.json | 2 +- 83 files changed, 163 insertions(+), 164 deletions(-) diff --git a/code/addons/a11y/package.json b/code/addons/a11y/package.json index 73f802106851..68c3ea37f99b 100644 --- a/code/addons/a11y/package.json +++ b/code/addons/a11y/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-a11y", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Test component compliance with web accessibility standards", "keywords": [ "a11y", diff --git a/code/addons/actions/package.json b/code/addons/actions/package.json index 2f13f8e98a15..485f6d1b8d1b 100644 --- a/code/addons/actions/package.json +++ b/code/addons/actions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-actions", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Get UI feedback when an action is performed on an interactive element", "keywords": [ "storybook", diff --git a/code/addons/backgrounds/package.json b/code/addons/backgrounds/package.json index 08ea5529d139..2caf3521463a 100644 --- a/code/addons/backgrounds/package.json +++ b/code/addons/backgrounds/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-backgrounds", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Switch backgrounds to view components in different settings", "keywords": [ "addon", diff --git a/code/addons/controls/package.json b/code/addons/controls/package.json index d59821722737..29d450db6287 100644 --- a/code/addons/controls/package.json +++ b/code/addons/controls/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-controls", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Interact with component inputs dynamically in the Storybook UI", "keywords": [ "addon", diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json index 3c6eaa0d625a..394e76fd8c13 100644 --- a/code/addons/docs/package.json +++ b/code/addons/docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-docs", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Document component usage and properties in Markdown", "keywords": [ "addon", diff --git a/code/addons/essentials/package.json b/code/addons/essentials/package.json index 3b9143837d78..afb37f3424a2 100644 --- a/code/addons/essentials/package.json +++ b/code/addons/essentials/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-essentials", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Curated addons to bring out the best of Storybook", "keywords": [ "addon", diff --git a/code/addons/gfm/package.json b/code/addons/gfm/package.json index b35c226de305..62d9fc14d34e 100644 --- a/code/addons/gfm/package.json +++ b/code/addons/gfm/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-mdx-gfm", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "GitHub Flavored Markdown in Storybook", "keywords": [ "addon", diff --git a/code/addons/highlight/package.json b/code/addons/highlight/package.json index bae6a544048d..3e86ac6520a1 100644 --- a/code/addons/highlight/package.json +++ b/code/addons/highlight/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-highlight", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Highlight DOM nodes within your stories", "keywords": [ "storybook-addons", diff --git a/code/addons/interactions/package.json b/code/addons/interactions/package.json index 5a5ddb5cc27b..c8baa6166260 100644 --- a/code/addons/interactions/package.json +++ b/code/addons/interactions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-interactions", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Automate, test and debug user interactions", "keywords": [ "storybook-addons", diff --git a/code/addons/jest/package.json b/code/addons/jest/package.json index bd511b8e0b5c..c878c2004dce 100644 --- a/code/addons/jest/package.json +++ b/code/addons/jest/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-jest", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "React storybook addon that show component jest report", "keywords": [ "addon", diff --git a/code/addons/links/package.json b/code/addons/links/package.json index 686c684f829b..e23c945975df 100644 --- a/code/addons/links/package.json +++ b/code/addons/links/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-links", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Link stories together to build demos and prototypes with your UI components", "keywords": [ "addon", diff --git a/code/addons/measure/package.json b/code/addons/measure/package.json index 1985366f670c..53824330a8d6 100644 --- a/code/addons/measure/package.json +++ b/code/addons/measure/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-measure", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Inspect layouts by visualizing the box model", "keywords": [ "storybook-addons", diff --git a/code/addons/onboarding/package.json b/code/addons/onboarding/package.json index 72726fb3726f..540337fa698b 100644 --- a/code/addons/onboarding/package.json +++ b/code/addons/onboarding/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-onboarding", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook Addon Onboarding - Introduces a new onboarding experience", "keywords": [ "storybook-addons", diff --git a/code/addons/outline/package.json b/code/addons/outline/package.json index f8db2b4ea149..346b5808b5d4 100644 --- a/code/addons/outline/package.json +++ b/code/addons/outline/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-outline", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Outline all elements with CSS to help with layout placement and alignment", "keywords": [ "storybook-addons", diff --git a/code/addons/storysource/package.json b/code/addons/storysource/package.json index c7326a263ad1..d527dcafdadd 100644 --- a/code/addons/storysource/package.json +++ b/code/addons/storysource/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storysource", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "View a story’s source code to see how it works and paste into your app", "keywords": [ "addon", diff --git a/code/addons/themes/package.json b/code/addons/themes/package.json index a3599f8288e2..4a795e2551b2 100644 --- a/code/addons/themes/package.json +++ b/code/addons/themes/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-themes", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Switch between multiple themes for you components in Storybook", "keywords": [ "css", diff --git a/code/addons/toolbars/package.json b/code/addons/toolbars/package.json index ec4a11506175..77859b045279 100644 --- a/code/addons/toolbars/package.json +++ b/code/addons/toolbars/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-toolbars", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Create your own toolbar items that control story rendering", "keywords": [ "addon", diff --git a/code/addons/viewport/package.json b/code/addons/viewport/package.json index 92208b361584..e02f77d74a0d 100644 --- a/code/addons/viewport/package.json +++ b/code/addons/viewport/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-viewport", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Build responsive components by adjusting Storybook’s viewport size and orientation", "keywords": [ "addon", diff --git a/code/builders/builder-manager/package.json b/code/builders/builder-manager/package.json index a31a2e91a374..d692ee77e176 100644 --- a/code/builders/builder-manager/package.json +++ b/code/builders/builder-manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-manager", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook manager builder", "keywords": [ "storybook" diff --git a/code/builders/builder-vite/package.json b/code/builders/builder-vite/package.json index 1d0dd1b7610c..0c871173a00b 100644 --- a/code/builders/builder-vite/package.json +++ b/code/builders/builder-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-vite", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "A plugin to run and build Storybooks with Vite", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme", "bugs": { diff --git a/code/builders/builder-webpack5/package.json b/code/builders/builder-webpack5/package.json index 31d47498ee40..6b19424af541 100644 --- a/code/builders/builder-webpack5/package.json +++ b/code/builders/builder-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json index 9ffa620ac401..726c56bb92fc 100644 --- a/code/frameworks/angular/package.json +++ b/code/frameworks/angular/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/angular", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Angular: Develop Angular components in isolation with hot reloading.", "keywords": [ "storybook", diff --git a/code/frameworks/ember/package.json b/code/frameworks/ember/package.json index 9c796b2f5b7c..8331d7d0b744 100644 --- a/code/frameworks/ember/package.json +++ b/code/frameworks/ember/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/ember", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/frameworks/ember", "bugs": { diff --git a/code/frameworks/html-vite/package.json b/code/frameworks/html-vite/package.json index 26bcfa5687c7..1005843c6bd5 100644 --- a/code/frameworks/html-vite/package.json +++ b/code/frameworks/html-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-vite", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for HTML and Vite: Develop HTML in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/html-webpack5/package.json b/code/frameworks/html-webpack5/package.json index 7c6e27ae25e1..04976553bdfb 100644 --- a/code/frameworks/html-webpack5/package.json +++ b/code/frameworks/html-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/nextjs/package.json b/code/frameworks/nextjs/package.json index f3a10ee4210d..ec578f0a3182 100644 --- a/code/frameworks/nextjs/package.json +++ b/code/frameworks/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/nextjs", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Next.js", "keywords": [ "storybook", diff --git a/code/frameworks/preact-vite/package.json b/code/frameworks/preact-vite/package.json index b8b67128ef22..b801e8425438 100644 --- a/code/frameworks/preact-vite/package.json +++ b/code/frameworks/preact-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-vite", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Preact and Vite: Develop Preact components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/preact-webpack5/package.json b/code/frameworks/preact-webpack5/package.json index 51bdc48718ad..d91973ee5f72 100644 --- a/code/frameworks/preact-webpack5/package.json +++ b/code/frameworks/preact-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" diff --git a/code/frameworks/react-vite/package.json b/code/frameworks/react-vite/package.json index da08584b7625..b6a2256d8f86 100644 --- a/code/frameworks/react-vite/package.json +++ b/code/frameworks/react-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-vite", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for React and Vite: Develop React components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/react-webpack5/package.json b/code/frameworks/react-webpack5/package.json index 3d5ceb3ba80c..f39f13c00312 100644 --- a/code/frameworks/react-webpack5/package.json +++ b/code/frameworks/react-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/server-webpack5/package.json b/code/frameworks/server-webpack5/package.json index 6aa05a0c122d..b9edea51d8e1 100644 --- a/code/frameworks/server-webpack5/package.json +++ b/code/frameworks/server-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/svelte-vite/package.json b/code/frameworks/svelte-vite/package.json index 9090da475670..28bec0d59fde 100644 --- a/code/frameworks/svelte-vite/package.json +++ b/code/frameworks/svelte-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-vite", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Svelte and Vite: Develop Svelte components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/svelte-webpack5/package.json b/code/frameworks/svelte-webpack5/package.json index db4ed258f40c..725b3bb7a131 100644 --- a/code/frameworks/svelte-webpack5/package.json +++ b/code/frameworks/svelte-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/sveltekit/package.json b/code/frameworks/sveltekit/package.json index 2acf401c3f24..4e7f20ff77a8 100644 --- a/code/frameworks/sveltekit/package.json +++ b/code/frameworks/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/sveltekit", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for SvelteKit", "keywords": [ "storybook", diff --git a/code/frameworks/vue3-vite/package.json b/code/frameworks/vue3-vite/package.json index 44297c5a4047..60cc82ddd78c 100644 --- a/code/frameworks/vue3-vite/package.json +++ b/code/frameworks/vue3-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-vite", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Vue3 and Vite: Develop Vue3 components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/vue3-webpack5/package.json b/code/frameworks/vue3-webpack5/package.json index 094fb5103f2d..7575b4b5ad70 100644 --- a/code/frameworks/vue3-webpack5/package.json +++ b/code/frameworks/vue3-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/web-components-vite/package.json b/code/frameworks/web-components-vite/package.json index cbe4ffdc247d..0ad55a968eff 100644 --- a/code/frameworks/web-components-vite/package.json +++ b/code/frameworks/web-components-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-vite", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for web-components and Vite: Develop Web Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/frameworks/web-components-webpack5/package.json b/code/frameworks/web-components-webpack5/package.json index 866ab3d35e5d..58e8127374d7 100644 --- a/code/frameworks/web-components-webpack5/package.json +++ b/code/frameworks/web-components-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components-webpack5", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.", "keywords": [ "lit", diff --git a/code/lib/channels/package.json b/code/lib/channels/package.json index 1f583dc9865d..babfab81a6f3 100644 --- a/code/lib/channels/package.json +++ b/code/lib/channels/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channels", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "", "keywords": [ "storybook" diff --git a/code/lib/cli-sb/package.json b/code/lib/cli-sb/package.json index e707547191dd..cf44c6af83c6 100644 --- a/code/lib/cli-sb/package.json +++ b/code/lib/cli-sb/package.json @@ -1,6 +1,6 @@ { "name": "sb", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook CLI", "keywords": [ "storybook" diff --git a/code/lib/cli-storybook/package.json b/code/lib/cli-storybook/package.json index 3eb1547fccc0..2c1ebe24b774 100644 --- a/code/lib/cli-storybook/package.json +++ b/code/lib/cli-storybook/package.json @@ -1,6 +1,6 @@ { "name": "storybook", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook CLI", "keywords": [ "storybook" diff --git a/code/lib/cli/package.json b/code/lib/cli/package.json index 01d064068c60..a781b00c1a44 100644 --- a/code/lib/cli/package.json +++ b/code/lib/cli/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/cli", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook's CLI - install, dev, build, upgrade, and more", "keywords": [ "cli", diff --git a/code/lib/client-logger/package.json b/code/lib/client-logger/package.json index 83926ddd07ac..1b93dcdb7a93 100644 --- a/code/lib/client-logger/package.json +++ b/code/lib/client-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-logger", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "", "keywords": [ "storybook" diff --git a/code/lib/codemod/package.json b/code/lib/codemod/package.json index 290164c50f5f..2c48f148ba76 100644 --- a/code/lib/codemod/package.json +++ b/code/lib/codemod/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/codemod", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "A collection of codemod scripts written with JSCodeshift", "keywords": [ "storybook" diff --git a/code/lib/core-common/package.json b/code/lib/core-common/package.json index b46b9a1de983..6755631bf49c 100644 --- a/code/lib/core-common/package.json +++ b/code/lib/core-common/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-common", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/core-common/src/versions.ts b/code/lib/core-common/src/versions.ts index 0109c9c2a8a3..7ccc1ac33235 100644 --- a/code/lib/core-common/src/versions.ts +++ b/code/lib/core-common/src/versions.ts @@ -1,83 +1,83 @@ // auto generated file, do not edit export default { - '@storybook/addon-a11y': '8.1.0-alpha.0', - '@storybook/addon-actions': '8.1.0-alpha.0', - '@storybook/addon-backgrounds': '8.1.0-alpha.0', - '@storybook/addon-controls': '8.1.0-alpha.0', - '@storybook/addon-docs': '8.1.0-alpha.0', - '@storybook/addon-essentials': '8.1.0-alpha.0', - '@storybook/addon-highlight': '8.1.0-alpha.0', - '@storybook/addon-interactions': '8.1.0-alpha.0', - '@storybook/addon-jest': '8.1.0-alpha.0', - '@storybook/addon-links': '8.1.0-alpha.0', - '@storybook/addon-mdx-gfm': '8.1.0-alpha.0', - '@storybook/addon-measure': '8.1.0-alpha.0', - '@storybook/addon-onboarding': '8.1.0-alpha.0', - '@storybook/addon-outline': '8.1.0-alpha.0', - '@storybook/addon-storysource': '8.1.0-alpha.0', - '@storybook/addon-themes': '8.1.0-alpha.0', - '@storybook/addon-toolbars': '8.1.0-alpha.0', - '@storybook/addon-viewport': '8.1.0-alpha.0', - '@storybook/angular': '8.1.0-alpha.0', - '@storybook/blocks': '8.1.0-alpha.0', - '@storybook/builder-manager': '8.1.0-alpha.0', - '@storybook/builder-vite': '8.1.0-alpha.0', - '@storybook/builder-webpack5': '8.1.0-alpha.0', - '@storybook/channels': '8.1.0-alpha.0', - '@storybook/cli': '8.1.0-alpha.0', - '@storybook/client-logger': '8.1.0-alpha.0', - '@storybook/codemod': '8.1.0-alpha.0', - '@storybook/components': '8.1.0-alpha.0', - '@storybook/core-common': '8.1.0-alpha.0', - '@storybook/core-events': '8.1.0-alpha.0', - '@storybook/core-server': '8.1.0-alpha.0', - '@storybook/core-webpack': '8.1.0-alpha.0', - '@storybook/csf-plugin': '8.1.0-alpha.0', - '@storybook/csf-tools': '8.1.0-alpha.0', - '@storybook/docs-tools': '8.1.0-alpha.0', - '@storybook/ember': '8.1.0-alpha.0', - '@storybook/html': '8.1.0-alpha.0', - '@storybook/html-vite': '8.1.0-alpha.0', - '@storybook/html-webpack5': '8.1.0-alpha.0', - '@storybook/instrumenter': '8.1.0-alpha.0', - '@storybook/manager': '8.1.0-alpha.0', - '@storybook/manager-api': '8.1.0-alpha.0', - '@storybook/nextjs': '8.1.0-alpha.0', - '@storybook/node-logger': '8.1.0-alpha.0', - '@storybook/preact': '8.1.0-alpha.0', - '@storybook/preact-vite': '8.1.0-alpha.0', - '@storybook/preact-webpack5': '8.1.0-alpha.0', - '@storybook/preset-create-react-app': '8.1.0-alpha.0', - '@storybook/preset-html-webpack': '8.1.0-alpha.0', - '@storybook/preset-preact-webpack': '8.1.0-alpha.0', - '@storybook/preset-react-webpack': '8.1.0-alpha.0', - '@storybook/preset-server-webpack': '8.1.0-alpha.0', - '@storybook/preset-svelte-webpack': '8.1.0-alpha.0', - '@storybook/preset-vue3-webpack': '8.1.0-alpha.0', - '@storybook/preview': '8.1.0-alpha.0', - '@storybook/preview-api': '8.1.0-alpha.0', - '@storybook/react': '8.1.0-alpha.0', - '@storybook/react-dom-shim': '8.1.0-alpha.0', - '@storybook/react-vite': '8.1.0-alpha.0', - '@storybook/react-webpack5': '8.1.0-alpha.0', - '@storybook/router': '8.1.0-alpha.0', - '@storybook/server': '8.1.0-alpha.0', - '@storybook/server-webpack5': '8.1.0-alpha.0', - '@storybook/source-loader': '8.1.0-alpha.0', - '@storybook/svelte': '8.1.0-alpha.0', - '@storybook/svelte-vite': '8.1.0-alpha.0', - '@storybook/svelte-webpack5': '8.1.0-alpha.0', - '@storybook/sveltekit': '8.1.0-alpha.0', - '@storybook/telemetry': '8.1.0-alpha.0', - '@storybook/test': '8.1.0-alpha.0', - '@storybook/theming': '8.1.0-alpha.0', - '@storybook/types': '8.1.0-alpha.0', - '@storybook/vue3': '8.1.0-alpha.0', - '@storybook/vue3-vite': '8.1.0-alpha.0', - '@storybook/vue3-webpack5': '8.1.0-alpha.0', - '@storybook/web-components': '8.1.0-alpha.0', - '@storybook/web-components-vite': '8.1.0-alpha.0', - '@storybook/web-components-webpack5': '8.1.0-alpha.0', - sb: '8.1.0-alpha.0', - storybook: '8.1.0-alpha.0', + '@storybook/addon-a11y': '8.1.0-alpha.1', + '@storybook/addon-actions': '8.1.0-alpha.1', + '@storybook/addon-backgrounds': '8.1.0-alpha.1', + '@storybook/addon-controls': '8.1.0-alpha.1', + '@storybook/addon-docs': '8.1.0-alpha.1', + '@storybook/addon-essentials': '8.1.0-alpha.1', + '@storybook/addon-highlight': '8.1.0-alpha.1', + '@storybook/addon-interactions': '8.1.0-alpha.1', + '@storybook/addon-jest': '8.1.0-alpha.1', + '@storybook/addon-links': '8.1.0-alpha.1', + '@storybook/addon-mdx-gfm': '8.1.0-alpha.1', + '@storybook/addon-measure': '8.1.0-alpha.1', + '@storybook/addon-onboarding': '8.1.0-alpha.1', + '@storybook/addon-outline': '8.1.0-alpha.1', + '@storybook/addon-storysource': '8.1.0-alpha.1', + '@storybook/addon-themes': '8.1.0-alpha.1', + '@storybook/addon-toolbars': '8.1.0-alpha.1', + '@storybook/addon-viewport': '8.1.0-alpha.1', + '@storybook/angular': '8.1.0-alpha.1', + '@storybook/blocks': '8.1.0-alpha.1', + '@storybook/builder-manager': '8.1.0-alpha.1', + '@storybook/builder-vite': '8.1.0-alpha.1', + '@storybook/builder-webpack5': '8.1.0-alpha.1', + '@storybook/channels': '8.1.0-alpha.1', + '@storybook/cli': '8.1.0-alpha.1', + '@storybook/client-logger': '8.1.0-alpha.1', + '@storybook/codemod': '8.1.0-alpha.1', + '@storybook/components': '8.1.0-alpha.1', + '@storybook/core-common': '8.1.0-alpha.1', + '@storybook/core-events': '8.1.0-alpha.1', + '@storybook/core-server': '8.1.0-alpha.1', + '@storybook/core-webpack': '8.1.0-alpha.1', + '@storybook/csf-plugin': '8.1.0-alpha.1', + '@storybook/csf-tools': '8.1.0-alpha.1', + '@storybook/docs-tools': '8.1.0-alpha.1', + '@storybook/ember': '8.1.0-alpha.1', + '@storybook/html': '8.1.0-alpha.1', + '@storybook/html-vite': '8.1.0-alpha.1', + '@storybook/html-webpack5': '8.1.0-alpha.1', + '@storybook/instrumenter': '8.1.0-alpha.1', + '@storybook/manager': '8.1.0-alpha.1', + '@storybook/manager-api': '8.1.0-alpha.1', + '@storybook/nextjs': '8.1.0-alpha.1', + '@storybook/node-logger': '8.1.0-alpha.1', + '@storybook/preact': '8.1.0-alpha.1', + '@storybook/preact-vite': '8.1.0-alpha.1', + '@storybook/preact-webpack5': '8.1.0-alpha.1', + '@storybook/preset-create-react-app': '8.1.0-alpha.1', + '@storybook/preset-html-webpack': '8.1.0-alpha.1', + '@storybook/preset-preact-webpack': '8.1.0-alpha.1', + '@storybook/preset-react-webpack': '8.1.0-alpha.1', + '@storybook/preset-server-webpack': '8.1.0-alpha.1', + '@storybook/preset-svelte-webpack': '8.1.0-alpha.1', + '@storybook/preset-vue3-webpack': '8.1.0-alpha.1', + '@storybook/preview': '8.1.0-alpha.1', + '@storybook/preview-api': '8.1.0-alpha.1', + '@storybook/react': '8.1.0-alpha.1', + '@storybook/react-dom-shim': '8.1.0-alpha.1', + '@storybook/react-vite': '8.1.0-alpha.1', + '@storybook/react-webpack5': '8.1.0-alpha.1', + '@storybook/router': '8.1.0-alpha.1', + '@storybook/server': '8.1.0-alpha.1', + '@storybook/server-webpack5': '8.1.0-alpha.1', + '@storybook/source-loader': '8.1.0-alpha.1', + '@storybook/svelte': '8.1.0-alpha.1', + '@storybook/svelte-vite': '8.1.0-alpha.1', + '@storybook/svelte-webpack5': '8.1.0-alpha.1', + '@storybook/sveltekit': '8.1.0-alpha.1', + '@storybook/telemetry': '8.1.0-alpha.1', + '@storybook/test': '8.1.0-alpha.1', + '@storybook/theming': '8.1.0-alpha.1', + '@storybook/types': '8.1.0-alpha.1', + '@storybook/vue3': '8.1.0-alpha.1', + '@storybook/vue3-vite': '8.1.0-alpha.1', + '@storybook/vue3-webpack5': '8.1.0-alpha.1', + '@storybook/web-components': '8.1.0-alpha.1', + '@storybook/web-components-vite': '8.1.0-alpha.1', + '@storybook/web-components-webpack5': '8.1.0-alpha.1', + sb: '8.1.0-alpha.1', + storybook: '8.1.0-alpha.1', }; diff --git a/code/lib/core-events/package.json b/code/lib/core-events/package.json index 2fda3e0eb626..aaa150c0cd98 100644 --- a/code/lib/core-events/package.json +++ b/code/lib/core-events/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-events", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Event names used in storybook core", "keywords": [ "storybook" diff --git a/code/lib/core-server/package.json b/code/lib/core-server/package.json index 2b44e68b8a22..6a2428523cb6 100644 --- a/code/lib/core-server/package.json +++ b/code/lib/core-server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-server", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/core-webpack/package.json b/code/lib/core-webpack/package.json index d1e6142601ea..22af5e8e2400 100644 --- a/code/lib/core-webpack/package.json +++ b/code/lib/core-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-webpack", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" diff --git a/code/lib/csf-plugin/package.json b/code/lib/csf-plugin/package.json index 1761eb435ae1..258f868ba615 100644 --- a/code/lib/csf-plugin/package.json +++ b/code/lib/csf-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-plugin", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Enrich CSF files via static analysis", "keywords": [ "storybook" diff --git a/code/lib/csf-tools/package.json b/code/lib/csf-tools/package.json index f8e58033aff3..d713f09c8ad6 100644 --- a/code/lib/csf-tools/package.json +++ b/code/lib/csf-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-tools", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Parse and manipulate CSF and Storybook config files", "keywords": [ "storybook" diff --git a/code/lib/docs-tools/package.json b/code/lib/docs-tools/package.json index 8ecc609ee401..e57e812eb307 100644 --- a/code/lib/docs-tools/package.json +++ b/code/lib/docs-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/docs-tools", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Shared utility functions for frameworks to implement docs", "keywords": [ "storybook" diff --git a/code/lib/instrumenter/package.json b/code/lib/instrumenter/package.json index 29e203ea67cb..b7cbb75e41e1 100644 --- a/code/lib/instrumenter/package.json +++ b/code/lib/instrumenter/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/instrumenter", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "", "keywords": [ "storybook" diff --git a/code/lib/manager-api/package.json b/code/lib/manager-api/package.json index 57c7893d0849..8832ff4bd12f 100644 --- a/code/lib/manager-api/package.json +++ b/code/lib/manager-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager-api", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Core Storybook Manager API & Context", "keywords": [ "storybook" diff --git a/code/lib/manager-api/src/version.ts b/code/lib/manager-api/src/version.ts index f89e3528d2df..a6d040b0eac6 100644 --- a/code/lib/manager-api/src/version.ts +++ b/code/lib/manager-api/src/version.ts @@ -1 +1 @@ -export const version = '8.1.0-alpha.0'; +export const version = '8.1.0-alpha.1'; diff --git a/code/lib/node-logger/package.json b/code/lib/node-logger/package.json index 739cd0051874..4bbefd1d2ba4 100644 --- a/code/lib/node-logger/package.json +++ b/code/lib/node-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/node-logger", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "", "keywords": [ "storybook" diff --git a/code/lib/preview-api/package.json b/code/lib/preview-api/package.json index eb830173a4c2..4fb9ccb2070d 100644 --- a/code/lib/preview-api/package.json +++ b/code/lib/preview-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview-api", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "", "keywords": [ "storybook" diff --git a/code/lib/preview/package.json b/code/lib/preview/package.json index 94821536bc4a..c14feb4d1276 100644 --- a/code/lib/preview/package.json +++ b/code/lib/preview/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "", "keywords": [ "storybook" diff --git a/code/lib/react-dom-shim/package.json b/code/lib/react-dom-shim/package.json index ab34b8084785..302d1310b982 100644 --- a/code/lib/react-dom-shim/package.json +++ b/code/lib/react-dom-shim/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-dom-shim", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "", "keywords": [ "storybook" diff --git a/code/lib/router/package.json b/code/lib/router/package.json index 767d40a74d23..1467d74ab9d2 100644 --- a/code/lib/router/package.json +++ b/code/lib/router/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/router", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Core Storybook Router", "keywords": [ "storybook" diff --git a/code/lib/source-loader/package.json b/code/lib/source-loader/package.json index 65ab30b64945..e3d0f73012c0 100644 --- a/code/lib/source-loader/package.json +++ b/code/lib/source-loader/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/source-loader", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Source loader", "keywords": [ "lib", diff --git a/code/lib/telemetry/package.json b/code/lib/telemetry/package.json index f1f12541c50f..71ebdf362fb2 100644 --- a/code/lib/telemetry/package.json +++ b/code/lib/telemetry/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/telemetry", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Telemetry logging for crash reports and usage statistics", "keywords": [ "storybook" diff --git a/code/lib/test/package.json b/code/lib/test/package.json index e10c8ccfedcb..86caf7db8c65 100644 --- a/code/lib/test/package.json +++ b/code/lib/test/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/test", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "", "keywords": [ "storybook" diff --git a/code/lib/theming/package.json b/code/lib/theming/package.json index 1f65e8cb47b5..b6592a4c6f9f 100644 --- a/code/lib/theming/package.json +++ b/code/lib/theming/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/theming", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Core Storybook Components", "keywords": [ "storybook" diff --git a/code/lib/types/package.json b/code/lib/types/package.json index 7441040beb30..7576e7349bb0 100644 --- a/code/lib/types/package.json +++ b/code/lib/types/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/types", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Core Storybook TS Types", "keywords": [ "storybook" diff --git a/code/package.json b/code/package.json index 716d1a846a47..205aacdf8b5e 100644 --- a/code/package.json +++ b/code/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/root", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "private": true, "description": "Storybook root", "homepage": "https://storybook.js.org/", @@ -295,6 +295,5 @@ "Dependency Upgrades" ] ] - }, - "deferredNextVersion": "8.1.0-alpha.1" + } } diff --git a/code/presets/create-react-app/package.json b/code/presets/create-react-app/package.json index c4205df2cd82..c765737ee717 100644 --- a/code/presets/create-react-app/package.json +++ b/code/presets/create-react-app/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-create-react-app", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Create React App preset", "keywords": [ "storybook" diff --git a/code/presets/html-webpack/package.json b/code/presets/html-webpack/package.json index 006e4420c607..1a0ee7ad581b 100644 --- a/code/presets/html-webpack/package.json +++ b/code/presets/html-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-html-webpack", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/preact-webpack/package.json b/code/presets/preact-webpack/package.json index 41117bd1edc6..ab154aea59b0 100644 --- a/code/presets/preact-webpack/package.json +++ b/code/presets/preact-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-preact-webpack", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" diff --git a/code/presets/react-webpack/package.json b/code/presets/react-webpack/package.json index f047c7b46f4c..305e7d84a0af 100644 --- a/code/presets/react-webpack/package.json +++ b/code/presets/react-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-react-webpack", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading", "keywords": [ "storybook" diff --git a/code/presets/server-webpack/package.json b/code/presets/server-webpack/package.json index baee5080f344..0d53be533722 100644 --- a/code/presets/server-webpack/package.json +++ b/code/presets/server-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-server-webpack", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/svelte-webpack/package.json b/code/presets/svelte-webpack/package.json index a15e5e084c25..959ab344288b 100644 --- a/code/presets/svelte-webpack/package.json +++ b/code/presets/svelte-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-svelte-webpack", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/presets/vue3-webpack/package.json b/code/presets/vue3-webpack/package.json index c1f50f0d3365..4a15cdc07239 100644 --- a/code/presets/vue3-webpack/package.json +++ b/code/presets/vue3-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-vue3-webpack", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" diff --git a/code/renderers/html/package.json b/code/renderers/html/package.json index c7cefb70c642..6cfd2e08788e 100644 --- a/code/renderers/html/package.json +++ b/code/renderers/html/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook HTML renderer", "keywords": [ "storybook" diff --git a/code/renderers/preact/package.json b/code/renderers/preact/package.json index fe1df6ad774b..ff6217b7121f 100644 --- a/code/renderers/preact/package.json +++ b/code/renderers/preact/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook Preact renderer", "keywords": [ "storybook" diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json index 6abc64587845..08ace69c3cba 100644 --- a/code/renderers/react/package.json +++ b/code/renderers/react/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook React renderer", "keywords": [ "storybook" diff --git a/code/renderers/server/package.json b/code/renderers/server/package.json index 2b0bf9a31e1f..d30ef3c8d235 100644 --- a/code/renderers/server/package.json +++ b/code/renderers/server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook Server renderer", "keywords": [ "storybook" diff --git a/code/renderers/svelte/package.json b/code/renderers/svelte/package.json index d7084c890c0c..f59527640f7b 100644 --- a/code/renderers/svelte/package.json +++ b/code/renderers/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook Svelte renderer", "keywords": [ "storybook" diff --git a/code/renderers/vue3/package.json b/code/renderers/vue3/package.json index 875b5742a5f8..e97bd3fb8d15 100644 --- a/code/renderers/vue3/package.json +++ b/code/renderers/vue3/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook Vue 3 renderer", "keywords": [ "storybook" diff --git a/code/renderers/web-components/package.json b/code/renderers/web-components/package.json index 73fe293ad3e3..64629f91a4bd 100644 --- a/code/renderers/web-components/package.json +++ b/code/renderers/web-components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook web-components renderer", "keywords": [ "lit", diff --git a/code/ui/blocks/package.json b/code/ui/blocks/package.json index c32ad8074761..5b912136af1d 100644 --- a/code/ui/blocks/package.json +++ b/code/ui/blocks/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/blocks", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Storybook Doc Blocks", "keywords": [ "storybook" diff --git a/code/ui/components/package.json b/code/ui/components/package.json index 0cb6cc2278d3..31987d45b792 100644 --- a/code/ui/components/package.json +++ b/code/ui/components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/components", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Core Storybook Components", "keywords": [ "storybook" diff --git a/code/ui/manager/package.json b/code/ui/manager/package.json index 1c2507505030..6fb2e772f091 100644 --- a/code/ui/manager/package.json +++ b/code/ui/manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager", - "version": "8.1.0-alpha.0", + "version": "8.1.0-alpha.1", "description": "Core Storybook UI", "keywords": [ "storybook" From a8fa52c75c8ae42b46318fd21c8bf8e1b8d3fedf Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 12 Mar 2024 14:04:59 +0100 Subject: [PATCH 70/70] fix --- code/lib/cli/src/automigrate/fixes/vite-config-file.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/vite-config-file.ts b/code/lib/cli/src/automigrate/fixes/vite-config-file.ts index 0b5c96986fa2..e81637dc6cb2 100644 --- a/code/lib/cli/src/automigrate/fixes/vite-config-file.ts +++ b/code/lib/cli/src/automigrate/fixes/vite-config-file.ts @@ -111,7 +111,7 @@ export const viteConfigFile = { `; } return dedent` - Since version 8.0.0, Storybook no longer ships with a built-in Vite config. + Since version 8.0.0, Storybook no longer ships with an in-built Vite config. Please add a vite.config.js file to your project root. You can find more information on how to do this here: