diff --git a/CHANGELOG.prerelease.md b/CHANGELOG.prerelease.md
index 8c9a74c850e..4381e3ec634 100644
--- a/CHANGELOG.prerelease.md
+++ b/CHANGELOG.prerelease.md
@@ -1,3 +1,14 @@
+## 8.4.0-alpha.7
+
+- CLI: Install Svelte CSF v5 in Svelte5 projects - [#29323](https://github.com/storybookjs/storybook/pull/29323), thanks @shilman!
+- Manager: Add tags property to ComponentEntry objects - [#29343](https://github.com/storybookjs/storybook/pull/29343), thanks @Sidnioulz!
+
+## 8.4.0-alpha.6
+
+- Addon-docs, blocks: Prebundle dependencies - [#29301](https://github.com/storybookjs/storybook/pull/29301), thanks @JReinhold!
+- React: Prebundle all of `renderers/react`'s dependencies - [#29298](https://github.com/storybookjs/storybook/pull/29298), thanks @ndelangen!
+- Vite: Cleanup and prebundle dependencies - [#29302](https://github.com/storybookjs/storybook/pull/29302), thanks @JReinhold!
+
## 8.4.0-alpha.5
- Core: Migrate from `express` to `polka` - [#29230](https://github.com/storybookjs/storybook/pull/29230), thanks @43081j!
diff --git a/code/addons/a11y/package.json b/code/addons/a11y/package.json
index b97bf37fcb2..9929da5ad4c 100644
--- a/code/addons/a11y/package.json
+++ b/code/addons/a11y/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-a11y",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Test component compliance with web accessibility standards",
"keywords": [
"a11y",
diff --git a/code/addons/actions/ADVANCED.md b/code/addons/actions/ADVANCED.md
index 7cca56342de..d7132020928 100644
--- a/code/addons/actions/ADVANCED.md
+++ b/code/addons/actions/ADVANCED.md
@@ -1,6 +1,6 @@
## Advanced/Legacy Actions usage
-For basic usage, see the [documentation](https://storybook.js.org/docs/react/essentials/actions).
+For basic usage, see the [documentation](https://storybook.js.org/docs/essentials/actions).
This document describes the pre-6.0 usage of the addon, and as such is no longer recommended (although it will be supported until at least 7.0).
diff --git a/code/addons/actions/README.md b/code/addons/actions/README.md
index 80d2bd5d746..a24f0e7052a 100644
--- a/code/addons/actions/README.md
+++ b/code/addons/actions/README.md
@@ -24,4 +24,4 @@ export default {
## Usage
-The basic usage is documented in the [documentation](https://storybook.js.org/docs/react/essentials/actions). For legacy usage, see the [advanced README](./ADVANCED.md).
+The basic usage is documented in the [documentation](https://storybook.js.org/docs/essentials/actions). For legacy usage, see the [advanced README](./ADVANCED.md).
diff --git a/code/addons/actions/package.json b/code/addons/actions/package.json
index 5f93bceaf0c..2ba921c8222 100644
--- a/code/addons/actions/package.json
+++ b/code/addons/actions/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-actions",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Get UI feedback when an action is performed on an interactive element",
"keywords": [
"storybook",
diff --git a/code/addons/backgrounds/README.md b/code/addons/backgrounds/README.md
index 481ba54bcd2..a720847d4bf 100644
--- a/code/addons/backgrounds/README.md
+++ b/code/addons/backgrounds/README.md
@@ -26,4 +26,4 @@ export default {
## Usage
-The usage is documented in the [documentation](https://storybook.js.org/docs/react/essentials/backgrounds).
+The usage is documented in the [documentation](https://storybook.js.org/docs/essentials/backgrounds).
diff --git a/code/addons/backgrounds/package.json b/code/addons/backgrounds/package.json
index 5463167de70..a0fe7072430 100644
--- a/code/addons/backgrounds/package.json
+++ b/code/addons/backgrounds/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-backgrounds",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Switch backgrounds to view components in different settings",
"keywords": [
"addon",
diff --git a/code/addons/controls/README.md b/code/addons/controls/README.md
index 192a112e07f..b3c097e53ee 100644
--- a/code/addons/controls/README.md
+++ b/code/addons/controls/README.md
@@ -24,7 +24,7 @@ export default {
## Usage
-The usage is documented in the [documentation](https://storybook.js.org/docs/react/essentials/controls).
+The usage is documented in the [documentation](https://storybook.js.org/docs/essentials/controls).
## FAQs
@@ -92,7 +92,7 @@ export const Reflow = () => {
};
```
-And again, as above, this can be rewritten using [fully custom args](https://storybook.js.org/docs/react/essentials/controls#fully-custom-args):
+And again, as above, this can be rewritten using [fully custom args](https://storybook.js.org/docs/essentials/controls#fully-custom-args):
```jsx
export const Reflow = ({ count, label, ...args }) => (
@@ -147,7 +147,7 @@ Basic.args = {
};
```
-The `argTypes` annotation (which can also be applied to individual stories if needed), gives Storybook the hints it needs to generate controls in these unsupported cases. See [control annotations](https://storybook.js.org/docs/react/essentials/controls#annotation) for a full list of control types.
+The `argTypes` annotation (which can also be applied to individual stories if needed), gives Storybook the hints it needs to generate controls in these unsupported cases. See [control annotations](https://storybook.js.org/docs/essentials/controls#annotation) for a full list of control types.
It's also possible that your Storybook is misconfigured. If you think this might be the case, please search through Storybook's [Github issues](https://github.com/storybookjs/storybook/issues), and file a new issue if you don't find one that matches your use case.
diff --git a/code/addons/controls/package.json b/code/addons/controls/package.json
index 7fed67880b1..7f9d214c61f 100644
--- a/code/addons/controls/package.json
+++ b/code/addons/controls/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-controls",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Interact with component inputs dynamically in the Storybook UI",
"keywords": [
"addon",
diff --git a/code/addons/docs/angular/index.js b/code/addons/docs/angular/index.js
index 120597b47b0..fc08456784d 100644
--- a/code/addons/docs/angular/index.js
+++ b/code/addons/docs/angular/index.js
@@ -1,7 +1,6 @@
/* eslint-disable no-underscore-dangle */
-import { global } from '@storybook/global';
export const setCompodocJson = (compodocJson) => {
// @ts-expect-error (Converted from ts-ignore)
- global.__STORYBOOK_COMPODOC_JSON__ = compodocJson;
+ globalThis.__STORYBOOK_COMPODOC_JSON__ = compodocJson;
};
diff --git a/code/addons/docs/docs/props-tables.md b/code/addons/docs/docs/props-tables.md
index 7a44a6c653a..6cb5029b00a 100644
--- a/code/addons/docs/docs/props-tables.md
+++ b/code/addons/docs/docs/props-tables.md
@@ -82,7 +82,7 @@ export const WithControls = (args) => ;
```
-For a very detailed walkthrough of how to write stories that use controls, read the [documentation](https://storybook.js.org/docs/react/essentials/controls).
+For a very detailed walkthrough of how to write stories that use controls, read the [documentation](https://storybook.js.org/docs/essentials/controls).
## Customization
@@ -187,7 +187,7 @@ This would render a row with a modified description, a type display with a dropd
> - `type: 'number'` is shorthand for `type: { name: 'number' }`
> - `control: 'radio'` is shorthand for `control: { type: 'radio' }`
-Controls customization has an entire section in the [documentation](https://storybook.js.org/docs/react/essentials/controls#configuration).
+Controls customization has an entire section in the [documentation](https://storybook.js.org/docs/essentials/controls#configuration).
Here are the possible customizations for the rest of the prop table:
@@ -200,7 +200,7 @@ Here are the possible customizations for the rest of the prop table:
| `table.type.detail` | A longer version of the type (if it's a complex type) |
| `table.defaultValue.summary` | A short version of the default value |
| `table.defaultValue.detail` | A longer version of the default value (if it's a complex value) |
-| `control` | See [`addon-controls` README](https://storybook.js.org/docs/react/essentials/controls#configuration) |
+| `control` | See [`addon-controls` README](https://storybook.js.org/docs/essentials/controls#configuration) |
## Reporting a bug
diff --git a/code/addons/docs/ember/index.js b/code/addons/docs/ember/index.js
index eab68763ab4..8c795c20d21 100644
--- a/code/addons/docs/ember/index.js
+++ b/code/addons/docs/ember/index.js
@@ -1,6 +1,5 @@
/* eslint-disable no-underscore-dangle */
-import { global } from '@storybook/global';
export const setJSONDoc = (jsondoc) => {
- global.__EMBER_GENERATED_DOC_JSON__ = jsondoc;
+ globalThis.__EMBER_GENERATED_DOC_JSON__ = jsondoc;
};
diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json
index 33e1b6f8b96..3ada1b5b284 100644
--- a/code/addons/docs/package.json
+++ b/code/addons/docs/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-docs",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Document component usage and properties in Markdown",
"keywords": [
"addon",
@@ -100,20 +100,19 @@
"@mdx-js/react": "^3.0.0",
"@storybook/blocks": "workspace:*",
"@storybook/csf-plugin": "workspace:*",
- "@storybook/global": "^5.0.0",
"@storybook/react-dom-shim": "workspace:*",
- "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
- "rehype-external-links": "^3.0.0",
- "rehype-slug": "^6.0.0",
"ts-dedent": "^2.0.0"
},
"devDependencies": {
"@mdx-js/mdx": "^3.0.0",
"@rollup/pluginutils": "^5.0.2",
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
+ "rehype-external-links": "^3.0.0",
+ "rehype-slug": "^6.0.0",
"typescript": "^5.3.2",
"vite": "^4.0.4"
},
diff --git a/code/addons/docs/src/preview.ts b/code/addons/docs/src/preview.ts
index 735de9f7223..713352b025e 100644
--- a/code/addons/docs/src/preview.ts
+++ b/code/addons/docs/src/preview.ts
@@ -1,8 +1,6 @@
import type { PreparedStory } from 'storybook/internal/types';
-import { global } from '@storybook/global';
-
-const excludeTags = Object.entries(global.TAGS_OPTIONS ?? {}).reduce(
+const excludeTags = Object.entries(globalThis.TAGS_OPTIONS ?? {}).reduce(
(acc, entry) => {
const [tag, option] = entry;
if ((option as any).excludeFromDocsStories) {
diff --git a/code/addons/docs/template/stories/docs2/button.stories.ts b/code/addons/docs/template/stories/docs2/button.stories.ts
index fd516fe5872..dffc084c7c6 100644
--- a/code/addons/docs/template/stories/docs2/button.stories.ts
+++ b/code/addons/docs/template/stories/docs2/button.stories.ts
@@ -1,5 +1,3 @@
-import { global as globalThis } from '@storybook/global';
-
export default {
component: globalThis.Components.Button,
tags: ['autodocs'],
diff --git a/code/addons/docs/template/stories/docs2/multiple-csf-files-a.stories.ts b/code/addons/docs/template/stories/docs2/multiple-csf-files-a.stories.ts
index c77284a296f..67591f0acac 100644
--- a/code/addons/docs/template/stories/docs2/multiple-csf-files-a.stories.ts
+++ b/code/addons/docs/template/stories/docs2/multiple-csf-files-a.stories.ts
@@ -1,5 +1,3 @@
-import { global as globalThis } from '@storybook/global';
-
export default {
title: 'Multiple CSF Files Same Title',
component: globalThis.Components.Html,
diff --git a/code/addons/docs/template/stories/docs2/multiple-csf-files-b.stories.ts b/code/addons/docs/template/stories/docs2/multiple-csf-files-b.stories.ts
index 955c04af9f9..37f1cd76aa3 100644
--- a/code/addons/docs/template/stories/docs2/multiple-csf-files-b.stories.ts
+++ b/code/addons/docs/template/stories/docs2/multiple-csf-files-b.stories.ts
@@ -1,5 +1,3 @@
-import { global as globalThis } from '@storybook/global';
-
export default {
title: 'Multiple CSF Files Same Title',
component: globalThis.Components.Html,
diff --git a/code/addons/docs/template/stories/docspage/autoplay.stories.ts b/code/addons/docs/template/stories/docspage/autoplay.stories.ts
index 6ebdc43b3ad..03d1388f2fb 100644
--- a/code/addons/docs/template/stories/docspage/autoplay.stories.ts
+++ b/code/addons/docs/template/stories/docspage/autoplay.stories.ts
@@ -1,4 +1,3 @@
-import { global as globalThis } from '@storybook/global';
import { expect, within } from '@storybook/test';
export default {
diff --git a/code/addons/docs/template/stories/docspage/basic.stories.ts b/code/addons/docs/template/stories/docspage/basic.stories.ts
index 3dc35191d7b..a9ea37650fc 100644
--- a/code/addons/docs/template/stories/docspage/basic.stories.ts
+++ b/code/addons/docs/template/stories/docspage/basic.stories.ts
@@ -1,4 +1,3 @@
-import { global as globalThis } from '@storybook/global';
import { fn } from '@storybook/test';
export default {
diff --git a/code/addons/docs/template/stories/docspage/description.stories.ts b/code/addons/docs/template/stories/docspage/description.stories.ts
index e6a2eac1587..3d70e317511 100644
--- a/code/addons/docs/template/stories/docspage/description.stories.ts
+++ b/code/addons/docs/template/stories/docspage/description.stories.ts
@@ -1,5 +1,3 @@
-import { global as globalThis } from '@storybook/global';
-
export default {
component: globalThis.Components.Button,
subcomponents: {
diff --git a/code/addons/docs/template/stories/docspage/error.stories.ts b/code/addons/docs/template/stories/docspage/error.stories.ts
index eae587a16bd..4e7be89ad48 100644
--- a/code/addons/docs/template/stories/docspage/error.stories.ts
+++ b/code/addons/docs/template/stories/docspage/error.stories.ts
@@ -1,5 +1,3 @@
-import { global as globalThis } from '@storybook/global';
-
export default {
component: globalThis.Components.Button,
tags: ['autodocs', '!test', '!vitest'],
diff --git a/code/addons/docs/template/stories/docspage/extract-description.stories.ts b/code/addons/docs/template/stories/docspage/extract-description.stories.ts
index cb5986ac7db..48cd9f91cd7 100644
--- a/code/addons/docs/template/stories/docspage/extract-description.stories.ts
+++ b/code/addons/docs/template/stories/docspage/extract-description.stories.ts
@@ -1,5 +1,3 @@
-import { global as globalThis } from '@storybook/global';
-
export default {
component: globalThis.Components.Button,
tags: ['autodocs'],
diff --git a/code/addons/docs/template/stories/docspage/iframe.stories.ts b/code/addons/docs/template/stories/docspage/iframe.stories.ts
index 03ee6b8df17..cdb2e55ab45 100644
--- a/code/addons/docs/template/stories/docspage/iframe.stories.ts
+++ b/code/addons/docs/template/stories/docspage/iframe.stories.ts
@@ -1,5 +1,3 @@
-import { global as globalThis } from '@storybook/global';
-
export default {
component: globalThis.Components.Button,
tags: ['autodocs'],
diff --git a/code/addons/docs/template/stories/docspage/overflow.stories.ts b/code/addons/docs/template/stories/docspage/overflow.stories.ts
index 71893031af5..471bb6d50a6 100644
--- a/code/addons/docs/template/stories/docspage/overflow.stories.ts
+++ b/code/addons/docs/template/stories/docspage/overflow.stories.ts
@@ -1,5 +1,3 @@
-import { global as globalThis } from '@storybook/global';
-
export default {
component: globalThis.Components.Pre,
tags: ['autodocs'],
diff --git a/code/addons/docs/template/stories/docspage/override.stories.ts b/code/addons/docs/template/stories/docspage/override.stories.ts
index 18d2d4e5e25..26d012580e6 100644
--- a/code/addons/docs/template/stories/docspage/override.stories.ts
+++ b/code/addons/docs/template/stories/docspage/override.stories.ts
@@ -1,5 +1,3 @@
-import { global as globalThis } from '@storybook/global';
-
// FIXME: do this using basic React functions for multi-framework
// once sandbox linking is working
//
diff --git a/code/addons/docs/template/stories/docspage/source.stories.ts b/code/addons/docs/template/stories/docspage/source.stories.ts
index faa8517dc54..78100e5b4a5 100644
--- a/code/addons/docs/template/stories/docspage/source.stories.ts
+++ b/code/addons/docs/template/stories/docspage/source.stories.ts
@@ -1,7 +1,5 @@
import type { StoryContext } from 'storybook/internal/types';
-import { global as globalThis } from '@storybook/global';
-
import { dedent } from 'ts-dedent';
export default {
diff --git a/code/addons/docs/template/stories/toc/basic.stories.ts b/code/addons/docs/template/stories/toc/basic.stories.ts
index 2a81297d25b..4e531d0efe3 100644
--- a/code/addons/docs/template/stories/toc/basic.stories.ts
+++ b/code/addons/docs/template/stories/toc/basic.stories.ts
@@ -1,6 +1,3 @@
-import { global as globalThis } from '@storybook/global';
-import { fn } from '@storybook/test';
-
export default {
component: globalThis.Components.Button,
tags: ['autodocs'],
diff --git a/code/addons/docs/template/stories/toc/custom-selector.stories.ts b/code/addons/docs/template/stories/toc/custom-selector.stories.ts
index e031366aa82..09caac6a69d 100644
--- a/code/addons/docs/template/stories/toc/custom-selector.stories.ts
+++ b/code/addons/docs/template/stories/toc/custom-selector.stories.ts
@@ -1,5 +1,3 @@
-import { global as globalThis } from '@storybook/global';
-
export default {
component: globalThis.Components.Button,
tags: ['autodocs'],
diff --git a/code/addons/docs/template/stories/toc/custom-title.stories.ts b/code/addons/docs/template/stories/toc/custom-title.stories.ts
index 69303e905cd..cc20cdde563 100644
--- a/code/addons/docs/template/stories/toc/custom-title.stories.ts
+++ b/code/addons/docs/template/stories/toc/custom-title.stories.ts
@@ -1,5 +1,3 @@
-import { global as globalThis } from '@storybook/global';
-
export default {
component: globalThis.Components.Button,
tags: ['autodocs'],
diff --git a/code/addons/docs/template/stories/toc/ignore-selector.stories.ts b/code/addons/docs/template/stories/toc/ignore-selector.stories.ts
index 61ae6d12f2a..793ae6c5bba 100644
--- a/code/addons/docs/template/stories/toc/ignore-selector.stories.ts
+++ b/code/addons/docs/template/stories/toc/ignore-selector.stories.ts
@@ -1,5 +1,3 @@
-import { global as globalThis } from '@storybook/global';
-
export default {
component: globalThis.Components.Button,
tags: ['autodocs'],
diff --git a/code/addons/essentials/package.json b/code/addons/essentials/package.json
index 9c445ceb640..23b976a6ee1 100644
--- a/code/addons/essentials/package.json
+++ b/code/addons/essentials/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-essentials",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 ab5008f40d5..62fea2facbe 100644
--- a/code/addons/gfm/package.json
+++ b/code/addons/gfm/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-mdx-gfm",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "GitHub Flavored Markdown in Storybook",
"keywords": [
"addon",
diff --git a/code/addons/highlight/package.json b/code/addons/highlight/package.json
index 8f617bc6b1a..2fc94cadf86 100644
--- a/code/addons/highlight/package.json
+++ b/code/addons/highlight/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-highlight",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 0bb1f7853d8..8aa79d677ae 100644
--- a/code/addons/interactions/package.json
+++ b/code/addons/interactions/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-interactions",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 ba729316a2f..8d3b62b9477 100644
--- a/code/addons/jest/package.json
+++ b/code/addons/jest/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-jest",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 3fd15885eaf..87017f5a5ca 100644
--- a/code/addons/links/package.json
+++ b/code/addons/links/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-links",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Link stories together to build demos and prototypes with your UI components",
"keywords": [
"storybook-addons",
diff --git a/code/addons/measure/package.json b/code/addons/measure/package.json
index 7093841b641..4ee59d9b1a1 100644
--- a/code/addons/measure/package.json
+++ b/code/addons/measure/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-measure",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 499b446f275..1866a4c7a23 100644
--- a/code/addons/onboarding/package.json
+++ b/code/addons/onboarding/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-onboarding",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 b1d15df673e..a77565af1a5 100644
--- a/code/addons/outline/package.json
+++ b/code/addons/outline/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-outline",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 cddf13e41cf..91686a29764 100644
--- a/code/addons/storysource/package.json
+++ b/code/addons/storysource/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-storysource",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "View a story’s source code to see how it works and paste into your app",
"keywords": [
"addon",
diff --git a/code/addons/test/package.json b/code/addons/test/package.json
index 421961c4d94..91eda6ad642 100644
--- a/code/addons/test/package.json
+++ b/code/addons/test/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/experimental-addon-test",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Integrate Vitest with Storybook",
"keywords": [
"storybook-addons",
diff --git a/code/addons/themes/package.json b/code/addons/themes/package.json
index 69b4b781c12..b8c6558b377 100644
--- a/code/addons/themes/package.json
+++ b/code/addons/themes/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-themes",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Switch between multiple themes for you components in Storybook",
"keywords": [
"css",
diff --git a/code/addons/toolbars/README.md b/code/addons/toolbars/README.md
index dcb9b9c4dee..2e37dc6c616 100644
--- a/code/addons/toolbars/README.md
+++ b/code/addons/toolbars/README.md
@@ -28,7 +28,7 @@ export default {
## Usage
-The usage is documented in the [documentation](https://storybook.js.org/docs/react/essentials/toolbars-and-globals).
+The usage is documented in the [documentation](https://storybook.js.org/docs/essentials/toolbars-and-globals).
## FAQs
@@ -40,6 +40,6 @@ The primary difference between the two packages is that `addon-toolbars` makes u
- **Standardization**. Args are built into Storybook in 6.x. Since `addon-toolbars` is based on args, you don't need to learn any addon-specific APIs to use it.
-- **Ergonomics**. Global args are easy to consume [in stories](https://storybook.js.org/docs/react/essentials/toolbars-and-globals#consuming-globals-from-within-a-story), in [Storybook Docs](https://github.com/storybookjs/storybook/tree/next/code/addons/docs), or even in other addons.
+- **Ergonomics**. Global args are easy to consume [in stories](https://storybook.js.org/docs/essentials/toolbars-and-globals#consuming-globals-from-within-a-story), in [Storybook Docs](https://github.com/storybookjs/storybook/tree/next/code/addons/docs), or even in other addons.
* **Framework compatibility**. Args are completely framework-independent, so `addon-toolbars` is compatible with React, Vue 3, Angular, etc. out of the box with no framework logic needed in the addon.
diff --git a/code/addons/toolbars/package.json b/code/addons/toolbars/package.json
index 3c4a5dd7454..76a1b7027e1 100644
--- a/code/addons/toolbars/package.json
+++ b/code/addons/toolbars/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-toolbars",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Create your own toolbar items that control story rendering",
"keywords": [
"addon",
diff --git a/code/addons/viewport/README.md b/code/addons/viewport/README.md
index 7975688745f..6444f180db9 100644
--- a/code/addons/viewport/README.md
+++ b/code/addons/viewport/README.md
@@ -26,4 +26,4 @@ You should now be able to see the viewport addon icon in the toolbar at the top
## Usage
-The usage is documented in the [documentation](https://storybook.js.org/docs/react/essentials/viewport).
+The usage is documented in the [documentation](https://storybook.js.org/docs/essentials/viewport).
diff --git a/code/addons/viewport/package.json b/code/addons/viewport/package.json
index 2f4bba34919..89f88480704 100644
--- a/code/addons/viewport/package.json
+++ b/code/addons/viewport/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/addon-viewport",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Build responsive components by adjusting Storybook’s viewport size and orientation",
"keywords": [
"addon",
diff --git a/code/builders/builder-vite/package.json b/code/builders/builder-vite/package.json
index 7e435a83b16..4486e411c45 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "A plugin to run and build Storybooks with Vite",
"homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme",
"bugs": {
@@ -44,39 +44,24 @@
},
"dependencies": {
"@storybook/csf-plugin": "workspace:*",
- "@types/find-cache-dir": "^3.2.1",
"browser-assert": "^1.2.1",
- "es-module-lexer": "^1.5.0",
- "find-cache-dir": "^3.0.0",
- "magic-string": "^0.30.0",
"ts-dedent": "^2.0.0"
},
"devDependencies": {
+ "@types/find-cache-dir": "^3.2.1",
"@types/node": "^22.0.0",
+ "es-module-lexer": "^1.5.0",
+ "find-cache-dir": "^3.0.0",
"glob": "^10.0.0",
+ "magic-string": "^0.30.0",
"polka": "^1.0.0-next.28",
"sirv": "^2.0.4",
"slash": "^5.0.0",
- "typescript": "^5.3.2",
"vite": "^4.0.4"
},
"peerDependencies": {
- "@preact/preset-vite": "*",
"storybook": "workspace:^",
- "typescript": ">= 4.3.x",
- "vite": "^4.0.0 || ^5.0.0",
- "vite-plugin-glimmerx": "*"
- },
- "peerDependenciesMeta": {
- "@preact/preset-vite": {
- "optional": true
- },
- "typescript": {
- "optional": true
- },
- "vite-plugin-glimmerx": {
- "optional": true
- }
+ "vite": "^4.0.0 || ^5.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/code/builders/builder-vite/src/vite-config.ts b/code/builders/builder-vite/src/vite-config.ts
index e3eff12d038..2ab46f81de8 100644
--- a/code/builders/builder-vite/src/vite-config.ts
+++ b/code/builders/builder-vite/src/vite-config.ts
@@ -119,11 +119,5 @@ export async function pluginConfig(options: Options) {
pluginWebpackStats({ workingDir: process.cwd() }),
] as PluginOption[];
- // TODO: framework doesn't exist, should move into framework when/if built
- if (frameworkName === '@storybook/glimmerx-vite') {
- const plugin = require('vite-plugin-glimmerx/index.cjs');
- plugins.push(plugin.default());
- }
-
return plugins;
}
diff --git a/code/builders/builder-webpack5/package.json b/code/builders/builder-webpack5/package.json
index bb1f97290dd..c4ecddf9347 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
diff --git a/code/core/package.json b/code/core/package.json
index a5f179a4331..fe494dcc815 100644
--- a/code/core/package.json
+++ b/code/core/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/core",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
@@ -340,7 +340,6 @@
"boxen": "^7.1.1",
"browser-dtector": "^3.4.0",
"camelcase": "^8.0.0",
- "chai": "^4.4.1",
"cli-table3": "^0.6.1",
"commander": "^12.1.0",
"comment-parser": "^1.4.1",
diff --git a/code/core/src/common/versions.ts b/code/core/src/common/versions.ts
index fd7fdcadb3a..03638c05d5a 100644
--- a/code/core/src/common/versions.ts
+++ b/code/core/src/common/versions.ts
@@ -1,87 +1,87 @@
// auto generated file, do not edit
export default {
- '@storybook/addon-a11y': '8.4.0-alpha.5',
- '@storybook/addon-actions': '8.4.0-alpha.5',
- '@storybook/addon-backgrounds': '8.4.0-alpha.5',
- '@storybook/addon-controls': '8.4.0-alpha.5',
- '@storybook/addon-docs': '8.4.0-alpha.5',
- '@storybook/addon-essentials': '8.4.0-alpha.5',
- '@storybook/addon-mdx-gfm': '8.4.0-alpha.5',
- '@storybook/addon-highlight': '8.4.0-alpha.5',
- '@storybook/addon-interactions': '8.4.0-alpha.5',
- '@storybook/addon-jest': '8.4.0-alpha.5',
- '@storybook/addon-links': '8.4.0-alpha.5',
- '@storybook/addon-measure': '8.4.0-alpha.5',
- '@storybook/addon-onboarding': '8.4.0-alpha.5',
- '@storybook/addon-outline': '8.4.0-alpha.5',
- '@storybook/addon-storysource': '8.4.0-alpha.5',
- '@storybook/experimental-addon-test': '8.4.0-alpha.5',
- '@storybook/addon-themes': '8.4.0-alpha.5',
- '@storybook/addon-toolbars': '8.4.0-alpha.5',
- '@storybook/addon-viewport': '8.4.0-alpha.5',
- '@storybook/builder-vite': '8.4.0-alpha.5',
- '@storybook/builder-webpack5': '8.4.0-alpha.5',
- '@storybook/core': '8.4.0-alpha.5',
- '@storybook/builder-manager': '8.4.0-alpha.5',
- '@storybook/channels': '8.4.0-alpha.5',
- '@storybook/client-logger': '8.4.0-alpha.5',
- '@storybook/components': '8.4.0-alpha.5',
- '@storybook/core-common': '8.4.0-alpha.5',
- '@storybook/core-events': '8.4.0-alpha.5',
- '@storybook/core-server': '8.4.0-alpha.5',
- '@storybook/csf-tools': '8.4.0-alpha.5',
- '@storybook/docs-tools': '8.4.0-alpha.5',
- '@storybook/manager': '8.4.0-alpha.5',
- '@storybook/manager-api': '8.4.0-alpha.5',
- '@storybook/node-logger': '8.4.0-alpha.5',
- '@storybook/preview': '8.4.0-alpha.5',
- '@storybook/preview-api': '8.4.0-alpha.5',
- '@storybook/router': '8.4.0-alpha.5',
- '@storybook/telemetry': '8.4.0-alpha.5',
- '@storybook/theming': '8.4.0-alpha.5',
- '@storybook/types': '8.4.0-alpha.5',
- '@storybook/angular': '8.4.0-alpha.5',
- '@storybook/ember': '8.4.0-alpha.5',
- '@storybook/experimental-nextjs-vite': '8.4.0-alpha.5',
- '@storybook/html-vite': '8.4.0-alpha.5',
- '@storybook/html-webpack5': '8.4.0-alpha.5',
- '@storybook/nextjs': '8.4.0-alpha.5',
- '@storybook/preact-vite': '8.4.0-alpha.5',
- '@storybook/preact-webpack5': '8.4.0-alpha.5',
- '@storybook/react-vite': '8.4.0-alpha.5',
- '@storybook/react-webpack5': '8.4.0-alpha.5',
- '@storybook/server-webpack5': '8.4.0-alpha.5',
- '@storybook/svelte-vite': '8.4.0-alpha.5',
- '@storybook/svelte-webpack5': '8.4.0-alpha.5',
- '@storybook/sveltekit': '8.4.0-alpha.5',
- '@storybook/vue3-vite': '8.4.0-alpha.5',
- '@storybook/vue3-webpack5': '8.4.0-alpha.5',
- '@storybook/web-components-vite': '8.4.0-alpha.5',
- '@storybook/web-components-webpack5': '8.4.0-alpha.5',
- '@storybook/blocks': '8.4.0-alpha.5',
- storybook: '8.4.0-alpha.5',
- sb: '8.4.0-alpha.5',
- '@storybook/cli': '8.4.0-alpha.5',
- '@storybook/codemod': '8.4.0-alpha.5',
- '@storybook/core-webpack': '8.4.0-alpha.5',
- 'create-storybook': '8.4.0-alpha.5',
- '@storybook/csf-plugin': '8.4.0-alpha.5',
- '@storybook/instrumenter': '8.4.0-alpha.5',
- '@storybook/react-dom-shim': '8.4.0-alpha.5',
- '@storybook/source-loader': '8.4.0-alpha.5',
- '@storybook/test': '8.4.0-alpha.5',
- '@storybook/preset-create-react-app': '8.4.0-alpha.5',
- '@storybook/preset-html-webpack': '8.4.0-alpha.5',
- '@storybook/preset-preact-webpack': '8.4.0-alpha.5',
- '@storybook/preset-react-webpack': '8.4.0-alpha.5',
- '@storybook/preset-server-webpack': '8.4.0-alpha.5',
- '@storybook/preset-svelte-webpack': '8.4.0-alpha.5',
- '@storybook/preset-vue3-webpack': '8.4.0-alpha.5',
- '@storybook/html': '8.4.0-alpha.5',
- '@storybook/preact': '8.4.0-alpha.5',
- '@storybook/react': '8.4.0-alpha.5',
- '@storybook/server': '8.4.0-alpha.5',
- '@storybook/svelte': '8.4.0-alpha.5',
- '@storybook/vue3': '8.4.0-alpha.5',
- '@storybook/web-components': '8.4.0-alpha.5',
+ '@storybook/addon-a11y': '8.4.0-alpha.7',
+ '@storybook/addon-actions': '8.4.0-alpha.7',
+ '@storybook/addon-backgrounds': '8.4.0-alpha.7',
+ '@storybook/addon-controls': '8.4.0-alpha.7',
+ '@storybook/addon-docs': '8.4.0-alpha.7',
+ '@storybook/addon-essentials': '8.4.0-alpha.7',
+ '@storybook/addon-mdx-gfm': '8.4.0-alpha.7',
+ '@storybook/addon-highlight': '8.4.0-alpha.7',
+ '@storybook/addon-interactions': '8.4.0-alpha.7',
+ '@storybook/addon-jest': '8.4.0-alpha.7',
+ '@storybook/addon-links': '8.4.0-alpha.7',
+ '@storybook/addon-measure': '8.4.0-alpha.7',
+ '@storybook/addon-onboarding': '8.4.0-alpha.7',
+ '@storybook/addon-outline': '8.4.0-alpha.7',
+ '@storybook/addon-storysource': '8.4.0-alpha.7',
+ '@storybook/experimental-addon-test': '8.4.0-alpha.7',
+ '@storybook/addon-themes': '8.4.0-alpha.7',
+ '@storybook/addon-toolbars': '8.4.0-alpha.7',
+ '@storybook/addon-viewport': '8.4.0-alpha.7',
+ '@storybook/builder-vite': '8.4.0-alpha.7',
+ '@storybook/builder-webpack5': '8.4.0-alpha.7',
+ '@storybook/core': '8.4.0-alpha.7',
+ '@storybook/builder-manager': '8.4.0-alpha.7',
+ '@storybook/channels': '8.4.0-alpha.7',
+ '@storybook/client-logger': '8.4.0-alpha.7',
+ '@storybook/components': '8.4.0-alpha.7',
+ '@storybook/core-common': '8.4.0-alpha.7',
+ '@storybook/core-events': '8.4.0-alpha.7',
+ '@storybook/core-server': '8.4.0-alpha.7',
+ '@storybook/csf-tools': '8.4.0-alpha.7',
+ '@storybook/docs-tools': '8.4.0-alpha.7',
+ '@storybook/manager': '8.4.0-alpha.7',
+ '@storybook/manager-api': '8.4.0-alpha.7',
+ '@storybook/node-logger': '8.4.0-alpha.7',
+ '@storybook/preview': '8.4.0-alpha.7',
+ '@storybook/preview-api': '8.4.0-alpha.7',
+ '@storybook/router': '8.4.0-alpha.7',
+ '@storybook/telemetry': '8.4.0-alpha.7',
+ '@storybook/theming': '8.4.0-alpha.7',
+ '@storybook/types': '8.4.0-alpha.7',
+ '@storybook/angular': '8.4.0-alpha.7',
+ '@storybook/ember': '8.4.0-alpha.7',
+ '@storybook/experimental-nextjs-vite': '8.4.0-alpha.7',
+ '@storybook/html-vite': '8.4.0-alpha.7',
+ '@storybook/html-webpack5': '8.4.0-alpha.7',
+ '@storybook/nextjs': '8.4.0-alpha.7',
+ '@storybook/preact-vite': '8.4.0-alpha.7',
+ '@storybook/preact-webpack5': '8.4.0-alpha.7',
+ '@storybook/react-vite': '8.4.0-alpha.7',
+ '@storybook/react-webpack5': '8.4.0-alpha.7',
+ '@storybook/server-webpack5': '8.4.0-alpha.7',
+ '@storybook/svelte-vite': '8.4.0-alpha.7',
+ '@storybook/svelte-webpack5': '8.4.0-alpha.7',
+ '@storybook/sveltekit': '8.4.0-alpha.7',
+ '@storybook/vue3-vite': '8.4.0-alpha.7',
+ '@storybook/vue3-webpack5': '8.4.0-alpha.7',
+ '@storybook/web-components-vite': '8.4.0-alpha.7',
+ '@storybook/web-components-webpack5': '8.4.0-alpha.7',
+ '@storybook/blocks': '8.4.0-alpha.7',
+ storybook: '8.4.0-alpha.7',
+ sb: '8.4.0-alpha.7',
+ '@storybook/cli': '8.4.0-alpha.7',
+ '@storybook/codemod': '8.4.0-alpha.7',
+ '@storybook/core-webpack': '8.4.0-alpha.7',
+ 'create-storybook': '8.4.0-alpha.7',
+ '@storybook/csf-plugin': '8.4.0-alpha.7',
+ '@storybook/instrumenter': '8.4.0-alpha.7',
+ '@storybook/react-dom-shim': '8.4.0-alpha.7',
+ '@storybook/source-loader': '8.4.0-alpha.7',
+ '@storybook/test': '8.4.0-alpha.7',
+ '@storybook/preset-create-react-app': '8.4.0-alpha.7',
+ '@storybook/preset-html-webpack': '8.4.0-alpha.7',
+ '@storybook/preset-preact-webpack': '8.4.0-alpha.7',
+ '@storybook/preset-react-webpack': '8.4.0-alpha.7',
+ '@storybook/preset-server-webpack': '8.4.0-alpha.7',
+ '@storybook/preset-svelte-webpack': '8.4.0-alpha.7',
+ '@storybook/preset-vue3-webpack': '8.4.0-alpha.7',
+ '@storybook/html': '8.4.0-alpha.7',
+ '@storybook/preact': '8.4.0-alpha.7',
+ '@storybook/react': '8.4.0-alpha.7',
+ '@storybook/server': '8.4.0-alpha.7',
+ '@storybook/svelte': '8.4.0-alpha.7',
+ '@storybook/vue3': '8.4.0-alpha.7',
+ '@storybook/web-components': '8.4.0-alpha.7',
};
diff --git a/code/core/src/core-server/build-static.ts b/code/core/src/core-server/build-static.ts
index 8d8d5f9cce6..ab0d979acaf 100644
--- a/code/core/src/core-server/build-static.ts
+++ b/code/core/src/core-server/build-static.ts
@@ -47,22 +47,8 @@ export async function buildStaticStandalone(options: BuildStaticStandaloneOption
if (options.outputDir === '/') {
throw new Error("Won't remove directory '/'. Check your outputDir!");
}
-
- try {
- const outputDirFiles = await readdir(options.outputDir);
- for (const file of outputDirFiles) {
- await rm(file, { recursive: true, force: true });
- }
- } catch {
- await mkdir(options.outputDir, { recursive: true });
- }
-
- if (!existsSync(options.outputDir)) {
- await mkdir(options.outputDir, { recursive: true });
- } else if ((await readdir(options.outputDir)).length > 0) {
- await rm(options.outputDir, { recursive: true, force: true });
- await mkdir(options.outputDir, { recursive: true });
- }
+ await rm(options.outputDir, { recursive: true, force: true }).catch(() => {});
+ await mkdir(options.outputDir, { recursive: true });
const config = await loadMainConfig(options);
const { framework } = config;
diff --git a/code/core/src/manager-api/lib/intersect.ts b/code/core/src/manager-api/lib/intersect.ts
new file mode 100644
index 00000000000..84eae122322
--- /dev/null
+++ b/code/core/src/manager-api/lib/intersect.ts
@@ -0,0 +1,14 @@
+export default (a: T[], b: T[]): T[] => {
+ // no point in intersecting if one of the input is ill-defined
+ if (!a || !b) {
+ return [];
+ }
+
+ return a.reduce((acc: T[], aValue) => {
+ if (b.includes(aValue)) {
+ acc.push(aValue);
+ }
+
+ return acc;
+ }, []);
+};
diff --git a/code/core/src/manager-api/lib/stories.ts b/code/core/src/manager-api/lib/stories.ts
index 556acba0076..eed677371ef 100644
--- a/code/core/src/manager-api/lib/stories.ts
+++ b/code/core/src/manager-api/lib/stories.ts
@@ -24,6 +24,7 @@ import memoize from 'memoizerific';
import { dedent } from 'ts-dedent';
import { type API, type State, combineParameters } from '../root';
+import intersect from './intersect';
import merge from './merge';
const TITLE_PATH_SEPARATOR = /\s*\/\s*/;
@@ -273,6 +274,9 @@ export const transformStoryIndexToStoriesHash = (
children: [childId],
}),
});
+ // merge computes a union of arrays but we want an intersection on this
+ // specific array property, so it's easier to add it after the merge.
+ acc[id].tags = intersect(acc[id]?.tags ?? item.tags, item.tags);
} else {
acc[id] = merge((acc[id] || {}) as API_GroupEntry, {
type: 'group',
diff --git a/code/core/src/manager-api/tests/intersect.test.ts b/code/core/src/manager-api/tests/intersect.test.ts
new file mode 100644
index 00000000000..e1e02362bc7
--- /dev/null
+++ b/code/core/src/manager-api/tests/intersect.test.ts
@@ -0,0 +1,44 @@
+import { describe, expect, it } from 'vitest';
+
+import intersect from '../lib/intersect';
+
+describe('Manager API utilities - intersect', () => {
+ it('returns identity when intersecting identity', () => {
+ const a = ['foo', 'bar'];
+ expect(intersect(a, a)).toEqual(a);
+ });
+
+ it('returns a when b is a superset of a', () => {
+ const a = ['foo', 'bar'];
+ const b = ['a', 'foo', 'b', 'bar', 'c', 'ter'];
+ expect(intersect(a, b)).toEqual(a);
+ });
+
+ it('returns b when a is a superset of b', () => {
+ const a = ['a', 'foo', 'b', 'bar', 'c', 'ter'];
+ const b = ['foo', 'bar'];
+ expect(intersect(a, b)).toEqual(b);
+ });
+
+ it('returns an intersection', () => {
+ const a = ['a', 'bar', 'b', 'c'];
+ const b = ['foo', 'bar', 'ter'];
+ expect(intersect(a, b)).toEqual(['bar']);
+ });
+
+ it('returns an empty set when there is no overlap', () => {
+ const a = ['a', 'b', 'c'];
+ const b = ['foo', 'bar', 'ter'];
+ expect(intersect(a, b)).toEqual([]);
+ });
+
+ it('returns an empty set if a is undefined', () => {
+ const b = ['foo', 'bar', 'ter'];
+ expect(intersect(undefined as unknown as [], b)).toEqual([]);
+ });
+
+ it('returns an empty set if b is undefined', () => {
+ const a = ['foo', 'bar', 'ter'];
+ expect(intersect(a, undefined as unknown as [])).toEqual([]);
+ });
+});
diff --git a/code/core/src/manager-api/tests/stories.test.ts b/code/core/src/manager-api/tests/stories.test.ts
index 16b5c926c9c..9d3c4433fde 100644
--- a/code/core/src/manager-api/tests/stories.test.ts
+++ b/code/core/src/manager-api/tests/stories.test.ts
@@ -281,6 +281,57 @@ describe('stories API', () => {
name: '1',
});
});
+ it('intersects story/docs tags to compute tags for component entries', () => {
+ const moduleArgs = createMockModuleArgs({});
+ const { api } = initStories(moduleArgs as unknown as ModuleArgs);
+ const { store } = moduleArgs;
+ api.setIndex({
+ v: 5,
+ entries: {
+ 'a--1': {
+ type: 'story',
+ id: 'a--1',
+ title: 'a',
+ name: '1',
+ tags: ['shared', 'one-specific'],
+ importPath: './a.ts',
+ },
+ 'a--2': {
+ type: 'story',
+ id: 'a--2',
+ title: 'a',
+ name: '2',
+ tags: ['shared', 'two-specific'],
+ importPath: './a.ts',
+ },
+ },
+ });
+ const { index } = store.getState();
+ // We need exact key ordering, even if in theory JS doesn't guarantee it
+ expect(Object.keys(index!)).toEqual(['a', 'a--1', 'a--2']);
+ expect(index!.a).toMatchObject({
+ type: 'component',
+ id: 'a',
+ tags: ['shared'],
+ children: ['a--1', 'a--2'],
+ });
+ expect(index!['a--1']).toMatchObject({
+ type: 'story',
+ id: 'a--1',
+ parent: 'a',
+ title: 'a',
+ name: '1',
+ tags: ['shared', 'one-specific'],
+ });
+ expect(index!['a--2']).toMatchObject({
+ type: 'story',
+ id: 'a--2',
+ parent: 'a',
+ title: 'a',
+ name: '2',
+ tags: ['shared', 'two-specific'],
+ });
+ });
// Stories can get out of order for a few reasons -- see reproductions on
// https://github.com/storybookjs/storybook/issues/5518
it('does the right thing for out of order stories', async () => {
@@ -1453,6 +1504,7 @@ describe('stories API', () => {
"name": "a",
"parent": undefined,
"renderLabel": undefined,
+ "tags": [],
"type": "component",
},
"a--1": {
@@ -1518,6 +1570,7 @@ describe('stories API', () => {
"name": "a",
"parent": undefined,
"renderLabel": undefined,
+ "tags": [],
"type": "component",
},
"a--1": {
@@ -1559,6 +1612,7 @@ describe('stories API', () => {
"name": "a",
"parent": undefined,
"renderLabel": undefined,
+ "tags": [],
"type": "component",
},
"a--1": {
diff --git a/code/core/src/manager-api/version.ts b/code/core/src/manager-api/version.ts
index b246d32aeef..de04e48fe1b 100644
--- a/code/core/src/manager-api/version.ts
+++ b/code/core/src/manager-api/version.ts
@@ -1 +1 @@
-export const version = '8.4.0-alpha.5';
+export const version = '8.4.0-alpha.7';
diff --git a/code/core/src/manager/components/sidebar/__tests__/Sidebar.test.tsx b/code/core/src/manager/components/sidebar/__tests__/Sidebar.test.tsx
index adc05cb07a5..2e1583fdcf8 100644
--- a/code/core/src/manager/components/sidebar/__tests__/Sidebar.test.tsx
+++ b/code/core/src/manager/components/sidebar/__tests__/Sidebar.test.tsx
@@ -59,6 +59,7 @@ const generateStories = ({ title, refId }: { title: string; refId?: string }): A
name: componentName,
children: [docsId],
parent: rootId,
+ tags: [],
},
// @ts-expect-error the missing fields are deprecated and replaced by the type prop
{
diff --git a/code/core/src/preview-api/modules/store/inferArgTypes.ts b/code/core/src/preview-api/modules/store/inferArgTypes.ts
index 007b4971a17..35e840fedcd 100644
--- a/code/core/src/preview-api/modules/store/inferArgTypes.ts
+++ b/code/core/src/preview-api/modules/store/inferArgTypes.ts
@@ -25,8 +25,8 @@ const inferType = (value: any, name: string, visited: Set): SBType => {
We've detected a cycle in arg '${name}'. Args should be JSON-serializable.
Consider using the mapping feature or fully custom args:
- - Mapping: https://storybook.js.org/docs/react/writing-stories/args#mapping-to-complex-arg-values
- - Custom args: https://storybook.js.org/docs/react/essentials/controls#fully-custom-args
+ - Mapping: https://storybook.js.org/docs/writing-stories/args#mapping-to-complex-arg-values
+ - Custom args: https://storybook.js.org/docs/essentials/controls#fully-custom-args
`);
return { name: 'other', value: 'cyclic object' };
}
diff --git a/code/core/src/types/modules/api-stories.ts b/code/core/src/types/modules/api-stories.ts
index 29e82c40e74..c53d379b719 100644
--- a/code/core/src/types/modules/api-stories.ts
+++ b/code/core/src/types/modules/api-stories.ts
@@ -27,6 +27,7 @@ export interface API_ComponentEntry extends API_BaseEntry {
type: 'component';
parent?: StoryId;
children: StoryId[];
+ tags: Tag[];
}
export interface API_DocsEntry extends API_BaseEntry {
diff --git a/code/deprecated/builder-manager/package.json b/code/deprecated/builder-manager/package.json
index dcda4024973..55ea89cc1ff 100644
--- a/code/deprecated/builder-manager/package.json
+++ b/code/deprecated/builder-manager/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/builder-manager",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook manager builder",
"keywords": [
"storybook"
diff --git a/code/deprecated/channels/package.json b/code/deprecated/channels/package.json
index 151a0918dd9..2959a41fa03 100644
--- a/code/deprecated/channels/package.json
+++ b/code/deprecated/channels/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/channels",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "",
"keywords": [
"storybook"
diff --git a/code/deprecated/client-logger/package.json b/code/deprecated/client-logger/package.json
index a9bd26a65a1..325aabfeeb3 100644
--- a/code/deprecated/client-logger/package.json
+++ b/code/deprecated/client-logger/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/client-logger",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "",
"keywords": [
"storybook"
diff --git a/code/deprecated/components/package.json b/code/deprecated/components/package.json
index 91d006dca1c..48cf196630e 100644
--- a/code/deprecated/components/package.json
+++ b/code/deprecated/components/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/components",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Core Storybook Components",
"keywords": [
"storybook"
diff --git a/code/deprecated/core-common/package.json b/code/deprecated/core-common/package.json
index 2c575d2f50d..3e651691a07 100644
--- a/code/deprecated/core-common/package.json
+++ b/code/deprecated/core-common/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/core-common",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
diff --git a/code/deprecated/core-events/package.json b/code/deprecated/core-events/package.json
index 19b34adf542..8ece8cc7941 100644
--- a/code/deprecated/core-events/package.json
+++ b/code/deprecated/core-events/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/core-events",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Event names used in storybook core",
"keywords": [
"storybook"
diff --git a/code/deprecated/core-server/package.json b/code/deprecated/core-server/package.json
index cd6089d25f6..eeac3f147d2 100644
--- a/code/deprecated/core-server/package.json
+++ b/code/deprecated/core-server/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/core-server",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
diff --git a/code/deprecated/csf-tools/package.json b/code/deprecated/csf-tools/package.json
index 01c4a315adc..29d6b33b414 100644
--- a/code/deprecated/csf-tools/package.json
+++ b/code/deprecated/csf-tools/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/csf-tools",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Parse and manipulate CSF and Storybook config files",
"keywords": [
"storybook"
diff --git a/code/deprecated/docs-tools/package.json b/code/deprecated/docs-tools/package.json
index 121c88f6170..b4e6406baa5 100644
--- a/code/deprecated/docs-tools/package.json
+++ b/code/deprecated/docs-tools/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/docs-tools",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Shared utility functions for frameworks to implement docs",
"keywords": [
"storybook"
diff --git a/code/deprecated/manager-api/package.json b/code/deprecated/manager-api/package.json
index 147a88aa0df..06a2697a407 100644
--- a/code/deprecated/manager-api/package.json
+++ b/code/deprecated/manager-api/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/manager-api",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Core Storybook Manager API & Context",
"keywords": [
"storybook"
diff --git a/code/deprecated/manager/package.json b/code/deprecated/manager/package.json
index 711d8bf5628..e09af35c9f0 100644
--- a/code/deprecated/manager/package.json
+++ b/code/deprecated/manager/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/manager",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Core Storybook UI",
"keywords": [
"storybook"
diff --git a/code/deprecated/node-logger/package.json b/code/deprecated/node-logger/package.json
index 7cef4839821..641a398be8f 100644
--- a/code/deprecated/node-logger/package.json
+++ b/code/deprecated/node-logger/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/node-logger",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "",
"keywords": [
"storybook"
diff --git a/code/deprecated/preview-api/package.json b/code/deprecated/preview-api/package.json
index f8499b6def5..70469323bda 100644
--- a/code/deprecated/preview-api/package.json
+++ b/code/deprecated/preview-api/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/preview-api",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "",
"keywords": [
"storybook"
diff --git a/code/deprecated/preview/package.json b/code/deprecated/preview/package.json
index 43e8837e611..3cdbd0f6ba5 100644
--- a/code/deprecated/preview/package.json
+++ b/code/deprecated/preview/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/preview",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "",
"keywords": [
"storybook"
diff --git a/code/deprecated/router/package.json b/code/deprecated/router/package.json
index e9847a3e3cd..8beb6975d4a 100644
--- a/code/deprecated/router/package.json
+++ b/code/deprecated/router/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/router",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Core Storybook Router",
"keywords": [
"storybook"
diff --git a/code/deprecated/telemetry/package.json b/code/deprecated/telemetry/package.json
index 3c57fd54d10..bcfcbb57248 100644
--- a/code/deprecated/telemetry/package.json
+++ b/code/deprecated/telemetry/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/telemetry",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Telemetry logging for crash reports and usage statistics",
"keywords": [
"storybook"
diff --git a/code/deprecated/theming/package.json b/code/deprecated/theming/package.json
index 6014ea905e1..ed155f9adc2 100644
--- a/code/deprecated/theming/package.json
+++ b/code/deprecated/theming/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/theming",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Core Storybook Components",
"keywords": [
"storybook"
diff --git a/code/deprecated/types/package.json b/code/deprecated/types/package.json
index 42e9b4d3600..f6132c64486 100644
--- a/code/deprecated/types/package.json
+++ b/code/deprecated/types/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/types",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Core Storybook TS Types",
"keywords": [
"storybook"
diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json
index e13d79eb1cf..6a36b0f5807 100644
--- a/code/frameworks/angular/package.json
+++ b/code/frameworks/angular/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/angular",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 46c4d168186..6368bde6655 100644
--- a/code/frameworks/ember/package.json
+++ b/code/frameworks/ember/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/ember",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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/experimental-nextjs-vite/package.json b/code/frameworks/experimental-nextjs-vite/package.json
index e56c97a4ea1..6f7a3fb395b 100644
--- a/code/frameworks/experimental-nextjs-vite/package.json
+++ b/code/frameworks/experimental-nextjs-vite/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/experimental-nextjs-vite",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook for Next.js and Vite",
"keywords": [
"storybook",
diff --git a/code/frameworks/html-vite/package.json b/code/frameworks/html-vite/package.json
index c7423e1e331..5a2d3846ca4 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 f11133c8fa4..64d5544f2f7 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 14a3af0b67e..dc4be0600c6 100644
--- a/code/frameworks/nextjs/package.json
+++ b/code/frameworks/nextjs/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/nextjs",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook for Next.js",
"keywords": [
"storybook",
diff --git a/code/frameworks/preact-vite/package.json b/code/frameworks/preact-vite/package.json
index 4a5d63ba61b..9b9f0b3a462 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 922061579cd..86de08ba035 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 4d0a7294ad5..d51e29ed8d1 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 fe755b1e0e3..1c39f5a44b9 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 74081df191e..caa7296cc33 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 33fbaf51c72..0fa571b8cb0 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 650a8bdaf38..c3ef079637e 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 e79f5d53fea..3371c67e61d 100644
--- a/code/frameworks/sveltekit/package.json
+++ b/code/frameworks/sveltekit/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/sveltekit",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook for SvelteKit",
"keywords": [
"storybook",
diff --git a/code/frameworks/vue3-vite/package.json b/code/frameworks/vue3-vite/package.json
index 770e765110b..682383e94dd 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 07f0ad45af3..650d040f09c 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 9e17c2cb61b..9e3d1e09c39 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 57d69631757..b431b08ce7c 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.",
"keywords": [
"lit",
diff --git a/code/lib/blocks/package.json b/code/lib/blocks/package.json
index f322a2d14fc..1cfab3fadf7 100644
--- a/code/lib/blocks/package.json
+++ b/code/lib/blocks/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/blocks",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook Doc Blocks",
"keywords": [
"storybook"
@@ -44,24 +44,21 @@
},
"dependencies": {
"@storybook/csf": "^0.1.11",
- "@storybook/global": "^5.0.0",
"@storybook/icons": "^1.2.10",
- "color-convert": "^2.0.1",
- "dequal": "^2.0.2",
- "markdown-to-jsx": "^7.4.5",
- "memoizerific": "^1.11.3",
- "polished": "^4.2.2",
- "react-colorful": "^5.1.2",
- "telejson": "^7.2.0",
- "ts-dedent": "^2.0.0",
- "util-deprecate": "^1.0.2"
+ "ts-dedent": "^2.0.0"
},
"devDependencies": {
"@storybook/addon-actions": "workspace:*",
"@storybook/react": "workspace:*",
"@storybook/test": "workspace:*",
"@types/color-convert": "^2.0.0",
+ "color-convert": "^2.0.1",
"es-toolkit": "^1.21.0",
+ "markdown-to-jsx": "^7.4.5",
+ "memoizerific": "^1.11.3",
+ "polished": "^4.2.2",
+ "react-colorful": "^5.1.2",
+ "telejson": "^7.2.0",
"tocbot": "^4.20.1"
},
"peerDependencies": {
diff --git a/code/lib/blocks/src/blocks/Canvas.stories.tsx b/code/lib/blocks/src/blocks/Canvas.stories.tsx
index 4a7e25f6706..bdedf650e53 100644
--- a/code/lib/blocks/src/blocks/Canvas.stories.tsx
+++ b/code/lib/blocks/src/blocks/Canvas.stories.tsx
@@ -94,7 +94,7 @@ export const PropAdditionalActions: Story = {
title: 'Go to documentation',
onClick: () => {
window.open(
- 'https://storybook.js.org/docs/react/essentials/controls#annotation',
+ 'https://storybook.js.org/docs/essentials/controls#annotation',
'_blank'
);
},
diff --git a/code/lib/blocks/src/blocks/DocsContainer.tsx b/code/lib/blocks/src/blocks/DocsContainer.tsx
index 3fb52a32ca5..be6649113e1 100644
--- a/code/lib/blocks/src/blocks/DocsContainer.tsx
+++ b/code/lib/blocks/src/blocks/DocsContainer.tsx
@@ -5,8 +5,6 @@ import type { ThemeVars } from 'storybook/internal/theming';
import { ThemeProvider, ensure as ensureTheme } from 'storybook/internal/theming';
import type { Renderer } from 'storybook/internal/types';
-import { global } from '@storybook/global';
-
import { DocsPageWrapper } from '../components';
import { TableOfContents } from '../components/TableOfContents';
import type { DocsContextProps } from './DocsContext';
@@ -14,7 +12,7 @@ import { DocsContext } from './DocsContext';
import { SourceContainer } from './SourceContainer';
import { scrollToElement } from './utils';
-const { document, window: globalWindow } = global;
+const { document, window: globalWindow } = globalThis;
export interface DocsContainerProps {
context: DocsContextProps;
diff --git a/code/lib/blocks/src/blocks/DocsContext.ts b/code/lib/blocks/src/blocks/DocsContext.ts
index b7680f920c5..850b0ccddd9 100644
--- a/code/lib/blocks/src/blocks/DocsContext.ts
+++ b/code/lib/blocks/src/blocks/DocsContext.ts
@@ -4,8 +4,6 @@ import { createContext } from 'react';
import type { DocsContextProps, Renderer } from 'storybook/internal/types';
-import { global } from '@storybook/global';
-
export type { DocsContextProps };
// We add DocsContext to window. The reason is that in case DocsContext.ts is
@@ -13,11 +11,11 @@ export type { DocsContextProps };
// we will have multiple DocsContext definitions - leading to lost context in
// the React component tree.
// This was specifically a problem with the Vite builder.
-if (global && global.__DOCS_CONTEXT__ === undefined) {
- global.__DOCS_CONTEXT__ = createContext(null);
- global.__DOCS_CONTEXT__.displayName = 'DocsContext';
+if (globalThis && globalThis.__DOCS_CONTEXT__ === undefined) {
+ globalThis.__DOCS_CONTEXT__ = createContext(null);
+ globalThis.__DOCS_CONTEXT__.displayName = 'DocsContext';
}
-export const DocsContext: Context> = global
- ? global.__DOCS_CONTEXT__
+export const DocsContext: Context> = globalThis
+ ? globalThis.__DOCS_CONTEXT__
: createContext(null);
diff --git a/code/lib/blocks/src/blocks/mdx.tsx b/code/lib/blocks/src/blocks/mdx.tsx
index 9a4bf1173c8..09d8cff3346 100644
--- a/code/lib/blocks/src/blocks/mdx.tsx
+++ b/code/lib/blocks/src/blocks/mdx.tsx
@@ -6,14 +6,13 @@ import { Code, components, nameSpaceClassNames } from 'storybook/internal/compon
import { NAVIGATE_URL } from 'storybook/internal/core-events';
import { styled } from 'storybook/internal/theming';
-import { global } from '@storybook/global';
import { LinkIcon } from '@storybook/icons';
import { Source } from '../components';
import type { DocsContextProps } from './DocsContext';
import { DocsContext } from './DocsContext';
-const { document } = global;
+const { document } = globalThis;
// Hacky utility for asserting identifiers in MDX Story elements
export const assertIsFn = (val: any) => {
diff --git a/code/lib/blocks/src/components/ArgsTable/ArgControl.tsx b/code/lib/blocks/src/components/ArgsTable/ArgControl.tsx
index 36e75aa81d3..e90609eb51c 100644
--- a/code/lib/blocks/src/components/ArgsTable/ArgControl.tsx
+++ b/code/lib/blocks/src/components/ArgsTable/ArgControl.tsx
@@ -72,7 +72,7 @@ export const ArgControl: FC = ({ row, arg, updateArgs, isHovere
const canBeSetup = control?.disable !== true && row?.type?.name !== 'function';
return isHovered && canBeSetup ? (
diff --git a/code/lib/blocks/src/components/IFrame.tsx b/code/lib/blocks/src/components/IFrame.tsx
index 4fbf6220a1e..4f2bd4beedb 100644
--- a/code/lib/blocks/src/components/IFrame.tsx
+++ b/code/lib/blocks/src/components/IFrame.tsx
@@ -1,8 +1,6 @@
import React, { Component } from 'react';
-import { global } from '@storybook/global';
-
-const { window: globalWindow } = global;
+const { window: globalWindow } = globalThis;
interface IFrameProps {
id: string;
diff --git a/code/lib/blocks/src/components/Preview.stories.tsx b/code/lib/blocks/src/components/Preview.stories.tsx
index 69b3adb29bf..39a2e3b1a94 100644
--- a/code/lib/blocks/src/components/Preview.stories.tsx
+++ b/code/lib/blocks/src/components/Preview.stories.tsx
@@ -5,8 +5,6 @@ import { Button, Spaced } from 'storybook/internal/components';
import { styled } from 'storybook/internal/theming';
import type { DocsContextProps, ModuleExport } from 'storybook/internal/types';
-import { global } from '@storybook/global';
-
import * as ButtonStories from '../examples/Button.stories';
import { Preview, PreviewSkeleton } from './Preview';
import * as sourceStories from './Source.stories';
@@ -251,7 +249,7 @@ export const WithAdditionalActions = (
{
title: 'Open on GitHub',
onClick: () => {
- global.location.href =
+ globalThis.location.href =
'https://github.com/storybookjs/storybook/blob/next/code/lib/blocks/src/components/Preview.stories.tsx#L165-L186';
},
},
diff --git a/code/lib/blocks/src/components/Preview.tsx b/code/lib/blocks/src/components/Preview.tsx
index e0491c2166f..2c7defbe37a 100644
--- a/code/lib/blocks/src/components/Preview.tsx
+++ b/code/lib/blocks/src/components/Preview.tsx
@@ -5,8 +5,6 @@ import { ActionBar, Zoom } from 'storybook/internal/components';
import type { ActionItem } from 'storybook/internal/components';
import { styled } from 'storybook/internal/theming';
-import { global } from '@storybook/global';
-
import { darken } from 'polished';
import type { SourceProps } from '.';
@@ -204,7 +202,7 @@ export const Preview: FC = ({
);
const actionItems = [...defaultActionItems, ...additionalActionItems];
- const { window: globalWindow } = global;
+ const { window: globalWindow } = globalThis;
const copyToClipboard = useCallback(async (text: string) => {
const { createCopyToClipboardFunction } = await import('storybook/internal/components');
diff --git a/code/lib/blocks/src/components/Story.tsx b/code/lib/blocks/src/components/Story.tsx
index 9be47a232ab..3110b14a020 100644
--- a/code/lib/blocks/src/components/Story.tsx
+++ b/code/lib/blocks/src/components/Story.tsx
@@ -6,12 +6,10 @@ import { ErrorFormatter, Loader, getStoryHref } from 'storybook/internal/compone
import { styled } from 'storybook/internal/theming';
import type { DocsContextProps, PreparedStory } from 'storybook/internal/types';
-import { global } from '@storybook/global';
-
import { IFrame } from './IFrame';
import { ZoomContext } from './ZoomContext';
-const { PREVIEW_URL } = global;
+const { PREVIEW_URL } = globalThis;
const BASE_URL = PREVIEW_URL || 'iframe.html';
interface CommonProps {
diff --git a/code/lib/blocks/src/controls/Object.tsx b/code/lib/blocks/src/controls/Object.tsx
index 382dca01a57..ced28529b76 100644
--- a/code/lib/blocks/src/controls/Object.tsx
+++ b/code/lib/blocks/src/controls/Object.tsx
@@ -4,7 +4,6 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { Button, Form, IconButton } from 'storybook/internal/components';
import { type Theme, styled, useTheme } from 'storybook/internal/theming';
-import { global } from '@storybook/global';
import { AddIcon, EyeCloseIcon, EyeIcon, SubtractIcon } from '@storybook/icons';
import { cloneDeep } from 'es-toolkit/compat';
@@ -13,7 +12,7 @@ import { getControlId, getControlSetterButtonId } from './helpers';
import { JsonTree } from './react-editable-json-tree';
import type { ControlProps, ObjectConfig, ObjectValue } from './types';
-const { window: globalWindow } = global;
+const { window: globalWindow } = globalThis;
type JsonTreeProps = ComponentProps;
diff --git a/code/lib/blocks/src/examples/CanvasParameters.stories.tsx b/code/lib/blocks/src/examples/CanvasParameters.stories.tsx
index aa9affefbfe..6f0c3cb3484 100644
--- a/code/lib/blocks/src/examples/CanvasParameters.stories.tsx
+++ b/code/lib/blocks/src/examples/CanvasParameters.stories.tsx
@@ -31,7 +31,7 @@ export const AdditionalActions: Story = {
title: 'Go to documentation',
onClick: () => {
window.open(
- 'https://storybook.js.org/docs/react/essentials/controls#annotation',
+ 'https://storybook.js.org/docs/essentials/controls#annotation',
'_blank'
);
},
diff --git a/code/lib/cli-sb/package.json b/code/lib/cli-sb/package.json
index bea976d0f55..d803ca1246a 100644
--- a/code/lib/cli-sb/package.json
+++ b/code/lib/cli-sb/package.json
@@ -1,6 +1,6 @@
{
"name": "sb",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook CLI",
"keywords": [
"storybook"
diff --git a/code/lib/cli-storybook/package.json b/code/lib/cli-storybook/package.json
index 530e46799b1..2a1e908cdf6 100644
--- a/code/lib/cli-storybook/package.json
+++ b/code/lib/cli-storybook/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/cli",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook CLI",
"keywords": [
"storybook"
diff --git a/code/lib/cli/package.json b/code/lib/cli/package.json
index 82702c00382..88454e37529 100644
--- a/code/lib/cli/package.json
+++ b/code/lib/cli/package.json
@@ -1,6 +1,6 @@
{
"name": "storybook",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook's CLI - install, dev, build, upgrade, and more",
"keywords": [
"cli",
diff --git a/code/lib/codemod/package.json b/code/lib/codemod/package.json
index c1f9d97c467..679fb603209 100644
--- a/code/lib/codemod/package.json
+++ b/code/lib/codemod/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/codemod",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "A collection of codemod scripts written with JSCodeshift",
"keywords": [
"storybook"
diff --git a/code/lib/core-webpack/package.json b/code/lib/core-webpack/package.json
index 1d855f200aa..099a9c01ec4 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
diff --git a/code/lib/create-storybook/package.json b/code/lib/create-storybook/package.json
index 88ea2a9a25d..74b31d3aa46 100644
--- a/code/lib/create-storybook/package.json
+++ b/code/lib/create-storybook/package.json
@@ -1,6 +1,6 @@
{
"name": "create-storybook",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Initialize Storybook into your project",
"homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/create-storybook",
"bugs": {
diff --git a/code/lib/create-storybook/src/generators/SVELTE/index.test.ts b/code/lib/create-storybook/src/generators/SVELTE/index.test.ts
new file mode 100644
index 00000000000..0fb12402587
--- /dev/null
+++ b/code/lib/create-storybook/src/generators/SVELTE/index.test.ts
@@ -0,0 +1,44 @@
+import { describe, expect, it } from 'vitest';
+
+import type { JsPackageManager } from '@storybook/core/common';
+
+import { getAddonSvelteCsfVersion } from './index';
+
+describe('installed', () => {
+ it.each([
+ ['3.0.0', ''],
+ ['4.0.0', '4'],
+ ['5.0.0', '^5.0.0-next.0'],
+ ['6.0.0', ''],
+ ['3.0.0-next.0', ''],
+ ['4.0.0-next.0', '4'],
+ ['4.2.19::__archiveUrl=https%3A%2F%2Fregistry.npmjs.org%2Fsvelte%2F-%2Fsvelte-4.2.19.tgz', '4'],
+ ['5.0.0-next.0', '^5.0.0-next.0'],
+ ['6.0.0-next.0', ''],
+ ])('svelte %s => %s', async (svelteVersion, expectedAddonSpecifier) => {
+ const packageManager = {
+ getInstalledVersion: async (pkg: string) => (pkg === 'svelte' ? svelteVersion : undefined),
+ getAllDependencies: async () => ({ svelte: `^${svelteVersion}` }),
+ } as any as JsPackageManager;
+ await expect(getAddonSvelteCsfVersion(packageManager)).resolves.toBe(expectedAddonSpecifier);
+ });
+});
+
+describe('uninstalled', () => {
+ it.each([
+ ['^3', ''],
+ ['^4', '4'],
+ ['^5', '^5.0.0-next.0'],
+ ['^6', ''],
+ ['^3.0.0-next.0', ''],
+ ['^4.0.0-next.0', '4'],
+ ['^5.0.0-next.0', '^5.0.0-next.0'],
+ ['^6.0.0-next.0', ''],
+ ])('svelte %s => %s', async (svelteSpecifier, expectedAddonSpecifier) => {
+ const packageManager = {
+ getInstalledVersion: async (pkg: string) => undefined,
+ getAllDependencies: async () => ({ svelte: svelteSpecifier }),
+ } as any as JsPackageManager;
+ await expect(getAddonSvelteCsfVersion(packageManager)).resolves.toBe(expectedAddonSpecifier);
+ });
+});
diff --git a/code/lib/create-storybook/src/generators/SVELTE/index.ts b/code/lib/create-storybook/src/generators/SVELTE/index.ts
index d3b4a89a735..21661f5b02b 100644
--- a/code/lib/create-storybook/src/generators/SVELTE/index.ts
+++ b/code/lib/create-storybook/src/generators/SVELTE/index.ts
@@ -1,10 +1,48 @@
+import type { JsPackageManager } from 'storybook/internal/common';
+
+import { coerce, major } from 'semver';
+
import { baseGenerator } from '../baseGenerator';
import type { Generator } from '../types';
+const versionHelper = (svelteMajor?: number) => {
+ if (svelteMajor === 4) {
+ return '4';
+ }
+ // TODO: update when addon-svelte-csf v5 is released
+ if (svelteMajor === 5) {
+ return '^5.0.0-next.0';
+ }
+ return '';
+};
+
+export const getAddonSvelteCsfVersion = async (packageManager: JsPackageManager) => {
+ const svelteVersion = await packageManager.getInstalledVersion('svelte');
+ try {
+ if (svelteVersion) {
+ return versionHelper(major(coerce(svelteVersion) || ''));
+ } else {
+ const deps = await packageManager.getAllDependencies();
+ const svelteSpecifier = deps['svelte'];
+ const coerced = coerce(svelteSpecifier);
+ if (coerced?.version) {
+ return versionHelper(major(coerced.version));
+ }
+ }
+ } catch {
+ // fallback to latest version
+ }
+ return '';
+};
+
const generator: Generator = async (packageManager, npmOptions, options) => {
+ const addonSvelteCsfVersion = await getAddonSvelteCsfVersion(packageManager);
+
await baseGenerator(packageManager, npmOptions, options, 'svelte', {
extensions: ['js', 'ts', 'svelte'],
- extraAddons: ['@storybook/addon-svelte-csf'],
+ extraAddons: [
+ `@storybook/addon-svelte-csf${addonSvelteCsfVersion && `@${addonSvelteCsfVersion}`}`,
+ ],
});
};
diff --git a/code/lib/create-storybook/src/generators/SVELTEKIT/index.ts b/code/lib/create-storybook/src/generators/SVELTEKIT/index.ts
index 4a891b9a68b..1a17c0ac5b6 100644
--- a/code/lib/create-storybook/src/generators/SVELTEKIT/index.ts
+++ b/code/lib/create-storybook/src/generators/SVELTEKIT/index.ts
@@ -1,9 +1,12 @@
import { CoreBuilder } from 'storybook/internal/cli';
+import { getAddonSvelteCsfVersion } from '../SVELTE';
import { baseGenerator } from '../baseGenerator';
import type { Generator } from '../types';
const generator: Generator = async (packageManager, npmOptions, options) => {
+ const addonSvelteCsfVersion = await getAddonSvelteCsfVersion(packageManager);
+
await baseGenerator(
packageManager,
npmOptions,
@@ -11,7 +14,9 @@ const generator: Generator = async (packageManager, npmOptions, options) => {
'svelte',
{
extensions: ['js', 'ts', 'svelte'],
- extraAddons: ['@storybook/addon-svelte-csf'],
+ extraAddons: [
+ `@storybook/addon-svelte-csf${addonSvelteCsfVersion && `@${addonSvelteCsfVersion}`}`,
+ ],
},
'sveltekit'
);
diff --git a/code/lib/csf-plugin/package.json b/code/lib/csf-plugin/package.json
index 8124158e785..9cfc419b5af 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Enrich CSF files via static analysis",
"keywords": [
"storybook"
diff --git a/code/lib/instrumenter/package.json b/code/lib/instrumenter/package.json
index 387aa949502..5cb7091d63c 100644
--- a/code/lib/instrumenter/package.json
+++ b/code/lib/instrumenter/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/instrumenter",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "",
"keywords": [
"storybook"
@@ -44,8 +44,7 @@
},
"dependencies": {
"@storybook/global": "^5.0.0",
- "@vitest/utils": "^2.0.5",
- "util": "^0.12.4"
+ "@vitest/utils": "^2.0.5"
},
"devDependencies": {
"typescript": "^5.3.2"
@@ -68,6 +67,9 @@
"@vitest/expect",
"@vitest/spy",
"@vitest/utils"
+ ],
+ "externals": [
+ "util"
]
},
"gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae16"
diff --git a/code/lib/react-dom-shim/package.json b/code/lib/react-dom-shim/package.json
index be911507bb2..b7712437a2a 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "",
"keywords": [
"storybook"
diff --git a/code/lib/source-loader/package.json b/code/lib/source-loader/package.json
index 67070c10721..4545ef26d8f 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Source loader",
"keywords": [
"lib",
diff --git a/code/lib/test/package.json b/code/lib/test/package.json
index 258b29a136c..a66703d9bdb 100644
--- a/code/lib/test/package.json
+++ b/code/lib/test/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/test",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "",
"keywords": [
"storybook"
@@ -51,8 +51,7 @@
"@testing-library/jest-dom": "6.5.0",
"@testing-library/user-event": "14.5.2",
"@vitest/expect": "2.0.5",
- "@vitest/spy": "2.0.5",
- "util": "^0.12.4"
+ "@vitest/spy": "2.0.5"
},
"devDependencies": {
"chai": "^5.1.1",
@@ -79,6 +78,9 @@
"@vitest/expect",
"@vitest/spy",
"@vitest/utils"
+ ],
+ "externals": [
+ "util"
]
},
"gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae16"
diff --git a/code/lib/test/src/testing-library.ts b/code/lib/test/src/testing-library.ts
index 1aa814dafdc..4ff01e47eac 100644
--- a/code/lib/test/src/testing-library.ts
+++ b/code/lib/test/src/testing-library.ts
@@ -28,7 +28,7 @@ testingLibrary.screen = new Proxy(testingLibrary.screen, {
get(target, prop, receiver) {
once.warn(dedent`
You are using Testing Library's \`screen\` object. Use \`within(canvasElement)\` instead.
- More info: https://storybook.js.org/docs/react/essentials/interactions
+ More info: https://storybook.js.org/docs/essentials/interactions
`);
return Reflect.get(target, prop, receiver);
},
diff --git a/code/package.json b/code/package.json
index 6f49f25d7ea..fdad3323c8b 100644
--- a/code/package.json
+++ b/code/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/root",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 47551fa2432..a566c2f465c 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 8c9585398c4..431dbc0d0b1 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 d436c6e26f8..97681802923 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 d0525a1869a..62671290832 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 7509a6b050b..b27e1969af9 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 4577f7c2b24..bc995f0e1f7 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 99ce9894a1d..40d012335ce 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"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 6a8b54c38db..44398d84437 100644
--- a/code/renderers/html/package.json
+++ b/code/renderers/html/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/html",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook HTML renderer",
"keywords": [
"storybook"
diff --git a/code/renderers/preact/package.json b/code/renderers/preact/package.json
index f415f70bcfb..25fbf00cb16 100644
--- a/code/renderers/preact/package.json
+++ b/code/renderers/preact/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/preact",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook Preact renderer",
"keywords": [
"storybook"
diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json
index 36f50780eef..f1180e12289 100644
--- a/code/renderers/react/package.json
+++ b/code/renderers/react/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/react",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook React renderer",
"keywords": [
"storybook"
diff --git a/code/renderers/server/package.json b/code/renderers/server/package.json
index fb723c91b93..9658133d098 100644
--- a/code/renderers/server/package.json
+++ b/code/renderers/server/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/server",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook Server renderer",
"keywords": [
"storybook"
diff --git a/code/renderers/svelte/package.json b/code/renderers/svelte/package.json
index a9629ee6e39..db0cd01b454 100644
--- a/code/renderers/svelte/package.json
+++ b/code/renderers/svelte/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/svelte",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook Svelte renderer",
"keywords": [
"storybook"
diff --git a/code/renderers/vue3/package.json b/code/renderers/vue3/package.json
index ddb3cbcaf10..01ea304a350 100644
--- a/code/renderers/vue3/package.json
+++ b/code/renderers/vue3/package.json
@@ -1,6 +1,6 @@
{
"name": "@storybook/vue3",
- "version": "8.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook Vue 3 renderer",
"keywords": [
"storybook"
diff --git a/code/renderers/web-components/package.json b/code/renderers/web-components/package.json
index 56212e13e54..ab0d88f156a 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.4.0-alpha.5",
+ "version": "8.4.0-alpha.7",
"description": "Storybook web-components renderer",
"keywords": [
"lit",
diff --git a/code/yarn.lock b/code/yarn.lock
index e5e350d2778..ddc9e33ef86 100644
--- a/code/yarn.lock
+++ b/code/yarn.lock
@@ -5446,7 +5446,6 @@ __metadata:
"@rollup/pluginutils": "npm:^5.0.2"
"@storybook/blocks": "workspace:*"
"@storybook/csf-plugin": "workspace:*"
- "@storybook/global": "npm:^5.0.0"
"@storybook/react-dom-shim": "workspace:*"
"@types/react": "npm:^16.8.0 || ^17.0.0 || ^18.0.0"
react: "npm:^18.2.0"
@@ -5764,13 +5763,11 @@ __metadata:
dependencies:
"@storybook/addon-actions": "workspace:*"
"@storybook/csf": "npm:^0.1.11"
- "@storybook/global": "npm:^5.0.0"
"@storybook/icons": "npm:^1.2.10"
"@storybook/react": "workspace:*"
"@storybook/test": "workspace:*"
"@types/color-convert": "npm:^2.0.0"
color-convert: "npm:^2.0.1"
- dequal: "npm:^2.0.2"
es-toolkit: "npm:^1.21.0"
markdown-to-jsx: "npm:^7.4.5"
memoizerific: "npm:^1.11.3"
@@ -5779,7 +5776,6 @@ __metadata:
telejson: "npm:^7.2.0"
tocbot: "npm:^4.20.1"
ts-dedent: "npm:^2.0.0"
- util-deprecate: "npm:^1.0.2"
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
@@ -5816,21 +5812,10 @@ __metadata:
sirv: "npm:^2.0.4"
slash: "npm:^5.0.0"
ts-dedent: "npm:^2.0.0"
- typescript: "npm:^5.3.2"
vite: "npm:^4.0.4"
peerDependencies:
- "@preact/preset-vite": "*"
storybook: "workspace:^"
- typescript: ">= 4.3.x"
vite: ^4.0.0 || ^5.0.0
- vite-plugin-glimmerx: "*"
- peerDependenciesMeta:
- "@preact/preset-vite":
- optional: true
- typescript:
- optional: true
- vite-plugin-glimmerx:
- optional: true
languageName: unknown
linkType: soft
@@ -6067,7 +6052,6 @@ __metadata:
browser-assert: "npm:^1.2.1"
browser-dtector: "npm:^3.4.0"
camelcase: "npm:^8.0.0"
- chai: "npm:^4.4.1"
cli-table3: "npm:^0.6.1"
commander: "npm:^12.1.0"
comment-parser: "npm:^1.4.1"
@@ -6360,7 +6344,6 @@ __metadata:
"@storybook/global": "npm:^5.0.0"
"@vitest/utils": "npm:^2.0.5"
typescript: "npm:^5.3.2"
- util: "npm:^0.12.4"
peerDependencies:
storybook: "workspace:^"
languageName: unknown
@@ -7113,7 +7096,6 @@ __metadata:
ts-dedent: "npm:^2.2.0"
type-fest: "npm:~2.19"
typescript: "npm:^5.3.2"
- util: "npm:^0.12.4"
peerDependencies:
storybook: "workspace:^"
languageName: unknown
@@ -10137,13 +10119,6 @@ __metadata:
languageName: node
linkType: hard
-"assertion-error@npm:^1.1.0":
- version: 1.1.0
- resolution: "assertion-error@npm:1.1.0"
- checksum: 10c0/25456b2aa333250f01143968e02e4884a34588a8538fbbf65c91a637f1dbfb8069249133cd2f4e530f10f624d206a664e7df30207830b659e9f5298b00a4099b
- languageName: node
- linkType: hard
-
"assertion-error@npm:^2.0.1":
version: 2.0.1
resolution: "assertion-error@npm:2.0.1"
@@ -11451,21 +11426,6 @@ __metadata:
languageName: node
linkType: hard
-"chai@npm:^4.4.1":
- version: 4.5.0
- resolution: "chai@npm:4.5.0"
- dependencies:
- assertion-error: "npm:^1.1.0"
- check-error: "npm:^1.0.3"
- deep-eql: "npm:^4.1.3"
- get-func-name: "npm:^2.0.2"
- loupe: "npm:^2.3.6"
- pathval: "npm:^1.1.1"
- type-detect: "npm:^4.1.0"
- checksum: 10c0/b8cb596bd1aece1aec659e41a6e479290c7d9bee5b3ad63d2898ad230064e5b47889a3bc367b20100a0853b62e026e2dc514acf25a3c9385f936aa3614d4ab4d
- languageName: node
- linkType: hard
-
"chai@npm:^5.1.1":
version: 5.1.1
resolution: "chai@npm:5.1.1"
@@ -11582,15 +11542,6 @@ __metadata:
languageName: node
linkType: hard
-"check-error@npm:^1.0.3":
- version: 1.0.3
- resolution: "check-error@npm:1.0.3"
- dependencies:
- get-func-name: "npm:^2.0.2"
- checksum: 10c0/94aa37a7315c0e8a83d0112b5bfb5a8624f7f0f81057c73e4707729cdd8077166c6aefb3d8e2b92c63ee130d4a2ff94bad46d547e12f3238cc1d78342a973841
- languageName: node
- linkType: hard
-
"check-error@npm:^2.1.1":
version: 2.1.1
resolution: "check-error@npm:2.1.1"
@@ -12861,15 +12812,6 @@ __metadata:
languageName: node
linkType: hard
-"deep-eql@npm:^4.1.3":
- version: 4.1.3
- resolution: "deep-eql@npm:4.1.3"
- dependencies:
- type-detect: "npm:^4.0.0"
- checksum: 10c0/ff34e8605d8253e1bf9fe48056e02c6f347b81d9b5df1c6650a1b0f6f847b4a86453b16dc226b34f853ef14b626e85d04e081b022e20b00cd7d54f079ce9bbdd
- languageName: node
- linkType: hard
-
"deep-eql@npm:^5.0.1":
version: 5.0.2
resolution: "deep-eql@npm:5.0.2"
@@ -16027,7 +15969,7 @@ __metadata:
languageName: node
linkType: hard
-"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2":
+"get-func-name@npm:^2.0.1":
version: 2.0.2
resolution: "get-func-name@npm:2.0.2"
checksum: 10c0/89830fd07623fa73429a711b9daecdb304386d237c71268007f788f113505ef1d4cc2d0b9680e072c5082490aec9df5d7758bf5ac6f1c37062855e8e3dc0b9df
@@ -19294,15 +19236,6 @@ __metadata:
languageName: node
linkType: hard
-"loupe@npm:^2.3.6":
- version: 2.3.7
- resolution: "loupe@npm:2.3.7"
- dependencies:
- get-func-name: "npm:^2.0.1"
- checksum: 10c0/71a781c8fc21527b99ed1062043f1f2bb30bdaf54fa4cf92463427e1718bc6567af2988300bc243c1f276e4f0876f29e3cbf7b58106fdc186915687456ce5bf4
- languageName: node
- linkType: hard
-
"loupe@npm:^3.1.0, loupe@npm:^3.1.1":
version: 3.1.1
resolution: "loupe@npm:3.1.1"
@@ -22558,13 +22491,6 @@ __metadata:
languageName: node
linkType: hard
-"pathval@npm:^1.1.1":
- version: 1.1.1
- resolution: "pathval@npm:1.1.1"
- checksum: 10c0/f63e1bc1b33593cdf094ed6ff5c49c1c0dc5dc20a646ca9725cc7fe7cd9995002d51d5685b9b2ec6814342935748b711bafa840f84c0bb04e38ff40a335c94dc
- languageName: node
- linkType: hard
-
"pathval@npm:^2.0.0":
version: 2.0.0
resolution: "pathval@npm:2.0.0"
@@ -27502,13 +27428,6 @@ __metadata:
languageName: node
linkType: hard
-"type-detect@npm:^4.0.0, type-detect@npm:^4.1.0":
- version: 4.1.0
- resolution: "type-detect@npm:4.1.0"
- checksum: 10c0/df8157ca3f5d311edc22885abc134e18ff8ffbc93d6a9848af5b682730ca6a5a44499259750197250479c5331a8a75b5537529df5ec410622041650a7f293e2a
- languageName: node
- linkType: hard
-
"type-fest@npm:~2.19":
version: 2.19.0
resolution: "type-fest@npm:2.19.0"
diff --git a/docs/_snippets/storybook-a11y-add.md b/docs/_snippets/storybook-a11y-add.md
new file mode 100644
index 00000000000..f95b3f3b5b6
--- /dev/null
+++ b/docs/_snippets/storybook-a11y-add.md
@@ -0,0 +1,11 @@
+```shell renderer="common" language="js" packageManager="npm"
+npx storybook add @storybook/addon-a11y
+```
+
+```shell renderer="common" language="js" packageManager="pnpm"
+pnpm exec storybook add @storybook/addon-a11y
+```
+
+```shell renderer="common" language="js" packageManager="yarn"
+yarn exec storybook add @storybook/addon-a11y
+```
diff --git a/docs/_snippets/storybook-a11y-install.md b/docs/_snippets/storybook-a11y-install.md
index 066faccd6c8..5837429854f 100644
--- a/docs/_snippets/storybook-a11y-install.md
+++ b/docs/_snippets/storybook-a11y-install.md
@@ -9,4 +9,3 @@ pnpm add --save-dev @storybook/addon-a11y
```shell renderer="common" language="js" packageManager="yarn"
yarn add --dev @storybook/addon-a11y
```
-
diff --git a/docs/_snippets/storybook-a11y-register.md b/docs/_snippets/storybook-a11y-register.md
index e29f5c9bde9..774d1462206 100644
--- a/docs/_snippets/storybook-a11y-register.md
+++ b/docs/_snippets/storybook-a11y-register.md
@@ -25,4 +25,3 @@ const config: StorybookConfig = {
export default config;
```
-
diff --git a/docs/versions/next.json b/docs/versions/next.json
index d74fdfbac9b..b7cf99de3ec 100644
--- a/docs/versions/next.json
+++ b/docs/versions/next.json
@@ -1 +1 @@
-{"version":"8.4.0-alpha.5","info":{"plain":"- Core: Migrate from `express` to `polka` - [#29230](https://github.com/storybookjs/storybook/pull/29230), thanks @43081j!\n- Core: Remove dependence on `file-system-cache` - [#29256](https://github.com/storybookjs/storybook/pull/29256), thanks @ndelangen!"}}
+{"version":"8.4.0-alpha.7","info":{"plain":"- CLI: Install Svelte CSF v5 in Svelte5 projects - [#29323](https://github.com/storybookjs/storybook/pull/29323), thanks @shilman!\n- Manager: Add tags property to ComponentEntry objects - [#29343](https://github.com/storybookjs/storybook/pull/29343), thanks @Sidnioulz!"}}
diff --git a/docs/writing-tests/accessibility-testing.mdx b/docs/writing-tests/accessibility-testing.mdx
index faa147e958c..c5560e85daf 100644
--- a/docs/writing-tests/accessibility-testing.mdx
+++ b/docs/writing-tests/accessibility-testing.mdx
@@ -19,23 +19,19 @@ Storybook provides an official [a11y addon](https://storybook.js.org/addons/@sto
### Set up the a11y addon
-If you want to check accessibility for your stories using the [addon](https://storybook.js.org/addons/@storybook/addon-a11y/), you'll need to install it and add it to your Storybook.
-
-Run the following command to install the addon.
+If you want to check accessibility for your stories using the [addon](https://storybook.js.org/addons/@storybook/addon-a11y/), you'll need to add it to your Storybook. You can do this by running the following command:
{/* prettier-ignore-start */}
-
+
{/* prettier-ignore-end */}
-Update your Storybook configuration (in `.storybook/main.js|ts`) to include the accessibility addon.
+
-{/* prettier-ignore-start */}
+The CLI's [`add`](../api/cli-options.mdx#add) command automates the addon's installation and setup. To install it manually, see our [documentation](../addons/install-addons.mdx#manual-installation) on how to install addons.
-
-
-{/* prettier-ignore-end */}
+
Start your Storybook, and you will see some noticeable differences in the UI. A new toolbar icon and the accessibility panel where you can inspect the results of the tests.