Merge branch 'next' into a11y-polish

This commit is contained in:
Gert Hengeveld 2025-03-25 10:23:08 +01:00 committed by GitHub
commit 870fef667f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
75 changed files with 433 additions and 174 deletions

View File

@ -1,3 +1,7 @@
## 8.6.9
- Next: Fix react aliases in next vite plugin - [#30914](https://github.com/storybookjs/storybook/pull/30914), thanks @kasperpeulen!
## 8.6.8
- Angular: Export all files in Angular package.json - [#30849](https://github.com/storybookjs/storybook/pull/30849), thanks @kasperpeulen!

View File

@ -1,3 +1,12 @@
## 9.0.0-alpha.9
- Addons: Update the Viewport and Background Addon - [#30841](https://github.com/storybookjs/storybook/pull/30841), thanks @ndelangen!
- CLI: Add React Native `.rnstorybook` CLI automigration - [#30882](https://github.com/storybookjs/storybook/pull/30882), thanks @shilman!
- CLI: Add detection for the storybook package being behind any other core packages - [#30861](https://github.com/storybookjs/storybook/pull/30861), thanks @kasperpeulen!
- CLI: Make sure that the add commands logs all output to the console - [#30865](https://github.com/storybookjs/storybook/pull/30865), thanks @kasperpeulen!
- Next: Fix react aliases in next vite plugin - [#30914](https://github.com/storybookjs/storybook/pull/30914), thanks @kasperpeulen!
- Test: Handle non-configurable properties in instrumenter for expect.toThrow - [#30876](https://github.com/storybookjs/storybook/pull/30876), thanks @kasperpeulen!
## 9.0.0-alpha.8
- Angular: Export all files in Angular package.json - [#30849](https://github.com/storybookjs/storybook/pull/30849), thanks @kasperpeulen!

View File

@ -1,6 +1,7 @@
<h1>Migration</h1>
- [From version 8.x to 9.0.0](#from-version-8x-to-900)
- [React-Native config dir renamed](#react-native-config-dir-renamed)
- [Addon viewport and addon backgrounds synchronized configuration and use globals](#addon-viewport-and-addon-backgrounds-synchronized-configuration-and-use-globals)
- [Manager builder removed alias for `util`, `assert` and `process`](#manager-builder-removed-alias-for-util-assert-and-process)
- [Actions addon moved to core](#actions-addon-moved-to-core)
@ -125,17 +126,17 @@
- [Tab addons cannot manually route, Tool addons can filter their visibility via tabId](#tab-addons-cannot-manually-route-tool-addons-can-filter-their-visibility-via-tabid)
- [Removed `config` preset](#removed-config-preset-1)
- [From version 7.5.0 to 7.6.0](#from-version-750-to-760)
- [CommonJS with Vite is deprecated](#commonjs-with-vite-is-deprecated)
- [Using implicit actions during rendering is deprecated](#using-implicit-actions-during-rendering-is-deprecated)
- [typescript.skipBabel deprecated](#typescriptskipbabel-deprecated)
- [Primary doc block accepts of prop](#primary-doc-block-accepts-of-prop)
- [Addons no longer need a peer dependency on React](#addons-no-longer-need-a-peer-dependency-on-react)
- [CommonJS with Vite is deprecated](#commonjs-with-vite-is-deprecated)
- [Using implicit actions during rendering is deprecated](#using-implicit-actions-during-rendering-is-deprecated)
- [typescript.skipBabel deprecated](#typescriptskipbabel-deprecated)
- [Primary doc block accepts of prop](#primary-doc-block-accepts-of-prop)
- [Addons no longer need a peer dependency on React](#addons-no-longer-need-a-peer-dependency-on-react)
- [From version 7.4.0 to 7.5.0](#from-version-740-to-750)
- [`storyStoreV6` and `storiesOf` is deprecated](#storystorev6-and-storiesof-is-deprecated)
- [`storyIndexers` is replaced with `experimental_indexers`](#storyindexers-is-replaced-with-experimental_indexers)
- [`storyStoreV6` and `storiesOf` is deprecated](#storystorev6-and-storiesof-is-deprecated)
- [`storyIndexers` is replaced with `experimental_indexers`](#storyindexers-is-replaced-with-experimental_indexers)
- [From version 7.0.0 to 7.2.0](#from-version-700-to-720)
- [Addon API is more type-strict](#addon-api-is-more-type-strict)
- [Addon-controls hideNoControlsWarning parameter is deprecated](#addon-controls-hidenocontrolswarning-parameter-is-deprecated)
- [Addon API is more type-strict](#addon-api-is-more-type-strict)
- [Addon-controls hideNoControlsWarning parameter is deprecated](#addon-controls-hidenocontrolswarning-parameter-is-deprecated)
- [From version 6.5.x to 7.0.0](#from-version-65x-to-700)
- [7.0 breaking changes](#70-breaking-changes)
- [Dropped support for Node 15 and below](#dropped-support-for-node-15-and-below)
@ -161,7 +162,7 @@
- [Deploying build artifacts](#deploying-build-artifacts)
- [Dropped support for file URLs](#dropped-support-for-file-urls)
- [Serving with nginx](#serving-with-nginx)
- [Ignore story files from node\_modules](#ignore-story-files-from-node_modules)
- [Ignore story files from node_modules](#ignore-story-files-from-node_modules)
- [7.0 Core changes](#70-core-changes)
- [7.0 feature flags removed](#70-feature-flags-removed)
- [Story context is prepared before for supporting fine grained updates](#story-context-is-prepared-before-for-supporting-fine-grained-updates)
@ -175,7 +176,7 @@
- [Addon-interactions: Interactions debugger is now default](#addon-interactions-interactions-debugger-is-now-default)
- [7.0 Vite changes](#70-vite-changes)
- [Vite builder uses Vite config automatically](#vite-builder-uses-vite-config-automatically)
- [Vite cache moved to node\_modules/.cache/.vite-storybook](#vite-cache-moved-to-node_modulescachevite-storybook)
- [Vite cache moved to node_modules/.cache/.vite-storybook](#vite-cache-moved-to-node_modulescachevite-storybook)
- [7.0 Webpack changes](#70-webpack-changes)
- [Webpack4 support discontinued](#webpack4-support-discontinued)
- [Babel mode v7 exclusively](#babel-mode-v7-exclusively)
@ -226,7 +227,7 @@
- [Dropped addon-docs manual babel configuration](#dropped-addon-docs-manual-babel-configuration)
- [Dropped addon-docs manual configuration](#dropped-addon-docs-manual-configuration)
- [Autoplay in docs](#autoplay-in-docs)
- [Removed STORYBOOK\_REACT\_CLASSES global](#removed-storybook_react_classes-global)
- [Removed STORYBOOK_REACT_CLASSES global](#removed-storybook_react_classes-global)
- [7.0 Deprecations and default changes](#70-deprecations-and-default-changes)
- [storyStoreV7 enabled by default](#storystorev7-enabled-by-default)
- [`Story` type deprecated](#story-type-deprecated)
@ -441,6 +442,13 @@
## From version 8.x to 9.0.0
### React-Native config dir renamed
In Storybook 9, React Native (RN) projects use the `.rnstorybook` config directory instead of `.storybook`.
That makes it easier for RN and React Native Web (RNW) storybooks to co-exist in the same project.
To upgrade, either rename your `.storybook` directory to `.rnstorybook` or if you wish to continue using `.storybook` (not recommended), you can use the [`configPath`](https://github.com/storybookjs/react-native#configpath) option to specify `.storybook` manually.
### Addon viewport and addon backgrounds synchronized configuration and use globals
The feature flags: `viewportStoryGlobals` and `backgroundsStoryGlobals` have been removed, please remove these from your `.storybook/main.ts` file.

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-a11y",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Test component compliance with web accessibility standards",
"keywords": [
"a11y",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-backgrounds",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Switch backgrounds to view components in different settings",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-controls",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Interact with component inputs dynamically in the Storybook UI",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-docs",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Document component usage and properties in Markdown",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-essentials",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Curated addons to bring out the best of Storybook",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-mdx-gfm",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "GitHub Flavored Markdown in Storybook",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-highlight",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Highlight DOM nodes within your stories",
"keywords": [
"storybook-addons",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-interactions",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Automate, test and debug user interactions",
"keywords": [
"storybook-addons",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-jest",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "React storybook addon that show component jest report",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-links",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Link stories together to build demos and prototypes with your UI components",
"keywords": [
"storybook-addons",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-measure",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Inspect layouts by visualizing the box model",
"keywords": [
"storybook-addons",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-onboarding",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook Addon Onboarding - Introduces a new onboarding experience",
"keywords": [
"storybook-addons",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-outline",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Outline all elements with CSS to help with layout placement and alignment",
"keywords": [
"storybook-addons",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-storysource",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "View a storys source code to see how it works and paste into your app",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-test",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook addon for testing components",
"keywords": [
"storybook-addons",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-themes",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Switch between multiple themes for you components in Storybook",
"keywords": [
"css",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-toolbars",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Create your own toolbar items that control story rendering",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-viewport",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Build responsive components by adjusting Storybooks viewport size and orientation",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/builder-vite",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "A plugin to run and build Storybooks with Vite",
"homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme",
"bugs": {

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/builder-webpack5",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "storybook",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"

View File

@ -1,66 +1,66 @@
// auto generated file, do not edit
export default {
'@storybook/addon-a11y': '9.0.0-alpha.8',
'@storybook/addon-backgrounds': '9.0.0-alpha.8',
'@storybook/addon-controls': '9.0.0-alpha.8',
'@storybook/addon-docs': '9.0.0-alpha.8',
'@storybook/addon-essentials': '9.0.0-alpha.8',
'@storybook/addon-mdx-gfm': '9.0.0-alpha.8',
'@storybook/addon-highlight': '9.0.0-alpha.8',
'@storybook/addon-interactions': '9.0.0-alpha.8',
'@storybook/addon-jest': '9.0.0-alpha.8',
'@storybook/addon-links': '9.0.0-alpha.8',
'@storybook/addon-measure': '9.0.0-alpha.8',
'@storybook/addon-onboarding': '9.0.0-alpha.8',
'@storybook/addon-outline': '9.0.0-alpha.8',
'@storybook/addon-storysource': '9.0.0-alpha.8',
'@storybook/addon-test': '9.0.0-alpha.8',
'@storybook/addon-themes': '9.0.0-alpha.8',
'@storybook/addon-toolbars': '9.0.0-alpha.8',
'@storybook/addon-viewport': '9.0.0-alpha.8',
'@storybook/builder-vite': '9.0.0-alpha.8',
'@storybook/builder-webpack5': '9.0.0-alpha.8',
storybook: '9.0.0-alpha.8',
'@storybook/angular': '9.0.0-alpha.8',
'@storybook/ember': '9.0.0-alpha.8',
'@storybook/experimental-nextjs-vite': '9.0.0-alpha.8',
'@storybook/html-vite': '9.0.0-alpha.8',
'@storybook/html-webpack5': '9.0.0-alpha.8',
'@storybook/nextjs': '9.0.0-alpha.8',
'@storybook/preact-vite': '9.0.0-alpha.8',
'@storybook/preact-webpack5': '9.0.0-alpha.8',
'@storybook/react-native-web-vite': '9.0.0-alpha.8',
'@storybook/react-vite': '9.0.0-alpha.8',
'@storybook/react-webpack5': '9.0.0-alpha.8',
'@storybook/server-webpack5': '9.0.0-alpha.8',
'@storybook/svelte-vite': '9.0.0-alpha.8',
'@storybook/svelte-webpack5': '9.0.0-alpha.8',
'@storybook/sveltekit': '9.0.0-alpha.8',
'@storybook/vue3-vite': '9.0.0-alpha.8',
'@storybook/vue3-webpack5': '9.0.0-alpha.8',
'@storybook/web-components-vite': '9.0.0-alpha.8',
'@storybook/web-components-webpack5': '9.0.0-alpha.8',
'@storybook/blocks': '9.0.0-alpha.8',
sb: '9.0.0-alpha.8',
'@storybook/cli': '9.0.0-alpha.8',
'@storybook/codemod': '9.0.0-alpha.8',
'@storybook/core-webpack': '9.0.0-alpha.8',
'create-storybook': '9.0.0-alpha.8',
'@storybook/csf-plugin': '9.0.0-alpha.8',
'@storybook/react-dom-shim': '9.0.0-alpha.8',
'@storybook/source-loader': '9.0.0-alpha.8',
'@storybook/preset-create-react-app': '9.0.0-alpha.8',
'@storybook/preset-html-webpack': '9.0.0-alpha.8',
'@storybook/preset-preact-webpack': '9.0.0-alpha.8',
'@storybook/preset-react-webpack': '9.0.0-alpha.8',
'@storybook/preset-server-webpack': '9.0.0-alpha.8',
'@storybook/preset-svelte-webpack': '9.0.0-alpha.8',
'@storybook/preset-vue3-webpack': '9.0.0-alpha.8',
'@storybook/html': '9.0.0-alpha.8',
'@storybook/preact': '9.0.0-alpha.8',
'@storybook/react': '9.0.0-alpha.8',
'@storybook/server': '9.0.0-alpha.8',
'@storybook/svelte': '9.0.0-alpha.8',
'@storybook/vue3': '9.0.0-alpha.8',
'@storybook/web-components': '9.0.0-alpha.8',
'@storybook/addon-a11y': '9.0.0-alpha.9',
'@storybook/addon-backgrounds': '9.0.0-alpha.9',
'@storybook/addon-controls': '9.0.0-alpha.9',
'@storybook/addon-docs': '9.0.0-alpha.9',
'@storybook/addon-essentials': '9.0.0-alpha.9',
'@storybook/addon-mdx-gfm': '9.0.0-alpha.9',
'@storybook/addon-highlight': '9.0.0-alpha.9',
'@storybook/addon-interactions': '9.0.0-alpha.9',
'@storybook/addon-jest': '9.0.0-alpha.9',
'@storybook/addon-links': '9.0.0-alpha.9',
'@storybook/addon-measure': '9.0.0-alpha.9',
'@storybook/addon-onboarding': '9.0.0-alpha.9',
'@storybook/addon-outline': '9.0.0-alpha.9',
'@storybook/addon-storysource': '9.0.0-alpha.9',
'@storybook/addon-test': '9.0.0-alpha.9',
'@storybook/addon-themes': '9.0.0-alpha.9',
'@storybook/addon-toolbars': '9.0.0-alpha.9',
'@storybook/addon-viewport': '9.0.0-alpha.9',
'@storybook/builder-vite': '9.0.0-alpha.9',
'@storybook/builder-webpack5': '9.0.0-alpha.9',
storybook: '9.0.0-alpha.9',
'@storybook/angular': '9.0.0-alpha.9',
'@storybook/ember': '9.0.0-alpha.9',
'@storybook/experimental-nextjs-vite': '9.0.0-alpha.9',
'@storybook/html-vite': '9.0.0-alpha.9',
'@storybook/html-webpack5': '9.0.0-alpha.9',
'@storybook/nextjs': '9.0.0-alpha.9',
'@storybook/preact-vite': '9.0.0-alpha.9',
'@storybook/preact-webpack5': '9.0.0-alpha.9',
'@storybook/react-native-web-vite': '9.0.0-alpha.9',
'@storybook/react-vite': '9.0.0-alpha.9',
'@storybook/react-webpack5': '9.0.0-alpha.9',
'@storybook/server-webpack5': '9.0.0-alpha.9',
'@storybook/svelte-vite': '9.0.0-alpha.9',
'@storybook/svelte-webpack5': '9.0.0-alpha.9',
'@storybook/sveltekit': '9.0.0-alpha.9',
'@storybook/vue3-vite': '9.0.0-alpha.9',
'@storybook/vue3-webpack5': '9.0.0-alpha.9',
'@storybook/web-components-vite': '9.0.0-alpha.9',
'@storybook/web-components-webpack5': '9.0.0-alpha.9',
'@storybook/blocks': '9.0.0-alpha.9',
sb: '9.0.0-alpha.9',
'@storybook/cli': '9.0.0-alpha.9',
'@storybook/codemod': '9.0.0-alpha.9',
'@storybook/core-webpack': '9.0.0-alpha.9',
'create-storybook': '9.0.0-alpha.9',
'@storybook/csf-plugin': '9.0.0-alpha.9',
'@storybook/react-dom-shim': '9.0.0-alpha.9',
'@storybook/source-loader': '9.0.0-alpha.9',
'@storybook/preset-create-react-app': '9.0.0-alpha.9',
'@storybook/preset-html-webpack': '9.0.0-alpha.9',
'@storybook/preset-preact-webpack': '9.0.0-alpha.9',
'@storybook/preset-react-webpack': '9.0.0-alpha.9',
'@storybook/preset-server-webpack': '9.0.0-alpha.9',
'@storybook/preset-svelte-webpack': '9.0.0-alpha.9',
'@storybook/preset-vue3-webpack': '9.0.0-alpha.9',
'@storybook/html': '9.0.0-alpha.9',
'@storybook/preact': '9.0.0-alpha.9',
'@storybook/react': '9.0.0-alpha.9',
'@storybook/server': '9.0.0-alpha.9',
'@storybook/svelte': '9.0.0-alpha.9',
'@storybook/vue3': '9.0.0-alpha.9',
'@storybook/web-components': '9.0.0-alpha.9',
};

View File

@ -1 +1 @@
export const version = '9.0.0-alpha.8';
export const version = '9.0.0-alpha.9';

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/angular",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Angular: Develop Angular components in isolation with hot reloading.",
"keywords": [
"storybook",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/ember",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.",
"homepage": "https://github.com/storybookjs/storybook/tree/next/code/frameworks/ember",
"bugs": {

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/experimental-nextjs-vite",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Next.js and Vite",
"keywords": [
"storybook",
@ -108,7 +108,7 @@
"@storybook/react": "workspace:*",
"@storybook/react-vite": "workspace:*",
"styled-jsx": "5.1.6",
"vite-plugin-storybook-nextjs": "2.0.0--canary.33.a61ad85.0"
"vite-plugin-storybook-nextjs": "2.0.0--canary.33.f53ad45.0"
},
"devDependencies": {
"@types/node": "^22.0.0",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/html-vite",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for HTML and Vite: Develop HTML in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/html-webpack5",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/nextjs",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Next.js",
"keywords": [
"storybook",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preact-vite",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Preact and Vite: Develop Preact components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preact-webpack5",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Preact: Develop Preact Component in isolation.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react-native-web-vite",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Develop react-native components an isolated web environment with hot reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react-vite",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for React and Vite: Develop React components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react-webpack5",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for React: Develop React Component in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/server-webpack5",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/svelte-vite",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Svelte and Vite: Develop Svelte components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/svelte-webpack5",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/sveltekit",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for SvelteKit",
"keywords": [
"storybook",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/vue3-vite",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Vue3 and Vite: Develop Vue3 components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/vue3-webpack5",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/web-components-vite",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for web-components and Vite: Develop Web Components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/web-components-webpack5",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.",
"keywords": [
"lit",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/blocks",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook Doc Blocks",
"keywords": [
"storybook"

View File

@ -59,7 +59,7 @@ export const Stories: FC<StoriesProps> = ({ title = 'Stories', includePrimary =
}
return (
<>
<StyledHeading>{title}</StyledHeading>
{typeof title === 'string' ? <StyledHeading>{title}</StyledHeading> : title}
{stories.map(
(story) =>
story && <DocsStory key={story.id} of={story.moduleExport} expanded __forceInitialArgs />

View File

@ -1,6 +1,6 @@
{
"name": "sb",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook CLI",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/cli",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook CLI",
"keywords": [
"storybook"
@ -49,6 +49,7 @@
"create-storybook": "workspace:*",
"cross-spawn": "^7.0.3",
"envinfo": "^7.7.3",
"execa": "^9.5.2",
"fd-package-json": "^1.2.0",
"find-up": "^5.0.0",
"giget": "^1.0.0",

View File

@ -23,6 +23,7 @@ import { removeArgtypesRegex } from './remove-argtypes-regex';
import { removedGlobalClientAPIs } from './remove-global-client-apis';
import { removeLegacyMDX1 } from './remove-legacymdx1';
import { rendererToFramework } from './renderer-to-framework';
import { rnstorybookConfig } from './rnstorybook-config';
import { sbBinary } from './sb-binary';
import { sbScripts } from './sb-scripts';
import { storyshotsMigration } from './storyshots-migration';
@ -70,6 +71,7 @@ export const allFixes: Fix[] = [
consolidatedImports,
addonExperimentalTest,
rendererToFramework,
rnstorybookConfig,
];
export const initFixes: Fix[] = [eslintPlugin];

View File

@ -0,0 +1,158 @@
import { existsSync } from 'node:fs';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import type { StorybookConfigRaw } from 'storybook/internal/types';
// eslint-disable-next-line depend/ban-dependencies
import { $ } from 'execa';
// eslint-disable-next-line depend/ban-dependencies
import { globby } from 'globby';
import { makePackageManager } from '../helpers/testing-helpers';
import { rnstorybookConfig } from './rnstorybook-config';
const { check } = rnstorybookConfig;
const mockMainConfig: StorybookConfigRaw = {
stories: ['../stories/**/*.stories.@(js|jsx|ts|tsx)'],
};
vi.mock('node:fs');
vi.mock('execa');
vi.mock('globby');
describe('react-native-config fix', () => {
beforeEach(() => {
vi.mocked($).mockClear();
// @ts-expect-error blah
vi.mocked($).mockResolvedValue({ stdout: '' });
vi.mocked(globby).mockResolvedValue(['storybook.requires.ts']);
});
describe('no-ops', () => {
it('when @storybook/react-native is not installed', async () => {
const packageManager = makePackageManager({
devDependencies: {},
});
await expect(
check({
packageManager,
mainConfigPath: '.storybook/main.js',
mainConfig: mockMainConfig,
storybookVersion: '8.0.0',
})
).resolves.toBeNull();
});
it('when .storybook directory does not exist', async () => {
const packageManager = makePackageManager({
devDependencies: {
'@storybook/react-native': '^8.0.0',
},
});
vi.mocked(existsSync).mockReturnValue(false);
await expect(
check({
packageManager,
mainConfigPath: '.storybook/main.js',
mainConfig: mockMainConfig,
storybookVersion: '8.0.0',
})
).resolves.toBeNull();
});
it('when .rnstorybook directory already exists', async () => {
const packageManager = makePackageManager({
devDependencies: {
'@storybook/react-native': '^8.0.0',
},
});
vi.mocked(existsSync).mockReturnValue(true);
await expect(
check({
packageManager,
mainConfigPath: '.storybook/main.js',
mainConfig: mockMainConfig,
storybookVersion: '8.0.0',
})
).resolves.toBeNull();
});
it('when @storybook/react-native is installed and .storybook exists but no requires file', async () => {
const packageManager = makePackageManager({
devDependencies: {
'@storybook/react-native': '^8.0.0',
},
});
// Mock existsSync to return true for .storybook and false for .rnstorybook
vi.mocked(existsSync).mockImplementation((path) => path.toString().includes('.storybook'));
vi.mocked(globby).mockResolvedValue([]);
const result = await check({
packageManager,
mainConfigPath: '.storybook/main.js',
mainConfig: mockMainConfig,
storybookVersion: '8.0.0',
});
expect(result).toBeNull();
});
});
describe('continue', () => {
it('when @storybook/react-native is installed and .storybook exists', async () => {
const packageManager = makePackageManager({
devDependencies: {
'@storybook/react-native': '^8.0.0',
},
});
// Mock existsSync to return true for .storybook and false for .rnstorybook
vi.mocked(existsSync).mockImplementation((path) => path.toString().includes('.storybook'));
const result = await check({
packageManager,
mainConfigPath: '.storybook/main.js',
mainConfig: mockMainConfig,
storybookVersion: '8.0.0',
});
expect(result).toEqual({
storybookDir: expect.stringContaining('.storybook'),
rnStorybookDir: expect.stringContaining('.rnstorybook'),
dotStorybookReferences: [],
});
});
it('when there are references to .storybook in the project', async () => {
// @ts-expect-error blah
vi.mocked($).mockResolvedValue({ stdout: 'a\nb\nc' });
const packageManager = makePackageManager({
devDependencies: {
'@storybook/react-native': '^8.0.0',
},
});
// Mock existsSync to return true for .storybook and false for .rnstorybook
vi.mocked(existsSync).mockImplementation((path) => path.toString().includes('.storybook'));
const result = await check({
packageManager,
mainConfigPath: '.storybook/main.js',
mainConfig: mockMainConfig,
storybookVersion: '8.0.0',
});
expect(result).toEqual({
storybookDir: expect.stringContaining('.storybook'),
rnStorybookDir: expect.stringContaining('.rnstorybook'),
dotStorybookReferences: ['a', 'b', 'c'],
});
});
});
});

View File

@ -0,0 +1,100 @@
import { existsSync } from 'node:fs';
import { readFile, rename, writeFile } from 'node:fs/promises';
import { join } from 'node:path';
import picocolors from 'picocolors';
import { dedent } from 'ts-dedent';
import type { Fix } from '../types';
interface Options {
dotStorybookReferences: string[];
storybookDir: string;
rnStorybookDir: string;
}
/** Replaces all occurrences of a string in a file with another string */
async function renameInFile(filePath: string, oldText: string, newText: string): Promise<void> {
try {
const content = await readFile(filePath, 'utf8');
const updatedContent = content.replaceAll(oldText, newText);
await writeFile(filePath, updatedContent, 'utf8');
} catch (error) {
console.error(`Error updating references in ${filePath}:`, error);
}
}
const getDotStorybookReferences = async () => {
try {
// eslint-disable-next-line depend/ban-dependencies
const { $ } = await import('execa');
const { stdout } = await $`git grep -l \\.storybook`;
return stdout.split('\n').filter(Boolean);
} catch (error) {
return [];
}
};
export const rnstorybookConfig: Fix<Options> = {
id: 'rnstorybook-config',
versionRange: ['<9.0.0', '>=9.0.0'],
async check({ packageManager, mainConfigPath }) {
const allDependencies = await packageManager.getAllDependencies();
if (!allDependencies['@storybook/react-native']) {
return null;
}
// Check if .storybook directory exists
const projectDir = mainConfigPath ? join(mainConfigPath, '..', '..') : process.cwd();
const storybookDir = join(projectDir, '.storybook');
const rnStorybookDir = join(projectDir, '.rnstorybook');
// eslint-disable-next-line depend/ban-dependencies
const { globby } = await import('globby');
const requiresFiles = await globby(join(storybookDir, 'storybook.requires.*'));
if (existsSync(storybookDir) && requiresFiles.length > 0 && !existsSync(rnStorybookDir)) {
const dotStorybookReferences = await getDotStorybookReferences();
return { storybookDir, rnStorybookDir, dotStorybookReferences };
}
return null;
},
prompt({ dotStorybookReferences }) {
const references =
dotStorybookReferences.length > 0
? dedent`
We will update the following files to reference ${picocolors.yellow('.rnstorybook')}:
${dotStorybookReferences.map((ref: string) => picocolors.cyan('- ' + ref)).join('\n')}
`.trim()
: dedent`
Oddly, we did not find any source files that reference the ${picocolors.yellow('.storybook')} directory.
If they exist, please update them by hand to reference ${picocolors.yellow('.rnstorybook')} instead.
`.trim();
return dedent`
In Storybook 9, React Native projects use the ${picocolors.yellow('.rnstorybook')} directory for
configuration instead of ${picocolors.yellow('.storybook')}.
${references}
More info: ${picocolors.cyan('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-native-config-dir-renamed')}
Would you like to automatically move your config files to the new location?`;
},
async run({ result: { storybookDir, rnStorybookDir, dotStorybookReferences }, dryRun }) {
if (!dryRun) {
await Promise.all(
dotStorybookReferences.map(async (ref) => {
await renameInFile(ref, '.storybook', '.rnstorybook');
})
);
await rename(storybookDir, rnStorybookDir);
}
},
};

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/codemod",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "A collection of codemod scripts written with JSCodeshift",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/core-webpack",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "create-storybook",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Initialize Storybook into your project",
"homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/create-storybook",
"bugs": {

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/csf-plugin",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Enrich CSF files via static analysis",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react-dom-shim",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/source-loader",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Source loader",
"keywords": [
"lib",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/root",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"private": true,
"description": "Storybook root",
"homepage": "https://storybook.js.org/",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-create-react-app",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Create React App preset",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-html-webpack",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-preact-webpack",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Preact: Develop Preact Component in isolation.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-react-webpack",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for React: Develop React Component in isolation with Hot Reloading",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-server-webpack",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-svelte-webpack",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-vue3-webpack",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/html",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook HTML renderer",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preact",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook Preact renderer",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook React renderer",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/server",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook Server renderer",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/svelte",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook Svelte renderer",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/vue3",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook Vue 3 renderer",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/web-components",
"version": "9.0.0-alpha.8",
"version": "9.0.0-alpha.9",
"description": "Storybook web-components renderer",
"keywords": [
"lit",

View File

@ -6720,6 +6720,7 @@ __metadata:
create-storybook: "workspace:*"
cross-spawn: "npm:^7.0.3"
envinfo: "npm:^7.7.3"
execa: "npm:^9.5.2"
fd-package-json: "npm:^1.2.0"
find-up: "npm:^5.0.0"
giget: "npm:^1.0.0"
@ -6870,7 +6871,7 @@ __metadata:
next: "npm:^15.0.3"
styled-jsx: "npm:5.1.6"
typescript: "npm:^5.7.3"
vite-plugin-storybook-nextjs: "npm:2.0.0--canary.33.a61ad85.0"
vite-plugin-storybook-nextjs: "npm:2.0.0--canary.33.f53ad45.0"
peerDependencies:
next: ^14.1.0 || ^15.0.0
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
@ -18069,17 +18070,6 @@ __metadata:
languageName: node
linkType: hard
"image-size@npm:^1.1.1":
version: 1.1.1
resolution: "image-size@npm:1.1.1"
dependencies:
queue: "npm:6.0.2"
bin:
image-size: bin/image-size.js
checksum: 10c0/2660470096d12be82195f7e80fe03274689fbd14184afb78eaf66ade7cd06352518325814f88af4bde4b26647889fe49e573129f6e7ba8f5ff5b85cc7f559000
languageName: node
linkType: hard
"image-size@npm:^2.0.0":
version: 2.0.0
resolution: "image-size@npm:2.0.0"
@ -24888,15 +24878,6 @@ __metadata:
languageName: node
linkType: hard
"queue@npm:6.0.2":
version: 6.0.2
resolution: "queue@npm:6.0.2"
dependencies:
inherits: "npm:~2.0.3"
checksum: 10c0/cf987476cc72e7d3aaabe23ccefaab1cd757a2b5e0c8d80b67c9575a6b5e1198807ffd4f0948a3f118b149d1111d810ee773473530b77a5c606673cac2c9c996
languageName: node
linkType: hard
"quick-temp@npm:^0.1.3, quick-temp@npm:^0.1.5, quick-temp@npm:^0.1.8":
version: 0.1.8
resolution: "quick-temp@npm:0.1.8"
@ -27046,7 +27027,7 @@ __metadata:
languageName: node
linkType: hard
"sharp@npm:^0.33.4, sharp@npm:^0.33.5":
"sharp@npm:^0.33.5":
version: 0.33.5
resolution: "sharp@npm:0.33.5"
dependencies:
@ -30189,24 +30170,20 @@ __metadata:
languageName: node
linkType: hard
"vite-plugin-storybook-nextjs@npm:2.0.0--canary.33.a61ad85.0":
version: 2.0.0--canary.33.a61ad85.0
resolution: "vite-plugin-storybook-nextjs@npm:2.0.0--canary.33.a61ad85.0"
"vite-plugin-storybook-nextjs@npm:2.0.0--canary.33.f53ad45.0":
version: 2.0.0--canary.33.f53ad45.0
resolution: "vite-plugin-storybook-nextjs@npm:2.0.0--canary.33.f53ad45.0"
dependencies:
"@next/env": "npm:^15.0.3"
image-size: "npm:^1.1.1"
image-size: "npm:^2.0.0"
magic-string: "npm:^0.30.11"
module-alias: "npm:^2.2.3"
sharp: "npm:^0.33.4"
ts-dedent: "npm:^2.2.0"
peerDependencies:
next: ^14.1.0 || ^15.0.0
storybook: ^9.0.0-0
vite: ^5.0.0 || ^6.0.0
dependenciesMeta:
sharp:
optional: true
checksum: 10c0/b280c87deffde11123ebdef8227c1c0c7f93b39a771e29bf493da2d855d2b7d99a9a19c394d0ac7771302ea91ba4d4e98fb1a9a16322818be93a42706e4b4876
checksum: 10c0/ea9c13de1601dcf02d1d0a7a3a1b2f665b05a03f15a051d5a40480b64adae2a0ac2a2b88ecf550ab15e64c7a67c326b5181e9d1bedc13067e418c64c77d0ad33
languageName: node
linkType: hard

View File

@ -1 +1 @@
{"version":"9.0.0-alpha.8","info":{"plain":"- Angular: Export all files in Angular package.json - [#30849](https://github.com/storybookjs/storybook/pull/30849), thanks @kasperpeulen!\n- CLI: Don't add packageManager entry to package.json automatically - [#30855](https://github.com/storybookjs/storybook/pull/30855), thanks @kasperpeulen!\n- React: Allow portable stories to be used in SSR - [#30847](https://github.com/storybookjs/storybook/pull/30847), thanks @kasperpeulen!\n- Revert \\\"Svelte: Adjust Svelte typings to include Svelte 5 function components\\\" - [#30851](https://github.com/storybookjs/storybook/pull/30851), thanks @kasperpeulen!\n- Svelte: Adjust Svelte typings to include Svelte 5 function components - [#30812](https://github.com/storybookjs/storybook/pull/30812), thanks @dummdidumm!\n- Svelte: Adjust Svelte typings to include Svelte 5 function components - [#30852](https://github.com/storybookjs/storybook/pull/30852), thanks @kasperpeulen!\n- Telemetry: Make sure that telemetry doesn't fail on init - [#30857](https://github.com/storybookjs/storybook/pull/30857), thanks @kasperpeulen!\n- Vite: Update HMR filter to target specific story file types - [#30845](https://github.com/storybookjs/storybook/pull/30845), thanks @kasperpeulen!"}}
{"version":"9.0.0-alpha.9","info":{"plain":"- Addons: Update the Viewport and Background Addon - [#30841](https://github.com/storybookjs/storybook/pull/30841), thanks @ndelangen!\n- CLI: Add React Native `.rnstorybook` CLI automigration - [#30882](https://github.com/storybookjs/storybook/pull/30882), thanks @shilman!\n- CLI: Add detection for the storybook package being behind any other core packages - [#30861](https://github.com/storybookjs/storybook/pull/30861), thanks @kasperpeulen!\n- CLI: Make sure that the add commands logs all output to the console - [#30865](https://github.com/storybookjs/storybook/pull/30865), thanks @kasperpeulen!\n- Next: Fix react aliases in next vite plugin - [#30914](https://github.com/storybookjs/storybook/pull/30914), thanks @kasperpeulen!\n- Test: Handle non-configurable properties in instrumenter for expect.toThrow - [#30876](https://github.com/storybookjs/storybook/pull/30876), thanks @kasperpeulen!"}}