diff --git a/CHANGELOG.md b/CHANGELOG.md
index 06520612a48a..eb9f0de30cd3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,12 @@
+## 8.4.4
+
+- Addon Test: Only optimize react deps if applicable in vitest-plugin - [#29617](https://github.com/storybookjs/storybook/pull/29617), thanks @yannbf!
+
+## 8.4.3
+
+- Addon Test: Optimize internal dependencies - [#29595](https://github.com/storybookjs/storybook/pull/29595), thanks @yannbf!
+- Next.js: Add support for Next 15 - [#29587](https://github.com/storybookjs/storybook/pull/29587), thanks @yannbf!
+
## 8.4.2
- Addon Test: Fix post-install logic for Next.js Vite framework support - [#29524](https://github.com/storybookjs/storybook/pull/29524), thanks @valentinpalkovic!
diff --git a/CHANGELOG.prerelease.md b/CHANGELOG.prerelease.md
index 29827f7c8cf0..0b09a2a6f710 100644
--- a/CHANGELOG.prerelease.md
+++ b/CHANGELOG.prerelease.md
@@ -1,3 +1,10 @@
+## 8.5.0-alpha.5
+
+- Addon Test: Only optimize react deps if applicable in vitest-plugin - [#29617](https://github.com/storybookjs/storybook/pull/29617), thanks @yannbf!
+- Addon Test: Optimize internal dependencies - [#29595](https://github.com/storybookjs/storybook/pull/29595), thanks @yannbf!
+- CLI: Fix init help for `storybook` command - [#29480](https://github.com/storybookjs/storybook/pull/29480), thanks @toothlessdev!
+- Composition: Fix composed story search - [#29453](https://github.com/storybookjs/storybook/pull/29453), thanks @jsingh0026!
+
## 8.5.0-alpha.4
- Next.js: Add support for Next 15 - [#29587](https://github.com/storybookjs/storybook/pull/29587), thanks @yannbf!
diff --git a/code/addons/test/src/vitest-plugin/index.ts b/code/addons/test/src/vitest-plugin/index.ts
index 458d0292e295..968b0e656141 100644
--- a/code/addons/test/src/vitest-plugin/index.ts
+++ b/code/addons/test/src/vitest-plugin/index.ts
@@ -131,6 +131,16 @@ export const storybookTest = (options?: UserOptions): Plugin => {
config.test.server.deps.inline.push('@storybook/experimental-addon-test');
}
+ config.optimizeDeps ??= {};
+ config.optimizeDeps = {
+ ...config.optimizeDeps,
+ include: [...(config.optimizeDeps.include ?? []), '@storybook/experimental-addon-test/**'],
+ };
+
+ if (frameworkName?.includes('react') || frameworkName?.includes('nextjs')) {
+ config.optimizeDeps.include.push('react-dom/test-utils');
+ }
+
if (frameworkName?.includes('vue3')) {
config.define ??= {};
config.define.__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ = 'false';
diff --git a/code/core/src/manager/components/mobile/navigation/MobileNavigation.tsx b/code/core/src/manager/components/mobile/navigation/MobileNavigation.tsx
index fdc7de9651db..ddef2c0f2de4 100644
--- a/code/core/src/manager/components/mobile/navigation/MobileNavigation.tsx
+++ b/code/core/src/manager/components/mobile/navigation/MobileNavigation.tsx
@@ -4,6 +4,7 @@ import React from 'react';
import { IconButton } from '@storybook/core/components';
import { styled } from '@storybook/core/theming';
import { BottomBarToggleIcon, MenuIcon } from '@storybook/icons';
+import type { API_IndexHash, API_Refs } from '@storybook/types';
import { useStorybookApi, useStorybookState } from '@storybook/core/manager-api';
@@ -17,27 +18,46 @@ interface MobileNavigationProps {
showPanel: boolean;
}
+// Function to combine all indexes
+function combineIndexes(rootIndex: API_IndexHash | undefined, refs: API_Refs) {
+ // Create a copy of the root index to avoid mutation
+ const combinedIndex = { ...(rootIndex || {}) }; // Use an empty object as fallback
+
+ // Traverse refs and merge each nested index with the root index
+ Object.values(refs).forEach((ref) => {
+ if (ref.index) {
+ Object.assign(combinedIndex, ref.index);
+ }
+ });
+
+ return combinedIndex;
+}
+
/**
* Walks the tree from the current story to combine story+component+folder names into a single
* string
*/
const useFullStoryName = () => {
- const { index } = useStorybookState();
+ const { index, refs } = useStorybookState();
const api = useStorybookApi();
const currentStory = api.getCurrentStoryData();
if (!currentStory) {
return '';
}
-
+ const combinedIndex = combineIndexes(index, refs || {});
let fullStoryName = currentStory.renderLabel?.(currentStory, api) || currentStory.name;
- // @ts-expect-error (non strict)
- let node = index[currentStory.id];
- // @ts-expect-error (non strict)
- while ('parent' in node && node.parent && index[node.parent] && fullStoryName.length < 24) {
- // @ts-expect-error (non strict)
- node = index[node.parent];
+ let node = combinedIndex[currentStory.id];
+
+ while (
+ node &&
+ 'parent' in node &&
+ node.parent &&
+ combinedIndex[node.parent] &&
+ fullStoryName.length < 24
+ ) {
+ node = combinedIndex[node.parent];
const parentName = node.renderLabel?.(node, api) || node.name;
fullStoryName = `${parentName}/${fullStoryName}`;
}
diff --git a/code/core/src/manager/components/sidebar/TestingModule.tsx b/code/core/src/manager/components/sidebar/TestingModule.tsx
index c020ebe53f09..510fdc24212c 100644
--- a/code/core/src/manager/components/sidebar/TestingModule.tsx
+++ b/code/core/src/manager/components/sidebar/TestingModule.tsx
@@ -175,10 +175,10 @@ const DynamicInfo = ({ state }: { state: TestProviders[keyof TestProviders] }) =
const Title = state.title;
return (
-
+
-
+
@@ -244,7 +244,7 @@ export const TestingModule = ({
>
{testProviders.map((state) => (
-
+
{state.watchable && (
diff --git a/code/e2e-tests/composition.spec.ts b/code/e2e-tests/composition.spec.ts
index 8e50987675b5..15bc6c4c4ed9 100644
--- a/code/e2e-tests/composition.spec.ts
+++ b/code/e2e-tests/composition.spec.ts
@@ -11,12 +11,10 @@ test.describe('composition', () => {
'Slow, framework independent test, so only run it on in react-vite/default-ts'
);
- test.beforeEach(async ({ page }) => {
+ test('should filter and render composed stories', async ({ page }) => {
await page.goto(storybookUrl);
await new SbPage(page, expect).waitUntilLoaded();
- });
- test('should correctly filter composed stories', async ({ page }) => {
// Expect that composed Storybooks are visible
await expect(page.getByTitle('Storybook 8.0.0')).toBeVisible();
await expect(page.getByTitle('Storybook 7.6.18')).toBeVisible();
@@ -35,10 +33,64 @@ test.describe('composition', () => {
// Expect composed stories `to be available in the search
await page.getByPlaceholder('Find components').fill('Button');
await expect(
- page.getByRole('option', { name: 'Button Storybook 8.0.0 / @blocks / examples' })
+ page.getByRole('option', { name: 'Button Storybook 7.6.18 / @blocks / examples' })
).toBeVisible();
+
+ const buttonStory = page.getByRole('option', {
+ name: 'Button Storybook 8.0.0 / @blocks / examples',
+ });
+ await expect(buttonStory).toBeVisible();
+ await buttonStory.click();
+
+ // Note: this could potentially be flaky due to it accessing a hosted Storybook
+ await expect(
+ page
+ .locator('iframe[title="storybook-ref-storybook\\@8\\.0\\.0"]')
+ .contentFrame()
+ .getByRole('heading', { name: 'Example button component' })
+ ).toBeVisible({ timeout: 15000 });
+ });
+
+ test('should filter and render composed stories on mobile', async ({ page }) => {
+ page.setViewportSize({ width: 320, height: 800 });
+ await page.goto(storybookUrl);
+ await new SbPage(page, expect).waitUntilLoaded();
+
+ await page.click('button[title="Open navigation menu"]');
+
+ // Expect that composed Storybooks are visible
+ await expect(page.getByTitle('Storybook 8.0.0')).toBeVisible();
+ await expect(page.getByTitle('Storybook 7.6.18')).toBeVisible();
+
+ // Expect composed stories to be available in the sidebar
+ await page.locator('[id="storybook\\@8\\.0\\.0_components-badge"]').click();
+ await expect(
+ page.locator('[id="storybook\\@8\\.0\\.0_components-badge--default"]')
+ ).toBeVisible();
+
+ await page.locator('[id="storybook\\@7\\.6\\.18_components-badge"]').click();
+ await expect(
+ page.locator('[id="storybook\\@7\\.6\\.18_components-badge--default"]')
+ ).toBeVisible();
+
+ // Expect composed stories `to be available in the search
+ await page.getByPlaceholder('Find components').fill('Button');
await expect(
page.getByRole('option', { name: 'Button Storybook 7.6.18 / @blocks / examples' })
).toBeVisible();
+
+ const buttonStory = page.getByRole('option', {
+ name: 'Button Storybook 8.0.0 / @blocks / examples',
+ });
+ await expect(buttonStory).toBeVisible();
+ await buttonStory.click();
+
+ // Note: this could potentially be flaky due to it accessing a hosted Storybook
+ await expect(
+ page
+ .locator('iframe[title="storybook-ref-storybook\\@8\\.0\\.0"]')
+ .contentFrame()
+ .getByRole('heading', { name: 'Example button component' })
+ ).toBeVisible({ timeout: 15000 });
});
});
diff --git a/code/lib/cli-storybook/src/bin/index.ts b/code/lib/cli-storybook/src/bin/index.ts
index 2eaa769e4186..165b3f9dd999 100644
--- a/code/lib/cli-storybook/src/bin/index.ts
+++ b/code/lib/cli-storybook/src/bin/index.ts
@@ -40,6 +40,27 @@ const command = (name: string) =>
.option('--debug', 'Get more logs in debug mode', false)
.option('--enable-crash-reports', 'Enable sending crash reports to telemetry data');
+command('init')
+ .description('Initialize Storybook into your project')
+ .option('-f --force', 'Force add Storybook')
+ .option('-s --skip-install', 'Skip installing deps')
+ .option('--package-manager ', 'Force package manager for installing deps')
+ .option('--use-pnp', 'Enable PnP mode for Yarn 2+')
+ .option('-p --parser ', 'jscodeshift parser')
+ .option('-t --type ', 'Add Storybook for a specific project type')
+ .option('-y --yes', 'Answer yes to all prompts')
+ .option('-b --builder ', 'Builder library')
+ .option('-l --linkable', 'Prepare installation for link (contributor helper)')
+ .option(
+ '--dev',
+ 'Launch the development server after completing initialization. Enabled by default (default: true)',
+ process.env.CI !== 'true' && process.env.IN_STORYBOOK_SANDBOX !== 'true'
+ )
+ .option(
+ '--no-dev',
+ 'Complete the initialization of Storybook without launching the Storybook development server'
+ );
+
command('add ')
.description('Add an addon to your Storybook')
.option(
diff --git a/code/lib/cli-storybook/test/default/cli.test.cjs b/code/lib/cli-storybook/test/default/cli.test.cjs
index b569fa4dc5c6..f55fa0ef9a61 100755
--- a/code/lib/cli-storybook/test/default/cli.test.cjs
+++ b/code/lib/cli-storybook/test/default/cli.test.cjs
@@ -1,4 +1,4 @@
-import { describe, it, expect } from 'vitest';
+import { describe, expect, it } from 'vitest';
const run = require('../helpers.cjs');
@@ -12,3 +12,92 @@ describe('Default behavior', () => {
expect(stdout.toString()).toContain('Did you mean upgrade?');
});
});
+
+describe('Help command', () => {
+ it('should prints out "init" command', () => {
+ const { status, stdout, stderr } = run(['help']);
+
+ expect(status).toBe(0);
+ expect(stderr.toString()).toBe('');
+ expect(stdout.toString()).toContain('init');
+ expect(stdout.toString()).toContain('Initialize Storybook into your project');
+ });
+
+ it('should prints out "add" command', () => {
+ const { status, stdout, stderr } = run(['help']);
+
+ expect(status).toBe(0);
+ expect(stderr.toString()).toBe('');
+ expect(stdout.toString()).toContain('add');
+ expect(stdout.toString()).toContain('Add an addon to your Storybook');
+ });
+
+ it('should prints out "remove" command', () => {
+ const { status, stdout, stderr } = run(['help']);
+
+ expect(status).toBe(0);
+ expect(stderr.toString()).toBe('');
+ expect(stdout.toString()).toContain('remove');
+ expect(stdout.toString()).toContain('Remove an addon from your Storybook');
+ });
+
+ it('should prints out "upgrade" command', () => {
+ const { status, stdout, stderr } = run(['help']);
+
+ expect(status).toBe(0);
+ expect(stderr.toString()).toBe('');
+ expect(stdout.toString()).toContain('upgrade');
+ expect(stdout.toString()).toContain('Upgrade your Storybook packages to');
+ });
+
+ it('should prints out "migrate" command', () => {
+ const { status, stdout, stderr } = run(['help']);
+
+ expect(status).toBe(0);
+ expect(stderr.toString()).toBe('');
+ expect(stdout.toString()).toContain('migrate');
+ expect(stdout.toString()).toContain('Run a Storybook codemod migration on your source files');
+ });
+
+ it('should prints out "sandbox" command', () => {
+ const { status, stdout, stderr } = run(['help']);
+
+ expect(status).toBe(0);
+ expect(stderr.toString()).toBe('');
+ expect(stdout.toString()).toContain('sandbox');
+ expect(stdout.toString()).toContain('Create a sandbox from a set of possible templates');
+ });
+
+ it('should prints out "link" command', () => {
+ const { status, stdout, stderr } = run(['help']);
+
+ expect(status).toBe(0);
+ expect(stderr.toString()).toBe('');
+ expect(stdout.toString()).toContain('link');
+ expect(stdout.toString()).toContain(
+ 'Pull down a repro from a URL (or a local directory), link it, and run storybook'
+ );
+ });
+
+ it('should prints out "automigrate" command', () => {
+ const { status, stdout, stderr } = run(['help']);
+
+ expect(status).toBe(0);
+ expect(stderr.toString()).toBe('');
+ expect(stdout.toString()).toContain('automigrate');
+ expect(stdout.toString()).toContain(
+ 'Check storybook for incompatibilities or migrations and apply fixes'
+ );
+ });
+
+ it('should prints out "doctor" command', () => {
+ const { status, stdout, stderr } = run(['help']);
+
+ expect(status).toBe(0);
+ expect(stderr.toString()).toBe('');
+ expect(stdout.toString()).toContain('doctor');
+ expect(stdout.toString()).toContain(
+ 'Check Storybook for known problems and provide suggestions or fixes'
+ );
+ });
+});
diff --git a/code/package.json b/code/package.json
index 9d90dce863a8..e10802edfb6e 100644
--- a/code/package.json
+++ b/code/package.json
@@ -293,5 +293,6 @@
"Dependency Upgrades"
]
]
- }
+ },
+ "deferredNextVersion": "8.5.0-alpha.5"
}
diff --git a/code/playwright.config.ts b/code/playwright.config.ts
index dee882693c80..5b29fa4cce32 100644
--- a/code/playwright.config.ts
+++ b/code/playwright.config.ts
@@ -3,6 +3,10 @@ import { defineConfig, devices } from '@playwright/test';
/** Read environment variables from file. https://github.com/motdotla/dotenv */
// require('dotenv').config();
+// Comment this out and fill in the values to run E2E tests locally using the Playwright extension easily
+// process.env.STORYBOOK_URL = 'http://localhost:6006';
+// process.env.STORYBOOK_TEMPLATE_NAME = 'react-vite/default-ts';
+
/** See https://playwright.dev/docs/test-configuration. */
export default defineConfig({
testDir: './e2e-tests',
diff --git a/docs/_snippets/addon-viewport-options-in-preview.md b/docs/_snippets/addon-viewport-options-in-preview.md
index 332b1e171235..c342682af443 100644
--- a/docs/_snippets/addon-viewport-options-in-preview.md
+++ b/docs/_snippets/addon-viewport-options-in-preview.md
@@ -4,7 +4,7 @@ import { INITIAL_VIEWPORTS } from '@storybook/addon-viewport';
export default {
parameters: {
viewport: {
- viewports: INITIAL_VIEWPORTS,
+ options: INITIAL_VIEWPORTS,
},
},
initialGlobals: {
@@ -20,7 +20,7 @@ import { Preview } from '@storybook/your-renderer';
const preview: Preview = {
parameters: {
viewport: {
- viewports: INITIAL_VIEWPORTS,
+ options: INITIAL_VIEWPORTS,
},
},
initialGlobals: {
diff --git a/docs/versions/next.json b/docs/versions/next.json
index 61e79e389a3b..13e6d855b1e8 100644
--- a/docs/versions/next.json
+++ b/docs/versions/next.json
@@ -1 +1 @@
-{"version":"8.5.0-alpha.4","info":{"plain":"- Next.js: Add support for Next 15 - [#29587](https://github.com/storybookjs/storybook/pull/29587), thanks @yannbf!\n- UI: Add Yarn to About Section - [#29225](https://github.com/storybookjs/storybook/pull/29225), thanks @grantwforsythe!"}}
+{"version":"8.5.0-alpha.5","info":{"plain":"- Addon Test: Only optimize react deps if applicable in vitest-plugin - [#29617](https://github.com/storybookjs/storybook/pull/29617), thanks @yannbf!\n- Addon Test: Optimize internal dependencies - [#29595](https://github.com/storybookjs/storybook/pull/29595), thanks @yannbf!\n- CLI: Fix init help for `storybook` command - [#29480](https://github.com/storybookjs/storybook/pull/29480), thanks @toothlessdev!\n- Composition: Fix composed story search - [#29453](https://github.com/storybookjs/storybook/pull/29453), thanks @jsingh0026!"}}
diff --git a/test-storybooks/portable-stories-kitchen-sink/react/.storybook/main.ts b/test-storybooks/portable-stories-kitchen-sink/react/.storybook/main.ts
index fe2baa61d4a6..9a2664c6e951 100644
--- a/test-storybooks/portable-stories-kitchen-sink/react/.storybook/main.ts
+++ b/test-storybooks/portable-stories-kitchen-sink/react/.storybook/main.ts
@@ -3,8 +3,8 @@ import type { StorybookConfig } from "@storybook/react-vite";
const config: StorybookConfig = {
stories: ["../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
addons: [
+ "@storybook/addon-controls",
"@storybook/experimental-addon-test",
- "@storybook/addon-controls"
],
framework: {
name: "@storybook/react-vite",
diff --git a/test-storybooks/portable-stories-kitchen-sink/react/e2e-tests/component-testing.spec.ts b/test-storybooks/portable-stories-kitchen-sink/react/e2e-tests/component-testing.spec.ts
index f14478f0cbea..1882070794ac 100644
--- a/test-storybooks/portable-stories-kitchen-sink/react/e2e-tests/component-testing.spec.ts
+++ b/test-storybooks/portable-stories-kitchen-sink/react/e2e-tests/component-testing.spec.ts
@@ -65,12 +65,22 @@ test.describe("component testing", () => {
if ((await testStoryElement.getAttribute("aria-expanded")) !== "true") {
testStoryElement.click();
}
+
+ const testingModuleDescription = await page.locator('[data-module-id="storybook/test/test-provider"]').locator('#testing-module-description');
- await page.getByRole('button', { name: 'Run tests' }).click();
+ await expect(testingModuleDescription).toContainText('Not run');
+
+ const runTestsButton = await page.getByLabel('Start component tests')
+
+ await runTestsButton.click();
+
+ await expect(testingModuleDescription).toContainText('Testing', { timeout: 60000 });
// Wait for test results to appear
+ await expect(testingModuleDescription).toHaveText(/Ran \d+ tests/, { timeout: 60000 });
+
const errorFilter = page.getByLabel("Toggle errors");
- await expect(errorFilter).toBeVisible({ timeout: 30000 });
+ await expect(errorFilter).toBeVisible();
// Assert discrepancy: CLI pass + Browser fail
const failingStoryElement = page.locator(
@@ -107,18 +117,39 @@ test.describe("component testing", () => {
const sbPage = new SbPage(page, expect);
await sbPage.navigateToStory("addons/test", "Expected Failure");
-
+
// For whatever reason, sometimes it takes longer for the story to load
const storyElement = sbPage
.getCanvasBodyElement()
.getByRole("button", { name: "test" });
await expect(storyElement).toBeVisible({ timeout: 10000 });
- await page.getByRole('button', { name: 'Run tests' }).click();
+ await expect(page.locator('#testing-module-title')).toHaveText('Component tests');
+
+ const testingModuleDescription = await page.locator('[data-module-id="storybook/test/test-provider"]').locator('#testing-module-description');
+
+ await expect(testingModuleDescription).toContainText('Not run');
+
+ const runTestsButton = await page.getByLabel('Start component tests')
+ const watchModeButton = await page.getByLabel('Enable watch mode for Component tests')
+ await expect(runTestsButton).toBeEnabled();
+ await expect(watchModeButton).toBeEnabled();
+
+ await runTestsButton.click();
+
+ await expect(runTestsButton).toBeDisabled();
+ await expect(watchModeButton).toBeDisabled();
+
+ await expect(testingModuleDescription).toContainText('Testing');
// Wait for test results to appear
+ await expect(testingModuleDescription).toHaveText(/Ran \d+ tests/, { timeout: 30000 });
+
+ await expect(runTestsButton).toBeEnabled();
+ await expect(watchModeButton).toBeEnabled();
+
const errorFilter = page.getByLabel("Toggle errors");
- await expect(errorFilter).toBeVisible({ timeout: 30000 });
+ await expect(errorFilter).toBeVisible();
// Assert for expected success
const successfulStoryElement = page.locator(
@@ -147,7 +178,7 @@ test.describe("component testing", () => {
await expect(sidebarItems).toHaveCount(1);
});
- test("should execute tests via testing module UI watch mode", async ({
+ test("should execute watch mode tests via testing module UI", async ({
page,
browserName,
}) => {
diff --git a/test-storybooks/portable-stories-kitchen-sink/react/stories/AddonTest.stories.tsx b/test-storybooks/portable-stories-kitchen-sink/react/stories/AddonTest.stories.tsx
index 8670debe5e45..365ed4da0e6b 100644
--- a/test-storybooks/portable-stories-kitchen-sink/react/stories/AddonTest.stories.tsx
+++ b/test-storybooks/portable-stories-kitchen-sink/react/stories/AddonTest.stories.tsx
@@ -1,3 +1,4 @@
+import { Meta } from '@storybook/react'
import { instrument } from '@storybook/instrumenter'
import type { StoryAnnotations } from 'storybook/internal/types';
diff --git a/test-storybooks/portable-stories-kitchen-sink/react/yarn.lock b/test-storybooks/portable-stories-kitchen-sink/react/yarn.lock
index 958dd6072e37..2041ffe4ec1a 100644
--- a/test-storybooks/portable-stories-kitchen-sink/react/yarn.lock
+++ b/test-storybooks/portable-stories-kitchen-sink/react/yarn.lock
@@ -1769,11 +1769,11 @@ __metadata:
linkType: soft
"@storybook/components@file:../../../code/deprecated/components::locator=portable-stories-react%40workspace%3A.":
- version: 8.4.0-alpha.7
- resolution: "@storybook/components@file:../../../code/deprecated/components#../../../code/deprecated/components::hash=a9048b&locator=portable-stories-react%40workspace%3A."
+ version: 8.5.0-alpha.4
+ resolution: "@storybook/components@file:../../../code/deprecated/components#../../../code/deprecated/components::hash=60237a&locator=portable-stories-react%40workspace%3A."
peerDependencies:
- storybook: "workspace:^"
- checksum: 10/2e10c1adea642a4c1245d18d97ef20aa6a5aae7b0ef0dda10db113e31a76231e68aa263fe62ee966061d2a6841abe069df21be14fb5141dc7df73d17a94ff154
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+ checksum: 10/0366ac53c8eed65b69aaa174337d27ec2283c446b328811f92ffc9de0a219860afd2e3bdc5f11c30485c43c21d246ff036bca74429ba307dc557917d14a9beba
languageName: node
linkType: hard
@@ -1829,8 +1829,8 @@ __metadata:
linkType: hard
"@storybook/experimental-addon-test@file:../../../code/addons/test::locator=portable-stories-react%40workspace%3A.":
- version: 8.4.0-alpha.7
- resolution: "@storybook/experimental-addon-test@file:../../../code/addons/test#../../../code/addons/test::hash=82a764&locator=portable-stories-react%40workspace%3A."
+ version: 8.5.0-alpha.4
+ resolution: "@storybook/experimental-addon-test@file:../../../code/addons/test#../../../code/addons/test::hash=6bed1d&locator=portable-stories-react%40workspace%3A."
dependencies:
"@storybook/csf": "npm:^0.1.11"
"@storybook/global": "npm:^5.0.0"
@@ -1853,7 +1853,7 @@ __metadata:
optional: true
vitest:
optional: true
- checksum: 10/e3092244dbfd410cd43a3561d84aa05fe158264e624bc4cb500f2c8efc425f01ec5ead5e25e322a6ebb9cad5f704a52bbd15bf2abc9b7f6e99db89c08f37382e
+ checksum: 10/9d842f824d9891bd19e508d654ce7f9f7cf8c73090588b84f29b2649e68338d13d7cd85a6d4bd92fe6beef276eb12783445bed4a4249563a5986f6f537ccc6d8
languageName: node
linkType: hard
@@ -1886,20 +1886,20 @@ __metadata:
linkType: soft
"@storybook/manager-api@file:../../../code/deprecated/manager-api::locator=portable-stories-react%40workspace%3A.":
- version: 8.4.0-alpha.7
- resolution: "@storybook/manager-api@file:../../../code/deprecated/manager-api#../../../code/deprecated/manager-api::hash=3b0337&locator=portable-stories-react%40workspace%3A."
+ version: 8.5.0-alpha.4
+ resolution: "@storybook/manager-api@file:../../../code/deprecated/manager-api#../../../code/deprecated/manager-api::hash=8c9581&locator=portable-stories-react%40workspace%3A."
peerDependencies:
- storybook: "workspace:^"
- checksum: 10/ad5bff1af09421670ff6b60df46231c737d7d3530c0930995fb4b39060781f7d6f276c0f941d8e534accc5dbae66f564d246e0da018b9c5ca3ee1e811b04f325
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+ checksum: 10/20f439e660e49c2bba2ce4fc73ddb9306c04cea9e6eaa0ddc23fc2047e135b7df4cc0b742dc662cee71013051b0d7e9e9e7a4f28323c1734fc6ad024ac47b9db
languageName: node
linkType: hard
"@storybook/preview-api@file:../../../code/deprecated/preview-api::locator=portable-stories-react%40workspace%3A.":
- version: 8.4.0-alpha.7
- resolution: "@storybook/preview-api@file:../../../code/deprecated/preview-api#../../../code/deprecated/preview-api::hash=56e670&locator=portable-stories-react%40workspace%3A."
+ version: 8.5.0-alpha.4
+ resolution: "@storybook/preview-api@file:../../../code/deprecated/preview-api#../../../code/deprecated/preview-api::hash=a7858a&locator=portable-stories-react%40workspace%3A."
peerDependencies:
- storybook: "workspace:^"
- checksum: 10/0242d50ab4d165b926bc389791a3deb76fd0148dc1f39b31ec2ae7e77f017613b87cf0efc89ec8b6ae72128b9cc84b3289e921eaa1940180fc3482d158339fbd
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+ checksum: 10/29559a5fd2698758e0bcf5442421fb583da5d95344f9740dcdc3615b3bec3dfb105f134fba08423a1fd1a68fbfa2615c91408271c4ef8926d43c0b5c6f8d0bb8
languageName: node
linkType: hard
@@ -1938,12 +1938,12 @@ __metadata:
version: 0.0.0-use.local
resolution: "@storybook/react@portal:../../../code/renderers/react::locator=portable-stories-react%40workspace%3A."
dependencies:
- "@storybook/components": "workspace:^"
+ "@storybook/components": "workspace:*"
"@storybook/global": "npm:^5.0.0"
- "@storybook/manager-api": "workspace:^"
- "@storybook/preview-api": "workspace:^"
+ "@storybook/manager-api": "workspace:*"
+ "@storybook/preview-api": "workspace:*"
"@storybook/react-dom-shim": "workspace:*"
- "@storybook/theming": "workspace:^"
+ "@storybook/theming": "workspace:*"
peerDependencies:
"@storybook/test": "workspace:*"
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
@@ -1976,11 +1976,11 @@ __metadata:
linkType: soft
"@storybook/theming@file:../../../code/deprecated/theming::locator=portable-stories-react%40workspace%3A.":
- version: 8.4.0-alpha.7
- resolution: "@storybook/theming@file:../../../code/deprecated/theming#../../../code/deprecated/theming::hash=3f019a&locator=portable-stories-react%40workspace%3A."
+ version: 8.5.0-alpha.4
+ resolution: "@storybook/theming@file:../../../code/deprecated/theming#../../../code/deprecated/theming::hash=74a1c8&locator=portable-stories-react%40workspace%3A."
peerDependencies:
- storybook: "workspace:^"
- checksum: 10/80024449814b032a9156fe2c70ff481fcfd04f5812c818b162dadadad36b9e642e1577ec51fd1330937d30853538c216662aad8f002cc75d088dc73e019afc2d
+ storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0
+ checksum: 10/387dd03f4a10a4a1f6381a9e150a3c4a96a5ce3f6aec4557a954fa3c629630e667a5e60003fed6a5ed31a7844dcd3507bcf996614e1ddb0cda8ad74b6922f3b4
languageName: node
linkType: hard