diff --git a/.circleci/config.yml b/.circleci/config.yml index 596da221fa85..4c67a2a010a0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -593,19 +593,19 @@ workflows: requires: - unit-tests - create-sandboxes: - parallelism: 20 + parallelism: 19 requires: - build - build-sandboxes: - parallelism: 20 + parallelism: 19 requires: - create-sandboxes - chromatic-sandboxes: - parallelism: 18 + parallelism: 17 requires: - build-sandboxes - e2e-production: - parallelism: 18 + parallelism: 17 requires: - build-sandboxes - e2e-dev: @@ -613,7 +613,7 @@ workflows: requires: - create-sandboxes - test-runner-production: - parallelism: 18 + parallelism: 17 requires: - build-sandboxes - bench: @@ -647,22 +647,22 @@ workflows: requires: - build - create-sandboxes: - parallelism: 34 + parallelism: 33 requires: - build # - smoke-test-sandboxes: # disabled for now # requires: # - create-sandboxes - build-sandboxes: - parallelism: 34 + parallelism: 33 requires: - create-sandboxes - chromatic-sandboxes: - parallelism: 32 + parallelism: 31 requires: - build-sandboxes - e2e-production: - parallelism: 32 + parallelism: 31 requires: - build-sandboxes - e2e-dev: @@ -670,7 +670,7 @@ workflows: requires: - create-sandboxes - test-runner-production: - parallelism: 32 + parallelism: 31 requires: - build-sandboxes # TODO: reenable once we find out the source of flakyness diff --git a/.github/workflows/prepare-patch-release.yml b/.github/workflows/prepare-patch-release.yml index 20a4e24d023e..00ed4bd7fa09 100644 --- a/.github/workflows/prepare-patch-release.yml +++ b/.github/workflows/prepare-patch-release.yml @@ -84,8 +84,8 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - git config --global user.name 'github-actions[bot]' - git config --global user.email 'github-actions[bot]@users.noreply.github.com' + git config --global user.name 'storybook-bot' + git config --global user.email '32066757+storybook-bot@users.noreply.github.com' yarn release:pick-patches - name: Bump version @@ -117,8 +117,8 @@ jobs: - name: 'Commit changes to branch: version-patch-from-${{ steps.versions.outputs.current }}' working-directory: . run: | - git config --global user.name 'github-actions[bot]' - git config --global user.email 'github-actions[bot]@users.noreply.github.com' + git config --global user.name 'storybook-bot' + git config --global user.email '32066757+storybook-bot@users.noreply.github.com' git checkout -b version-patch-from-${{ steps.versions.outputs.current }} git add . git commit -m "Bump version from ${{ steps.versions.outputs.current }} to ${{ steps.versions.outputs.next }}" || true diff --git a/.github/workflows/prepare-prerelease.yml b/.github/workflows/prepare-prerelease.yml index bf387d464ccf..211996d4821b 100644 --- a/.github/workflows/prepare-prerelease.yml +++ b/.github/workflows/prepare-prerelease.yml @@ -121,8 +121,8 @@ jobs: - name: 'Commit changes to branch: version-prerelease-from-${{ steps.bump-version.outputs.current-version }}' working-directory: . run: | - git config --global user.name 'github-actions[bot]' - git config --global user.email 'github-actions[bot]@users.noreply.github.com' + git config --global user.name 'storybook-bot' + git config --global user.email '32066757+storybook-bot@users.noreply.github.com' git checkout -b version-prerelease-from-${{ steps.bump-version.outputs.current-version }} git add . git commit -m "Bump version from ${{ steps.bump-version.outputs.current-version }} to ${{ steps.bump-version.outputs.next-version }}" || true diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 5dd070b1fe1b..2374708d1b57 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -112,8 +112,8 @@ jobs: - name: Merge ${{ github.ref_name }} into ${{ steps.target.outputs.target }} run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "github-actions[bot]@users.noreply.github.com" + git config --global user.name "storybook-bot" + git config --global user.email "32066757+storybook-bot@users.noreply.github.com" git fetch origin ${{ steps.target.outputs.target }} git checkout ${{ steps.target.outputs.target }} git merge ${{ github.ref_name }} diff --git a/.vscode/settings.json b/.vscode/settings.json index b600f07551c2..1737faa78f27 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -51,5 +51,6 @@ "*.js": "javascriptreact" }, "prettier.ignorePath": "./code/.prettierignore", - "typescript.tsdk": "./code/node_modules/typescript/lib" + "typescript.tsdk": "./code/node_modules/typescript/lib", + "storyExplorer.storybookConfigDir": "./code/ui/.storybook" } \ No newline at end of file diff --git a/CHANGELOG.prerelease.md b/CHANGELOG.prerelease.md index d589df877029..3dc7536bde09 100644 --- a/CHANGELOG.prerelease.md +++ b/CHANGELOG.prerelease.md @@ -1,3 +1,12 @@ +## 7.1.0-beta.3 + +- CLI: Update Configure.mdx - [#23340](https://github.com/storybookjs/storybook/pull/23340), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! +- React: Move `typescript` from devDependencies to peerDependencies - [#23179](https://github.com/storybookjs/storybook/pull/23179), thanks [@chakAs3](https://github.com/chakAs3)! +- Settings: Add disable whatsnew UI - [#23381](https://github.com/storybookjs/storybook/pull/23381), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Settings: New about page design - [#23357](https://github.com/storybookjs/storybook/pull/23357), thanks [@kasperpeulen](https://github.com/kasperpeulen)! +- Svelte-Webpack: Support Svelte v4 - [#23336](https://github.com/storybookjs/storybook/pull/23336), thanks [@JReinhold](https://github.com/JReinhold)! +- UI: Remove css zoom - [#21303](https://github.com/storybookjs/storybook/pull/21303), thanks [@Luk-z](https://github.com/Luk-z)! + ## 7.1.0-beta.2 - Next.js: Fix for @nx/react/plugin/storybook with stories containing SVGs - [#23210](https://github.com/storybookjs/storybook/pull/23210), thanks [@daves28](https://github.com/daves28)! diff --git a/code/addons/a11y/package.json b/code/addons/a11y/package.json index 7ee86d557e28..4958bee3922e 100644 --- a/code/addons/a11y/package.json +++ b/code/addons/a11y/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-a11y", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Test component compliance with web accessibility standards", "keywords": [ "a11y", @@ -63,16 +63,16 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addon-highlight": "7.1.0-beta.2", - "@storybook/channels": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/addon-highlight": "7.1.0-beta.3", + "@storybook/channels": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "axe-core": "^4.2.0", "lodash": "^4.17.21", "react-resize-detector": "^7.1.2" diff --git a/code/addons/actions/package.json b/code/addons/actions/package.json index 1077c45c56d5..869931c29c19 100644 --- a/code/addons/actions/package.json +++ b/code/addons/actions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-actions", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Get UI feedback when an action is performed on an interactive element", "keywords": [ "storybook", @@ -80,14 +80,14 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "dequal": "^2.0.2", "lodash": "^4.17.21", "polished": "^4.2.2", diff --git a/code/addons/backgrounds/package.json b/code/addons/backgrounds/package.json index 82a51a3cf285..5eebe3293204 100644 --- a/code/addons/backgrounds/package.json +++ b/code/addons/backgrounds/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-backgrounds", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Switch backgrounds to view components in different settings", "keywords": [ "addon", @@ -76,14 +76,14 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "memoizerific": "^1.11.3", "ts-dedent": "^2.0.0" }, diff --git a/code/addons/controls/package.json b/code/addons/controls/package.json index cbe2d9c79275..0bd4f853f2eb 100644 --- a/code/addons/controls/package.json +++ b/code/addons/controls/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-controls", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Interact with component inputs dynamically in the Storybook UI", "keywords": [ "addon", @@ -68,15 +68,15 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/blocks": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/blocks": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" }, diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json index 0d159cc3e506..6c3466e8e4c4 100644 --- a/code/addons/docs/package.json +++ b/code/addons/docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-docs", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Document component usage and properties in Markdown", "keywords": [ "addon", @@ -99,19 +99,19 @@ "dependencies": { "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/csf-plugin": "7.1.0-beta.2", - "@storybook/csf-tools": "7.1.0-beta.2", + "@storybook/blocks": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/csf-plugin": "7.1.0-beta.3", + "@storybook/csf-tools": "7.1.0-beta.3", "@storybook/global": "^5.0.0", "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/postinstall": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/react-dom-shim": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/postinstall": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/react-dom-shim": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", diff --git a/code/addons/essentials/package.json b/code/addons/essentials/package.json index 1976cbfb456a..b58f38acec9f 100644 --- a/code/addons/essentials/package.json +++ b/code/addons/essentials/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-essentials", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Curated addons to bring out the best of Storybook", "keywords": [ "addon", @@ -119,23 +119,23 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addon-actions": "7.1.0-beta.2", - "@storybook/addon-backgrounds": "7.1.0-beta.2", - "@storybook/addon-controls": "7.1.0-beta.2", - "@storybook/addon-docs": "7.1.0-beta.2", - "@storybook/addon-highlight": "7.1.0-beta.2", - "@storybook/addon-measure": "7.1.0-beta.2", - "@storybook/addon-outline": "7.1.0-beta.2", - "@storybook/addon-toolbars": "7.1.0-beta.2", - "@storybook/addon-viewport": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", + "@storybook/addon-actions": "7.1.0-beta.3", + "@storybook/addon-backgrounds": "7.1.0-beta.3", + "@storybook/addon-controls": "7.1.0-beta.3", + "@storybook/addon-docs": "7.1.0-beta.3", + "@storybook/addon-highlight": "7.1.0-beta.3", + "@storybook/addon-measure": "7.1.0-beta.3", + "@storybook/addon-outline": "7.1.0-beta.3", + "@storybook/addon-toolbars": "7.1.0-beta.3", + "@storybook/addon-viewport": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", "ts-dedent": "^2.0.0" }, "devDependencies": { - "@storybook/vue": "7.1.0-beta.2", + "@storybook/vue": "7.1.0-beta.3", "typescript": "^4.9.3" }, "peerDependencies": { diff --git a/code/addons/gfm/package.json b/code/addons/gfm/package.json index 16eb49007c2c..62dd989f6cdb 100644 --- a/code/addons/gfm/package.json +++ b/code/addons/gfm/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-mdx-gfm", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "GitHub Flavored Markdown in Storybook", "keywords": [ "addon", @@ -51,7 +51,7 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/node-logger": "7.1.0-beta.2", + "@storybook/node-logger": "7.1.0-beta.3", "remark-gfm": "^3.0.1", "ts-dedent": "^2.0.0" }, diff --git a/code/addons/highlight/package.json b/code/addons/highlight/package.json index 43d94ef80006..f169a4612d82 100644 --- a/code/addons/highlight/package.json +++ b/code/addons/highlight/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-highlight", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Highlight DOM nodes within your stories", "keywords": [ "storybook-addons", @@ -61,9 +61,9 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-beta.2" + "@storybook/preview-api": "7.1.0-beta.3" }, "devDependencies": { "@types/webpack-env": "^1.16.0", diff --git a/code/addons/interactions/package.json b/code/addons/interactions/package.json index b549ebe7929f..b2b55a7aa028 100644 --- a/code/addons/interactions/package.json +++ b/code/addons/interactions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-interactions", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Automate, test and debug user interactions", "keywords": [ "storybook-addons", @@ -72,16 +72,16 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "7.1.0-beta.2", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/instrumenter": "7.1.0-beta.3", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "jest-mock": "^29.5.0", "polished": "^4.2.2", "ts-dedent": "^2.2.0" diff --git a/code/addons/jest/package.json b/code/addons/jest/package.json index dacc8b922386..1b0e87769669 100644 --- a/code/addons/jest/package.json +++ b/code/addons/jest/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-jest", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "React storybook addon that show component jest report", "keywords": [ "addon", @@ -70,13 +70,13 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3", "react-resize-detector": "^7.1.2", "tiny-invariant": "^1.3.1", "upath": "^2.0.1" diff --git a/code/addons/links/package.json b/code/addons/links/package.json index 91fd1daf25af..f88fe845c9f5 100644 --- a/code/addons/links/package.json +++ b/code/addons/links/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-links", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Link stories together to build demos and prototypes with your UI components", "keywords": [ "addon", @@ -80,14 +80,14 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/router": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/router": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "prop-types": "^15.7.2", "ts-dedent": "^2.0.0" }, diff --git a/code/addons/measure/package.json b/code/addons/measure/package.json index eed59cf5f3c3..7c8b21f0818a 100644 --- a/code/addons/measure/package.json +++ b/code/addons/measure/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-measure", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Inspect layouts by visualizing the box model", "keywords": [ "storybook-addons", @@ -75,13 +75,13 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "tiny-invariant": "^1.3.1" }, "devDependencies": { diff --git a/code/addons/outline/package.json b/code/addons/outline/package.json index 37fda06aeb99..83b35b4dd0b7 100644 --- a/code/addons/outline/package.json +++ b/code/addons/outline/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-outline", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Outline all elements with CSS to help with layout placement and alignment", "keywords": [ "storybook-addons", @@ -78,13 +78,13 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "ts-dedent": "^2.0.0" }, "devDependencies": { diff --git a/code/addons/storyshots-core/package.json b/code/addons/storyshots-core/package.json index d6fa42167a65..33c6c4638faf 100644 --- a/code/addons/storyshots-core/package.json +++ b/code/addons/storyshots-core/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storyshots", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Take a code snapshot of every story automatically with Jest", "keywords": [ "addon", @@ -38,12 +38,12 @@ "dependencies": { "@jest/transform": "^29.3.1", "@storybook/babel-plugin-require-context-hook": "1.0.1", - "@storybook/client-api": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/core-webpack": "7.1.0-beta.2", + "@storybook/client-api": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/core-webpack": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@types/jest-specific-snapshot": "^0.5.6", "glob": "^10.0.0", "jest-specific-snapshot": "^8.0.0", @@ -57,11 +57,11 @@ "@angular/core": "^16.0.0-rc.4", "@angular/platform-browser-dynamic": "^16.0.0-rc.4", "@emotion/jest": "^11.8.0", - "@storybook/addon-docs": "7.1.0-beta.2", - "@storybook/angular": "7.1.0-beta.2", - "@storybook/react": "7.1.0-beta.2", - "@storybook/vue": "7.1.0-beta.2", - "@storybook/vue3": "7.1.0-beta.2", + "@storybook/addon-docs": "7.1.0-beta.3", + "@storybook/angular": "7.1.0-beta.3", + "@storybook/react": "7.1.0-beta.3", + "@storybook/vue": "7.1.0-beta.3", + "@storybook/vue3": "7.1.0-beta.3", "babel-loader": "^9.1.2", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.5", diff --git a/code/addons/storyshots-puppeteer/package.json b/code/addons/storyshots-puppeteer/package.json index cc0043c07d59..a9d58d0b416a 100644 --- a/code/addons/storyshots-puppeteer/package.json +++ b/code/addons/storyshots-puppeteer/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storyshots-puppeteer", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Image snapshots addition to StoryShots based on puppeteer", "keywords": [ "addon", @@ -37,8 +37,8 @@ "dependencies": { "@axe-core/puppeteer": "^4.2.0", "@storybook/csf": "^0.1.0", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@types/jest-image-snapshot": "^6.0.0", "jest-image-snapshot": "^6.0.0" }, @@ -49,7 +49,7 @@ "puppeteer": "^2.0.0 || ^3.0.0" }, "peerDependencies": { - "@storybook/addon-storyshots": "7.1.0-beta.2", + "@storybook/addon-storyshots": "7.1.0-beta.3", "puppeteer": ">=2.0.0" }, "peerDependenciesMeta": { diff --git a/code/addons/storysource/package.json b/code/addons/storysource/package.json index a4fef2b10a67..bfc820240b27 100644 --- a/code/addons/storysource/package.json +++ b/code/addons/storysource/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storysource", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "View a story’s source code to see how it works and paste into your app", "keywords": [ "addon", @@ -53,13 +53,13 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/router": "7.1.0-beta.2", - "@storybook/source-loader": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/router": "7.1.0-beta.3", + "@storybook/source-loader": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3", "estraverse": "^5.2.0", "prop-types": "^15.7.2", "react-syntax-highlighter": "^15.5.0", diff --git a/code/addons/toolbars/package.json b/code/addons/toolbars/package.json index c57907a3a04c..0592f24d1d26 100644 --- a/code/addons/toolbars/package.json +++ b/code/addons/toolbars/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-toolbars", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Create your own toolbar items that control story rendering", "keywords": [ "addon", @@ -68,11 +68,11 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2" + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3" }, "devDependencies": { "typescript": "~4.9.3" diff --git a/code/addons/viewport/package.json b/code/addons/viewport/package.json index 39a1de123195..01081939c2cc 100644 --- a/code/addons/viewport/package.json +++ b/code/addons/viewport/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-viewport", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Build responsive components by adjusting Storybook’s viewport size and orientation", "keywords": [ "addon", @@ -73,13 +73,13 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3", "memoizerific": "^1.11.3", "prop-types": "^15.7.2" }, diff --git a/code/builders/builder-manager/package.json b/code/builders/builder-manager/package.json index 34b407ee4683..528d3452c428 100644 --- a/code/builders/builder-manager/package.json +++ b/code/builders/builder-manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-manager", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook manager builder", "keywords": [ "storybook" @@ -44,9 +44,9 @@ }, "dependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/manager": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/manager": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", "@types/ejs": "^3.1.1", "@types/find-cache-dir": "^3.2.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", diff --git a/code/builders/builder-vite/package.json b/code/builders/builder-vite/package.json index 51644bb7874a..86caf99450f3 100644 --- a/code/builders/builder-vite/package.json +++ b/code/builders/builder-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-vite", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "A plugin to run and build Storybooks with Vite", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme", "bugs": { @@ -42,15 +42,15 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channels": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/csf-plugin": "7.1.0-beta.2", + "@storybook/channels": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/csf-plugin": "7.1.0-beta.3", "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/preview": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/preview": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@types/find-cache-dir": "^3.2.1", "browser-assert": "^1.2.1", "es-module-lexer": "^0.9.3", diff --git a/code/builders/builder-webpack5/package.json b/code/builders/builder-webpack5/package.json index 8c9922a5f019..dfe66437c31b 100644 --- a/code/builders/builder-webpack5/package.json +++ b/code/builders/builder-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-webpack5", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -56,24 +56,24 @@ }, "dependencies": { "@babel/core": "^7.22.0", - "@storybook/addons": "7.1.0-beta.2", - "@storybook/api": "7.1.0-beta.2", - "@storybook/channel-postmessage": "7.1.0-beta.2", - "@storybook/channels": "7.1.0-beta.2", - "@storybook/client-api": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", - "@storybook/core-webpack": "7.1.0-beta.2", + "@storybook/addons": "7.1.0-beta.3", + "@storybook/api": "7.1.0-beta.3", + "@storybook/channel-postmessage": "7.1.0-beta.3", + "@storybook/channels": "7.1.0-beta.3", + "@storybook/client-api": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", + "@storybook/core-webpack": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/preview": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/router": "7.1.0-beta.2", - "@storybook/store": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/preview": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/router": "7.1.0-beta.3", + "@storybook/store": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3", "@swc/core": "^1.3.49", "@types/node": "^16.0.0", "@types/semver": "^7.3.4", diff --git a/code/deprecated/addons/package.json b/code/deprecated/addons/package.json index a3627edc0ffb..a987b66ed52a 100644 --- a/code/deprecated/addons/package.json +++ b/code/deprecated/addons/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addons", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook addons store", "keywords": [ "storybook" @@ -44,9 +44,9 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2" + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", diff --git a/code/deprecated/channel-postmessage/package.json b/code/deprecated/channel-postmessage/package.json index 81e1fd194a87..467b791552a3 100644 --- a/code/deprecated/channel-postmessage/package.json +++ b/code/deprecated/channel-postmessage/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channel-postmessage", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "", "keywords": [ "storybook" @@ -43,8 +43,8 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channels": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2" + "@storybook/channels": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3" }, "devDependencies": { "typescript": "~4.9.3" diff --git a/code/deprecated/channel-websocket/package.json b/code/deprecated/channel-websocket/package.json index 47656948bb30..2b676db49744 100644 --- a/code/deprecated/channel-websocket/package.json +++ b/code/deprecated/channel-websocket/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channel-websocket", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "", "keywords": [ "storybook" @@ -43,8 +43,8 @@ "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { - "@storybook/channels": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2" + "@storybook/channels": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3" }, "devDependencies": { "typescript": "~4.9.3" diff --git a/code/deprecated/client-api/package.json b/code/deprecated/client-api/package.json index 6a38b2f6f76a..c5a4970733e7 100644 --- a/code/deprecated/client-api/package.json +++ b/code/deprecated/client-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-api", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook Client API", "keywords": [ "storybook" @@ -42,8 +42,8 @@ "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2" + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3" }, "publishConfig": { "access": "public" diff --git a/code/deprecated/core-client/package.json b/code/deprecated/core-client/package.json index eb00e56ee639..bec7f3fba1d3 100644 --- a/code/deprecated/core-client/package.json +++ b/code/deprecated/core-client/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-client", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -35,8 +35,8 @@ "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2" + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3" }, "publishConfig": { "access": "public" diff --git a/code/deprecated/manager-api-shim/package.json b/code/deprecated/manager-api-shim/package.json index e2605dec1d0a..261a00d13d0c 100644 --- a/code/deprecated/manager-api-shim/package.json +++ b/code/deprecated/manager-api-shim/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/api", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook Manager API (facade)", "keywords": [ "storybook" @@ -42,8 +42,8 @@ "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/manager-api": "7.1.0-beta.2" + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/manager-api": "7.1.0-beta.3" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", diff --git a/code/deprecated/preview-web/package.json b/code/deprecated/preview-web/package.json index e8bf96b6aa9b..4361f12a7a94 100644 --- a/code/deprecated/preview-web/package.json +++ b/code/deprecated/preview-web/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview-web", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "", "keywords": [ "storybook" @@ -42,8 +42,8 @@ "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2" + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3" }, "publishConfig": { "access": "public" diff --git a/code/deprecated/store/package.json b/code/deprecated/store/package.json index 46822ab2e75e..53ba96b65c67 100644 --- a/code/deprecated/store/package.json +++ b/code/deprecated/store/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/store", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "", "keywords": [ "storybook" @@ -42,8 +42,8 @@ "prep": "../../../scripts/prepare/facade.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2" + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3" }, "publishConfig": { "access": "public" diff --git a/code/e2e-tests/addon-actions.spec.ts b/code/e2e-tests/addon-actions.spec.ts index a38b6b82d118..c1a5dff84959 100644 --- a/code/e2e-tests/addon-actions.spec.ts +++ b/code/e2e-tests/addon-actions.spec.ts @@ -5,6 +5,11 @@ import { SbPage } from './util'; const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; test.describe('addon-actions', () => { + test.afterEach(async ({ page }) => { + await page.evaluate(() => window.localStorage.clear()); + await page.evaluate(() => window.sessionStorage.clear()); + }); + test.beforeEach(async ({ page }) => { await page.goto(storybookUrl); await new SbPage(page).waitUntilLoaded(); diff --git a/code/e2e-tests/addon-backgrounds.spec.ts b/code/e2e-tests/addon-backgrounds.spec.ts index 29ab0cbd1957..689172c4be17 100644 --- a/code/e2e-tests/addon-backgrounds.spec.ts +++ b/code/e2e-tests/addon-backgrounds.spec.ts @@ -6,6 +6,11 @@ const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; const templateName = process.env.STORYBOOK_TEMPLATE_NAME; test.describe('addon-backgrounds', () => { + test.afterEach(async ({ page }) => { + await page.evaluate(() => window.localStorage.clear()); + await page.evaluate(() => window.sessionStorage.clear()); + }); + test.beforeEach(async ({ page }) => { await page.goto(storybookUrl); await new SbPage(page).waitUntilLoaded(); diff --git a/code/e2e-tests/addon-controls.spec.ts b/code/e2e-tests/addon-controls.spec.ts index bcbf96019947..388398def9b2 100644 --- a/code/e2e-tests/addon-controls.spec.ts +++ b/code/e2e-tests/addon-controls.spec.ts @@ -5,6 +5,11 @@ import { SbPage } from './util'; const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; test.describe('addon-controls', () => { + test.afterEach(async ({ page }) => { + await page.evaluate(() => window.localStorage.clear()); + await page.evaluate(() => window.sessionStorage.clear()); + }); + test('should change component when changing controls', async ({ page }) => { await page.goto(storybookUrl); const sbPage = new SbPage(page); diff --git a/code/e2e-tests/addon-docs.spec.ts b/code/e2e-tests/addon-docs.spec.ts index 0f318f9f657d..9255c467275a 100644 --- a/code/e2e-tests/addon-docs.spec.ts +++ b/code/e2e-tests/addon-docs.spec.ts @@ -14,6 +14,10 @@ test.describe('addon-docs', () => { await page.goto(storybookUrl); await new SbPage(page).waitUntilLoaded(); }); + test.afterEach(async ({ page }) => { + await page.evaluate(() => window.localStorage.clear()); + await page.evaluate(() => window.sessionStorage.clear()); + }); test('should show descriptions for stories', async ({ page }) => { const skipped = [ diff --git a/code/e2e-tests/addon-interactions.spec.ts b/code/e2e-tests/addon-interactions.spec.ts index 063cfd14cefd..8305f3f40926 100644 --- a/code/e2e-tests/addon-interactions.spec.ts +++ b/code/e2e-tests/addon-interactions.spec.ts @@ -11,6 +11,10 @@ test.describe('addon-interactions', () => { await page.goto(storybookUrl); await new SbPage(page).waitUntilLoaded(); }); + test.afterEach(async ({ page }) => { + await page.evaluate(() => window.localStorage.clear()); + await page.evaluate(() => window.sessionStorage.clear()); + }); // FIXME: skip xxx test('should have interactions', async ({ page }) => { @@ -103,6 +107,12 @@ test.describe('addon-interactions', () => { await expect(interactionsTab).toContainText(/(3)/); await expect(interactionsTab).toBeVisible(); + // After debugging I found that sometimes the toolbar gets hidden, maybe some keypress or session storage issue? + // if the toolbar is hidden, this will toggle the toolbar + if (await page.locator('[offset="40"]').isHidden()) { + await page.locator('html').press('t'); + } + // Test remount state (from toolbar) - Interactions have rerun, count is correct and values are as expected const remountComponentButton = await page.locator('[title="Remount component"]'); await remountComponentButton.click(); diff --git a/code/e2e-tests/addon-viewport.spec.ts b/code/e2e-tests/addon-viewport.spec.ts index ec96a3bd93ea..38968fb794ba 100644 --- a/code/e2e-tests/addon-viewport.spec.ts +++ b/code/e2e-tests/addon-viewport.spec.ts @@ -9,6 +9,10 @@ test.describe('addon-viewport', () => { await page.goto(storybookUrl); await new SbPage(page).waitUntilLoaded(); }); + test.afterEach(async ({ page }) => { + await page.evaluate(() => window.localStorage.clear()); + await page.evaluate(() => window.sessionStorage.clear()); + }); test('should have viewport button in the toolbar', async ({ page }) => { const sbPage = new SbPage(page); diff --git a/code/e2e-tests/framework-nextjs.spec.ts b/code/e2e-tests/framework-nextjs.spec.ts index d5519251da39..a0ef84a0d257 100644 --- a/code/e2e-tests/framework-nextjs.spec.ts +++ b/code/e2e-tests/framework-nextjs.spec.ts @@ -12,7 +12,7 @@ test.describe('Next.js', () => { // and this only tests nextjs/default-js test.skip( // eslint-disable-next-line jest/valid-title - !templateName.includes('nextjs/default-js'), + !templateName?.includes('nextjs/default-js'), 'Only run this test for the Frameworks that support next/navigation' ); @@ -20,6 +20,10 @@ test.describe('Next.js', () => { await page.goto(storybookUrl); await new SbPage(page).waitUntilLoaded(); }); + test.afterEach(async ({ page }) => { + await page.evaluate(() => window.localStorage.clear()); + await page.evaluate(() => window.sessionStorage.clear()); + }); test.describe('next/image', () => { let sbPage: SbPage; diff --git a/code/e2e-tests/json-files.spec.ts b/code/e2e-tests/json-files.spec.ts index e0e29fab7c9c..12d0781beba3 100644 --- a/code/e2e-tests/json-files.spec.ts +++ b/code/e2e-tests/json-files.spec.ts @@ -9,6 +9,10 @@ test.describe('JSON files', () => { test.beforeEach(async ({ page }) => { await page.goto(storybookUrl); }); + test.afterEach(async ({ page }) => { + await page.evaluate(() => window.localStorage.clear()); + await page.evaluate(() => window.sessionStorage.clear()); + }); test('should have index.json', async ({ page }) => { test.skip( diff --git a/code/e2e-tests/manager.spec.ts b/code/e2e-tests/manager.spec.ts new file mode 100644 index 000000000000..4930ab78d70e --- /dev/null +++ b/code/e2e-tests/manager.spec.ts @@ -0,0 +1,98 @@ +import { test, expect } from '@playwright/test'; +import process from 'process'; +import { SbPage } from './util'; + +const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; + +test.describe('manager', () => { + test.beforeEach(async ({ page }) => { + await page.goto(storybookUrl); + + await new SbPage(page).waitUntilLoaded(); + }); + test.afterEach(async ({ page }) => { + await page.evaluate(() => window.localStorage.clear()); + await page.evaluate(() => window.sessionStorage.clear()); + }); + + test('shortcuts sidebar', async ({ page }) => { + const sbPage = new SbPage(page); + + await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); + + await sbPage.page.locator('html').press('s'); + await expect(sbPage.page.locator('.sidebar-container')).not.toBeVisible(); + + await sbPage.page.locator('[aria-label="Show sidebar"]').click(); + await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); + + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-S').click(); + + await expect(sbPage.page.locator('.sidebar-container')).not.toBeVisible(); + + await sbPage.page.locator('html').press('s'); + await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); + }); + + test('shortcuts toolbar', async ({ page }) => { + const sbPage = new SbPage(page); + const isToolbarShown = async () => { + const canvas = await sbPage.page.locator('div', { + has: sbPage.page.locator('> #storybook-preview-wrapper'), + }); + + return (await canvas.getAttribute('offset')) === '40'; + }; + + await expect(await isToolbarShown()).toBeTruthy(); + + await sbPage.page.locator('html').press('t'); + await expect(await isToolbarShown()).toBeFalsy(); + + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-T').click(); + await expect(await isToolbarShown()).toBeTruthy(); + }); + + test('shortcuts panel', async ({ page }) => { + const sbPage = new SbPage(page); + const isPanelsShown = async () => { + const main = await sbPage.page.locator('div', { + has: sbPage.page.locator('> * > #storybook-preview-wrapper'), + }); + + const style = await main.getAttribute('style'); + return style; + }; + + await sbPage.navigateToStory('example/button', 'primary'); + await expect(await isPanelsShown()).toBeTruthy(); + + await sbPage.page.locator('html').press('a'); + await expect(await isPanelsShown()).toBeFalsy(); + + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-A').click(); + await expect(await isPanelsShown()).toBeTruthy(); + + await sbPage.page.locator('html').press('a'); + await expect(await isPanelsShown()).toBeFalsy(); + + await sbPage.page.locator('html').press('a'); + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-D').click(); + await expect(await isPanelsShown()).toBeTruthy(); + }); + + test('settings page', async ({ page }) => { + const sbPage = new SbPage(page); + await sbPage.page.locator('[aria-label="Shortcuts"]').click(); + await sbPage.page.locator('#list-item-about').click(); + + await expect(sbPage.page.url()).toContain('/settings/about'); + + await sbPage.page.locator('[title="Close settings page"]').click(); + await expect(sbPage.page.url()).not.toContain('/settings/about'); + }); +}); diff --git a/code/e2e-tests/preview-web.spec.ts b/code/e2e-tests/preview-web.spec.ts index e44c3448f4f3..781f04b04dda 100644 --- a/code/e2e-tests/preview-web.spec.ts +++ b/code/e2e-tests/preview-web.spec.ts @@ -7,8 +7,13 @@ const storybookUrl = process.env.STORYBOOK_URL || 'http://localhost:8001'; test.describe('preview-web', () => { test.beforeEach(async ({ page }) => { await page.goto(storybookUrl); + await new SbPage(page).waitUntilLoaded(); }); + test.afterEach(async ({ page }) => { + await page.evaluate(() => window.localStorage.clear()); + await page.evaluate(() => window.sessionStorage.clear()); + }); test('should pass over shortcuts, but not from play functions, story', async ({ page }) => { const sbPage = new SbPage(page); @@ -18,6 +23,10 @@ test.describe('preview-web', () => { await sbPage.previewRoot().locator('button').press('s'); await expect(sbPage.page.locator('.sidebar-container')).not.toBeVisible(); + + // restore the sidebar back to visible, because it is persisted in localStorage + await page.locator('html').press('s'); + await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); }); test('should pass over shortcuts, but not from play functions, docs', async ({ page }) => { @@ -28,5 +37,9 @@ test.describe('preview-web', () => { await sbPage.previewRoot().getByRole('button').getByText('Submit').first().press('s'); await expect(sbPage.page.locator('.sidebar-container')).not.toBeVisible(); + + // restore the sidebar back to visible, because it is persisted in localStorage + await page.locator('html').press('s'); + await expect(sbPage.page.locator('.sidebar-container')).toBeVisible(); }); }); diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json index e45a8530d299..bbdef82db2ce 100644 --- a/code/frameworks/angular/package.json +++ b/code/frameworks/angular/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/angular", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Angular: Develop Angular components in isolation with hot reloading.", "keywords": [ "storybook", @@ -36,20 +36,20 @@ "prep": "../../../scripts/prepare/tsc.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-beta.2", - "@storybook/cli": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", - "@storybook/core-server": "7.1.0-beta.2", - "@storybook/core-webpack": "7.1.0-beta.2", - "@storybook/docs-tools": "7.1.0-beta.2", + "@storybook/builder-webpack5": "7.1.0-beta.3", + "@storybook/cli": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", + "@storybook/core-server": "7.1.0-beta.3", + "@storybook/core-webpack": "7.1.0-beta.3", + "@storybook/docs-tools": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/telemetry": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/telemetry": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@types/node": "^16.0.0", "@types/react": "^16.14.34", "@types/react-dom": "^16.9.14", diff --git a/code/frameworks/ember/package.json b/code/frameworks/ember/package.json index 2139a11dedc3..1e3e202bcb4f 100644 --- a/code/frameworks/ember/package.json +++ b/code/frameworks/ember/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/ember", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.", "homepage": "https://github.com/storybookjs/storybook/tree/next/code/frameworks/ember", "bugs": { @@ -31,12 +31,12 @@ "prep": "../../../scripts/prepare/tsc.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/docs-tools": "7.1.0-beta.2", + "@storybook/builder-webpack5": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/docs-tools": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "ts-dedent": "^2.0.0" }, "devDependencies": { diff --git a/code/frameworks/html-vite/package.json b/code/frameworks/html-vite/package.json index 2974dd12afda..5f11a86db0ef 100644 --- a/code/frameworks/html-vite/package.json +++ b/code/frameworks/html-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-vite", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for HTML and Vite: Develop HTML in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -47,14 +47,14 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/addons": "7.1.0-beta.2", - "@storybook/builder-vite": "7.1.0-beta.2", - "@storybook/channel-postmessage": "7.1.0-beta.2", - "@storybook/client-api": "7.1.0-beta.2", - "@storybook/core-server": "7.1.0-beta.2", - "@storybook/html": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/preview-web": "7.1.0-beta.2", + "@storybook/addons": "7.1.0-beta.3", + "@storybook/builder-vite": "7.1.0-beta.3", + "@storybook/channel-postmessage": "7.1.0-beta.3", + "@storybook/client-api": "7.1.0-beta.3", + "@storybook/core-server": "7.1.0-beta.3", + "@storybook/html": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/preview-web": "7.1.0-beta.3", "magic-string": "^0.30.0" }, "devDependencies": { diff --git a/code/frameworks/html-webpack5/package.json b/code/frameworks/html-webpack5/package.json index 1164a9f618d8..7e47cf538be1 100644 --- a/code/frameworks/html-webpack5/package.json +++ b/code/frameworks/html-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html-webpack5", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -47,11 +47,11 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", + "@storybook/builder-webpack5": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/html": "7.1.0-beta.2", - "@storybook/preset-html-webpack": "7.1.0-beta.2", + "@storybook/html": "7.1.0-beta.3", + "@storybook/preset-html-webpack": "7.1.0-beta.3", "@types/node": "^16.0.0" }, "devDependencies": { diff --git a/code/frameworks/nextjs/package.json b/code/frameworks/nextjs/package.json index d9841e11f212..59bbbc89e1ba 100644 --- a/code/frameworks/nextjs/package.json +++ b/code/frameworks/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/nextjs", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Next.js", "keywords": [ "storybook", @@ -70,13 +70,13 @@ "@babel/preset-react": "^7.22.0", "@babel/preset-typescript": "^7.21.0", "@babel/runtime": "^7.22.0", - "@storybook/addon-actions": "7.1.0-beta.2", - "@storybook/builder-webpack5": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/preset-react-webpack": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/react": "7.1.0-beta.2", + "@storybook/addon-actions": "7.1.0-beta.3", + "@storybook/builder-webpack5": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/preset-react-webpack": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/react": "7.1.0-beta.3", "@types/node": "^16.0.0", "css-loader": "^6.7.3", "find-up": "^5.0.0", diff --git a/code/frameworks/nextjs/template/cli/js/Configure.mdx b/code/frameworks/nextjs/template/cli/js/Configure.mdx index 2bae870cabea..17a554270caa 100644 --- a/code/frameworks/nextjs/template/cli/js/Configure.mdx +++ b/code/frameworks/nextjs/template/cli/js/Configure.mdx @@ -1,284 +1,433 @@ -import { Meta } from '@storybook/blocks'; -import Image from 'next/image'; +import { Meta } from "@storybook/blocks"; +import { Icons } from "@storybook/components"; +import Image from "next/image"; -import Accessibility from "./assets/accessibility.svg"; -import Checkmark from "./assets/checkmark.svg"; -import Document from "./assets/document.svg"; -import Typography from "./assets/typography.svg"; import Github from "./assets/github.svg"; import Discord from "./assets/discord.svg"; import Youtube from "./assets/youtube.svg"; -import Chromatic from "./assets/chromatic.svg"; -import Figma from "./assets/figma.svg"; import Tutorials from "./assets/tutorials.svg"; -import Styling from "./assets/styling.jpg"; -import Context from "./assets/context.jpg"; -import Assets from "./assets/assets.jpg"; +import Styling from "./assets/styling.png"; +import Context from "./assets/context.png"; +import Assets from "./assets/assets.png"; +import Docs from "./assets/docs.png"; +import Share from "./assets/share.png"; +import FigmaPlugin from "./assets/figma-plugin.png"; +import Testing from "./assets/testing.png"; +import Accessibility from "./assets/accessibility.png"; +import Theming from "./assets/theming.png"; +import AddonLibrary from "./assets/addon-library.png"; - +export const RightArrow = () => -# Configure your project + -Because Storybook works separately from your app, you'll need to configure it for your specific stack and setup. Below, explore guides for configuring Storybook with popular frameworks and tools. If you get stuck, learn how you can ask for help from our community. +
+
+ # Configure your project -
-
- A wall of logos representing different styling technologies -
-

Add styling and CSS

-

Like with web applications, there are many ways to include CSS within Storybook. Learn more about setting up styling within Storybook.

- + -
- An abstraction representing the composition of data for a component -
-

Provide context and mocking

-

Often when a story doesn't render, it's because your component is - expecting a specific environment or context (like a theme provider) to be available. - Learn more about solving these issues by providing context and mocking to Storybook.

- + An abstraction representing the composition of data for a component +

Provide context and mocking

+

Often when a story doesn't render, it's because your component is expecting a specific environment or context (like a theme provider) to be available.

+
Read more on how to set up context + >Learn more
-
-
- A representation of typography and image assets -
-

Load assets and resources

-

To link static files (like fonts) to your projects and stories, use the `staticDirs` configuration option to specify folders to load when starting Storybook.

- Read more on how to load assets +
+ A representation of typography and image assets +
+

Load assets and resources

+

To link static files (like fonts) to your projects and stories, use the + `staticDirs` configuration option to specify folders to load when + starting Storybook.

+ Learn more +
+
+
+ # Do more with Storybook -# Do more with Storybook - -Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. - -
+ Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. +
-
-
-
- Document -

Autodocs

-

Auto-generate living, interactive reference documentation from your components and stories.

- Learn more +
+
+
+ A screenshot showing the autodocs tag being set, pointing a docs page being generated +

Autodocs

+

Auto-generate living, + interactive reference documentation from your components and stories.

+ Learn more +
+
+ A browser window showing a Storybook being published to a chromatic.com URL +

Publish to Chromatic

+

Publish your Storybook to review and collaborate with your entire team.

+ Learn more +
+
+ Windows showing the Storybook plugin in Figma +

Figma Plugin

+

Embed your stories into Figma to cross-reference the design and live + implementation in one place.

+ Learn more +
+
+ Screenshot of tests passing and failing +

Testing

+

Use stories to test a component in all its variations, no matter how + complex.

+ Learn more +
+
+ Screenshot of accessibility tests passing and failing +

Accessibility

+

Automatically test your components for a11y issues as you develop.

+ Learn more +
+
+ Screenshot of Storybook in light and dark mode +

Theming

+

Theme Storybook's UI to personalize it to your project.

+ Learn more +
-
- Checkmark -

Testing

-

Use stories to test a component in all its variations, no matter how complex.

- Learn more -
-
- Chromatic -

Publish to Chromatic

-

Publish your Storybook to review and collaborate with your entire team.

- Learn more -
-
- Figma -

Figma Plugin

-

Embed your stories into Figma to cross-reference the design and live implementation in one place.

- Learn more -
-
- Accessibility -

Accessibility

-

Automatically test your components for a11y issues as you develop.

- Learn more -
-
- Typography -

Theming

-

Theme Storybook's UI to personalize it to your project.

- +
+ +
+ Integrate your tools with Storybook to connect workflows.
-# Explore and Connect +
+
+ Github logo + Join our contributors building the future of UI development. -Connect with our community on Discord or start contributing directly on Github. You might also be interesting in watching some videos on Youtube explaining how to take full advantage of Storybook. + Star on GitHub +
+
+ Discord logo +
+ Get support and chat with frontend developers. -
+ Join Discord server +
+
+
+ Youtube logo +
+ Watch tutorials, feature previews and interviews. - +
+
+ A book +

Follow guided walkthroughs on for key workflows.

+ + Discover tutorials +
diff --git a/code/frameworks/nextjs/template/cli/ts-3-8/Configure.mdx b/code/frameworks/nextjs/template/cli/ts-3-8/Configure.mdx index 2bae870cabea..17a554270caa 100644 --- a/code/frameworks/nextjs/template/cli/ts-3-8/Configure.mdx +++ b/code/frameworks/nextjs/template/cli/ts-3-8/Configure.mdx @@ -1,284 +1,433 @@ -import { Meta } from '@storybook/blocks'; -import Image from 'next/image'; +import { Meta } from "@storybook/blocks"; +import { Icons } from "@storybook/components"; +import Image from "next/image"; -import Accessibility from "./assets/accessibility.svg"; -import Checkmark from "./assets/checkmark.svg"; -import Document from "./assets/document.svg"; -import Typography from "./assets/typography.svg"; import Github from "./assets/github.svg"; import Discord from "./assets/discord.svg"; import Youtube from "./assets/youtube.svg"; -import Chromatic from "./assets/chromatic.svg"; -import Figma from "./assets/figma.svg"; import Tutorials from "./assets/tutorials.svg"; -import Styling from "./assets/styling.jpg"; -import Context from "./assets/context.jpg"; -import Assets from "./assets/assets.jpg"; +import Styling from "./assets/styling.png"; +import Context from "./assets/context.png"; +import Assets from "./assets/assets.png"; +import Docs from "./assets/docs.png"; +import Share from "./assets/share.png"; +import FigmaPlugin from "./assets/figma-plugin.png"; +import Testing from "./assets/testing.png"; +import Accessibility from "./assets/accessibility.png"; +import Theming from "./assets/theming.png"; +import AddonLibrary from "./assets/addon-library.png"; - +export const RightArrow = () => -# Configure your project + -Because Storybook works separately from your app, you'll need to configure it for your specific stack and setup. Below, explore guides for configuring Storybook with popular frameworks and tools. If you get stuck, learn how you can ask for help from our community. +
+
+ # Configure your project -
-
- A wall of logos representing different styling technologies -
-

Add styling and CSS

-

Like with web applications, there are many ways to include CSS within Storybook. Learn more about setting up styling within Storybook.

- + -
- An abstraction representing the composition of data for a component -
-

Provide context and mocking

-

Often when a story doesn't render, it's because your component is - expecting a specific environment or context (like a theme provider) to be available. - Learn more about solving these issues by providing context and mocking to Storybook.

- + An abstraction representing the composition of data for a component +

Provide context and mocking

+

Often when a story doesn't render, it's because your component is expecting a specific environment or context (like a theme provider) to be available.

+
Read more on how to set up context + >Learn more
-
-
- A representation of typography and image assets -
-

Load assets and resources

-

To link static files (like fonts) to your projects and stories, use the `staticDirs` configuration option to specify folders to load when starting Storybook.

- Read more on how to load assets +
+ A representation of typography and image assets +
+

Load assets and resources

+

To link static files (like fonts) to your projects and stories, use the + `staticDirs` configuration option to specify folders to load when + starting Storybook.

+ Learn more +
+
+
+ # Do more with Storybook -# Do more with Storybook - -Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. - -
+ Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. +
-
-
-
- Document -

Autodocs

-

Auto-generate living, interactive reference documentation from your components and stories.

- Learn more +
+
+
+ A screenshot showing the autodocs tag being set, pointing a docs page being generated +

Autodocs

+

Auto-generate living, + interactive reference documentation from your components and stories.

+ Learn more +
+
+ A browser window showing a Storybook being published to a chromatic.com URL +

Publish to Chromatic

+

Publish your Storybook to review and collaborate with your entire team.

+ Learn more +
+
+ Windows showing the Storybook plugin in Figma +

Figma Plugin

+

Embed your stories into Figma to cross-reference the design and live + implementation in one place.

+ Learn more +
+
+ Screenshot of tests passing and failing +

Testing

+

Use stories to test a component in all its variations, no matter how + complex.

+ Learn more +
+
+ Screenshot of accessibility tests passing and failing +

Accessibility

+

Automatically test your components for a11y issues as you develop.

+ Learn more +
+
+ Screenshot of Storybook in light and dark mode +

Theming

+

Theme Storybook's UI to personalize it to your project.

+ Learn more +
-
- Checkmark -

Testing

-

Use stories to test a component in all its variations, no matter how complex.

- Learn more -
-
- Chromatic -

Publish to Chromatic

-

Publish your Storybook to review and collaborate with your entire team.

- Learn more -
-
- Figma -

Figma Plugin

-

Embed your stories into Figma to cross-reference the design and live implementation in one place.

- Learn more -
-
- Accessibility -

Accessibility

-

Automatically test your components for a11y issues as you develop.

- Learn more -
-
- Typography -

Theming

-

Theme Storybook's UI to personalize it to your project.

- +
+ +
+ Integrate your tools with Storybook to connect workflows.
-# Explore and Connect +
+
+ Github logo + Join our contributors building the future of UI development. -Connect with our community on Discord or start contributing directly on Github. You might also be interesting in watching some videos on Youtube explaining how to take full advantage of Storybook. + Star on GitHub +
+
+ Discord logo +
+ Get support and chat with frontend developers. -
+ Join Discord server +
+
+
+ Youtube logo +
+ Watch tutorials, feature previews and interviews. - +
+
+ A book +

Follow guided walkthroughs on for key workflows.

+ + Discover tutorials +
diff --git a/code/frameworks/nextjs/template/cli/ts-4-9/Configure.mdx b/code/frameworks/nextjs/template/cli/ts-4-9/Configure.mdx index 2bae870cabea..17a554270caa 100644 --- a/code/frameworks/nextjs/template/cli/ts-4-9/Configure.mdx +++ b/code/frameworks/nextjs/template/cli/ts-4-9/Configure.mdx @@ -1,284 +1,433 @@ -import { Meta } from '@storybook/blocks'; -import Image from 'next/image'; +import { Meta } from "@storybook/blocks"; +import { Icons } from "@storybook/components"; +import Image from "next/image"; -import Accessibility from "./assets/accessibility.svg"; -import Checkmark from "./assets/checkmark.svg"; -import Document from "./assets/document.svg"; -import Typography from "./assets/typography.svg"; import Github from "./assets/github.svg"; import Discord from "./assets/discord.svg"; import Youtube from "./assets/youtube.svg"; -import Chromatic from "./assets/chromatic.svg"; -import Figma from "./assets/figma.svg"; import Tutorials from "./assets/tutorials.svg"; -import Styling from "./assets/styling.jpg"; -import Context from "./assets/context.jpg"; -import Assets from "./assets/assets.jpg"; +import Styling from "./assets/styling.png"; +import Context from "./assets/context.png"; +import Assets from "./assets/assets.png"; +import Docs from "./assets/docs.png"; +import Share from "./assets/share.png"; +import FigmaPlugin from "./assets/figma-plugin.png"; +import Testing from "./assets/testing.png"; +import Accessibility from "./assets/accessibility.png"; +import Theming from "./assets/theming.png"; +import AddonLibrary from "./assets/addon-library.png"; - +export const RightArrow = () => -# Configure your project + -Because Storybook works separately from your app, you'll need to configure it for your specific stack and setup. Below, explore guides for configuring Storybook with popular frameworks and tools. If you get stuck, learn how you can ask for help from our community. +
+
+ # Configure your project -
-
- A wall of logos representing different styling technologies -
-

Add styling and CSS

-

Like with web applications, there are many ways to include CSS within Storybook. Learn more about setting up styling within Storybook.

- + -
- An abstraction representing the composition of data for a component -
-

Provide context and mocking

-

Often when a story doesn't render, it's because your component is - expecting a specific environment or context (like a theme provider) to be available. - Learn more about solving these issues by providing context and mocking to Storybook.

- + An abstraction representing the composition of data for a component +

Provide context and mocking

+

Often when a story doesn't render, it's because your component is expecting a specific environment or context (like a theme provider) to be available.

+
Read more on how to set up context + >Learn more
-
-
- A representation of typography and image assets -
-

Load assets and resources

-

To link static files (like fonts) to your projects and stories, use the `staticDirs` configuration option to specify folders to load when starting Storybook.

- Read more on how to load assets +
+ A representation of typography and image assets +
+

Load assets and resources

+

To link static files (like fonts) to your projects and stories, use the + `staticDirs` configuration option to specify folders to load when + starting Storybook.

+ Learn more +
+
+
+ # Do more with Storybook -# Do more with Storybook - -Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. - -
+ Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. +
-
-
-
- Document -

Autodocs

-

Auto-generate living, interactive reference documentation from your components and stories.

- Learn more +
+
+
+ A screenshot showing the autodocs tag being set, pointing a docs page being generated +

Autodocs

+

Auto-generate living, + interactive reference documentation from your components and stories.

+ Learn more +
+
+ A browser window showing a Storybook being published to a chromatic.com URL +

Publish to Chromatic

+

Publish your Storybook to review and collaborate with your entire team.

+ Learn more +
+
+ Windows showing the Storybook plugin in Figma +

Figma Plugin

+

Embed your stories into Figma to cross-reference the design and live + implementation in one place.

+ Learn more +
+
+ Screenshot of tests passing and failing +

Testing

+

Use stories to test a component in all its variations, no matter how + complex.

+ Learn more +
+
+ Screenshot of accessibility tests passing and failing +

Accessibility

+

Automatically test your components for a11y issues as you develop.

+ Learn more +
+
+ Screenshot of Storybook in light and dark mode +

Theming

+

Theme Storybook's UI to personalize it to your project.

+ Learn more +
-
- Checkmark -

Testing

-

Use stories to test a component in all its variations, no matter how complex.

- Learn more -
-
- Chromatic -

Publish to Chromatic

-

Publish your Storybook to review and collaborate with your entire team.

- Learn more -
-
- Figma -

Figma Plugin

-

Embed your stories into Figma to cross-reference the design and live implementation in one place.

- Learn more -
-
- Accessibility -

Accessibility

-

Automatically test your components for a11y issues as you develop.

- Learn more -
-
- Typography -

Theming

-

Theme Storybook's UI to personalize it to your project.

- +
+ +
+ Integrate your tools with Storybook to connect workflows.
-# Explore and Connect +
+
+ Github logo + Join our contributors building the future of UI development. -Connect with our community on Discord or start contributing directly on Github. You might also be interesting in watching some videos on Youtube explaining how to take full advantage of Storybook. + Star on GitHub +
+
+ Discord logo +
+ Get support and chat with frontend developers. -
+ Join Discord server +
+
+
+ Youtube logo +
+ Watch tutorials, feature previews and interviews. - +
+
+ A book +

Follow guided walkthroughs on for key workflows.

+ + Discover tutorials +
diff --git a/code/frameworks/preact-vite/package.json b/code/frameworks/preact-vite/package.json index 7334cfc7a3b3..b8507adfc397 100644 --- a/code/frameworks/preact-vite/package.json +++ b/code/frameworks/preact-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-vite", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Preact and Vite: Develop Preact components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -47,8 +47,8 @@ }, "dependencies": { "@preact/preset-vite": "^2.0.0", - "@storybook/builder-vite": "7.1.0-beta.2", - "@storybook/preact": "7.1.0-beta.2" + "@storybook/builder-vite": "7.1.0-beta.3", + "@storybook/preact": "7.1.0-beta.3" }, "devDependencies": { "@types/node": "^16.0.0", diff --git a/code/frameworks/preact-webpack5/package.json b/code/frameworks/preact-webpack5/package.json index 330023a80242..d9b297f936c0 100644 --- a/code/frameworks/preact-webpack5/package.json +++ b/code/frameworks/preact-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact-webpack5", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" @@ -47,10 +47,10 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/preact": "7.1.0-beta.2", - "@storybook/preset-preact-webpack": "7.1.0-beta.2", + "@storybook/builder-webpack5": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/preact": "7.1.0-beta.3", + "@storybook/preset-preact-webpack": "7.1.0-beta.3", "@types/node": "^16.0.0" }, "devDependencies": { diff --git a/code/frameworks/react-vite/package.json b/code/frameworks/react-vite/package.json index 6b198c02ccd4..9a926158ed32 100644 --- a/code/frameworks/react-vite/package.json +++ b/code/frameworks/react-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-vite", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for React and Vite: Develop React components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -49,8 +49,8 @@ "dependencies": { "@joshwooding/vite-plugin-react-docgen-typescript": "0.2.1", "@rollup/pluginutils": "^5.0.2", - "@storybook/builder-vite": "7.1.0-beta.2", - "@storybook/react": "7.1.0-beta.2", + "@storybook/builder-vite": "7.1.0-beta.3", + "@storybook/react": "7.1.0-beta.3", "@vitejs/plugin-react": "^3.0.1", "ast-types": "^0.14.2", "magic-string": "^0.30.0", diff --git a/code/frameworks/react-webpack5/package.json b/code/frameworks/react-webpack5/package.json index cb20beed47eb..6e4be993284c 100644 --- a/code/frameworks/react-webpack5/package.json +++ b/code/frameworks/react-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-webpack5", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -47,19 +47,19 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-beta.2", - "@storybook/preset-react-webpack": "7.1.0-beta.2", - "@storybook/react": "7.1.0-beta.2", + "@storybook/builder-webpack5": "7.1.0-beta.3", + "@storybook/preset-react-webpack": "7.1.0-beta.3", + "@storybook/react": "7.1.0-beta.3", "@types/node": "^16.0.0" }, "devDependencies": { - "jest-specific-snapshot": "^8.0.0", - "typescript": "~4.9.3" + "jest-specific-snapshot": "^8.0.0" }, "peerDependencies": { "@babel/core": "^7.22.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "typescript": "*" }, "peerDependenciesMeta": { "@babel/core": { diff --git a/code/frameworks/server-webpack5/package.json b/code/frameworks/server-webpack5/package.json index a968c700e17c..79062d5b6cac 100644 --- a/code/frameworks/server-webpack5/package.json +++ b/code/frameworks/server-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server-webpack5", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -47,10 +47,10 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/preset-server-webpack": "7.1.0-beta.2", - "@storybook/server": "7.1.0-beta.2", + "@storybook/builder-webpack5": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/preset-server-webpack": "7.1.0-beta.3", + "@storybook/server": "7.1.0-beta.3", "@types/node": "^16.0.0" }, "devDependencies": { diff --git a/code/frameworks/svelte-vite/package.json b/code/frameworks/svelte-vite/package.json index 7c7b4fe8749d..c3a2857b3840 100644 --- a/code/frameworks/svelte-vite/package.json +++ b/code/frameworks/svelte-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-vite", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Svelte and Vite: Develop Svelte components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -47,9 +47,9 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-vite": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/svelte": "7.1.0-beta.2", + "@storybook/builder-vite": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/svelte": "7.1.0-beta.3", "@sveltejs/vite-plugin-svelte": "^2.4.1", "magic-string": "^0.30.0", "sveltedoc-parser": "^4.2.1", diff --git a/code/frameworks/svelte-webpack5/package.json b/code/frameworks/svelte-webpack5/package.json index fb420a49889b..734a9fd3ec11 100644 --- a/code/frameworks/svelte-webpack5/package.json +++ b/code/frameworks/svelte-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte-webpack5", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -47,21 +47,21 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/preset-svelte-webpack": "7.1.0-beta.2", - "@storybook/svelte": "7.1.0-beta.2" + "@storybook/builder-webpack5": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/preset-svelte-webpack": "7.1.0-beta.3", + "@storybook/svelte": "7.1.0-beta.3" }, "devDependencies": { - "svelte": "^3.48.0", - "svelte-loader": "^3.1.2", + "svelte": "^4.0.0", + "svelte-loader": "^3.1.9", "typescript": "~4.9.3" }, "peerDependencies": { "@babel/core": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "svelte": "^3.48.0", + "svelte": "^3.48.0 || ^4.0.0", "svelte-loader": "*" }, "engines": { diff --git a/code/frameworks/sveltekit/package.json b/code/frameworks/sveltekit/package.json index b060298ce4fa..8f4068f8d30e 100644 --- a/code/frameworks/sveltekit/package.json +++ b/code/frameworks/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/sveltekit", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for SvelteKit", "keywords": [ "storybook", @@ -50,9 +50,9 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-vite": "7.1.0-beta.2", - "@storybook/svelte": "7.1.0-beta.2", - "@storybook/svelte-vite": "7.1.0-beta.2" + "@storybook/builder-vite": "7.1.0-beta.3", + "@storybook/svelte": "7.1.0-beta.3", + "@storybook/svelte-vite": "7.1.0-beta.3" }, "devDependencies": { "@types/node": "^16.0.0", diff --git a/code/frameworks/vue-vite/package.json b/code/frameworks/vue-vite/package.json index b548cead0c10..5b9e1b84ca11 100644 --- a/code/frameworks/vue-vite/package.json +++ b/code/frameworks/vue-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue-vite", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Vue2 and Vite: Develop Vue2 Components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -47,10 +47,10 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-vite": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/core-server": "7.1.0-beta.2", - "@storybook/vue": "7.1.0-beta.2", + "@storybook/builder-vite": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/core-server": "7.1.0-beta.3", + "@storybook/vue": "7.1.0-beta.3", "magic-string": "^0.30.0", "vue-docgen-api": "^4.40.0" }, diff --git a/code/frameworks/vue-webpack5/package.json b/code/frameworks/vue-webpack5/package.json index 5026d2657879..5b0b4e4ee797 100644 --- a/code/frameworks/vue-webpack5/package.json +++ b/code/frameworks/vue-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue-webpack5", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Vue: Develop Vue Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -47,10 +47,10 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/preset-vue-webpack": "7.1.0-beta.2", - "@storybook/vue": "7.1.0-beta.2", + "@storybook/builder-webpack5": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/preset-vue-webpack": "7.1.0-beta.3", + "@storybook/vue": "7.1.0-beta.3", "@types/node": "^16.0.0" }, "devDependencies": { diff --git a/code/frameworks/vue3-vite/package.json b/code/frameworks/vue3-vite/package.json index 33c41c02e0f0..2c79e9d44f61 100644 --- a/code/frameworks/vue3-vite/package.json +++ b/code/frameworks/vue3-vite/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-vite", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Vue3 and Vite: Develop Vue3 components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -47,9 +47,9 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-vite": "7.1.0-beta.2", - "@storybook/core-server": "7.1.0-beta.2", - "@storybook/vue3": "7.1.0-beta.2", + "@storybook/builder-vite": "7.1.0-beta.3", + "@storybook/core-server": "7.1.0-beta.3", + "@storybook/vue3": "7.1.0-beta.3", "@vitejs/plugin-vue": "^4.0.0", "magic-string": "^0.30.0", "vue-docgen-api": "^4.40.0" diff --git a/code/frameworks/vue3-webpack5/package.json b/code/frameworks/vue3-webpack5/package.json index 09b1dc7b537c..c0bee1dbd301 100644 --- a/code/frameworks/vue3-webpack5/package.json +++ b/code/frameworks/vue3-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3-webpack5", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -47,10 +47,10 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-webpack5": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/preset-vue3-webpack": "7.1.0-beta.2", - "@storybook/vue3": "7.1.0-beta.2", + "@storybook/builder-webpack5": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/preset-vue3-webpack": "7.1.0-beta.3", + "@storybook/vue3": "7.1.0-beta.3", "@types/node": "^16.0.0" }, "devDependencies": { diff --git a/code/frameworks/web-components-vite/package.json b/code/frameworks/web-components-vite/package.json index 0ccae02d6b14..421ba7cc7e32 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": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for web-components and Vite: Develop Web Components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -47,10 +47,10 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/builder-vite": "7.1.0-beta.2", - "@storybook/core-server": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/web-components": "7.1.0-beta.2", + "@storybook/builder-vite": "7.1.0-beta.3", + "@storybook/core-server": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/web-components": "7.1.0-beta.3", "magic-string": "^0.30.0" }, "devDependencies": { diff --git a/code/frameworks/web-components-webpack5/package.json b/code/frameworks/web-components-webpack5/package.json index 3e43faa139ab..7fe884377a4b 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": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.", "keywords": [ "lit", @@ -51,10 +51,10 @@ }, "dependencies": { "@babel/preset-env": "^7.22.0", - "@storybook/builder-webpack5": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/preset-web-components-webpack": "7.1.0-beta.2", - "@storybook/web-components": "7.1.0-beta.2", + "@storybook/builder-webpack5": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/preset-web-components-webpack": "7.1.0-beta.3", + "@storybook/web-components": "7.1.0-beta.3", "@types/node": "^16.0.0" }, "devDependencies": { diff --git a/code/lib/channels/package.json b/code/lib/channels/package.json index 7c560426f631..6f4990b1d1f3 100644 --- a/code/lib/channels/package.json +++ b/code/lib/channels/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channels", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "", "keywords": [ "storybook" @@ -68,9 +68,9 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channels": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/channels": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/global": "^5.0.0", "qs": "^6.10.0", "telejson": "^7.0.3", diff --git a/code/lib/cli-sb/package.json b/code/lib/cli-sb/package.json index 45025b32d156..a07c768fbd4e 100644 --- a/code/lib/cli-sb/package.json +++ b/code/lib/cli-sb/package.json @@ -1,6 +1,6 @@ { "name": "sb", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook CLI", "keywords": [ "storybook" @@ -21,7 +21,7 @@ "license": "MIT", "bin": "./index.js", "dependencies": { - "@storybook/cli": "7.1.0-beta.2" + "@storybook/cli": "7.1.0-beta.3" }, "publishConfig": { "access": "public" diff --git a/code/lib/cli-storybook/package.json b/code/lib/cli-storybook/package.json index 034170b190ae..98b3f2dc4360 100644 --- a/code/lib/cli-storybook/package.json +++ b/code/lib/cli-storybook/package.json @@ -1,6 +1,6 @@ { "name": "storybook", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook CLI", "keywords": [ "storybook" @@ -24,7 +24,7 @@ "storybook": "./index.js" }, "dependencies": { - "@storybook/cli": "7.1.0-beta.2" + "@storybook/cli": "7.1.0-beta.3" }, "publishConfig": { "access": "public" diff --git a/code/lib/cli/package.json b/code/lib/cli/package.json index 91c7e8e593f9..716e57ab0deb 100644 --- a/code/lib/cli/package.json +++ b/code/lib/cli/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/cli", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook's CLI - easiest method of adding storybook to your projects", "keywords": [ "cli", @@ -57,13 +57,13 @@ "@babel/core": "^7.22.0", "@babel/preset-env": "^7.22.0", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/core-server": "7.1.0-beta.2", - "@storybook/csf-tools": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/telemetry": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/codemod": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/core-server": "7.1.0-beta.3", + "@storybook/csf-tools": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/telemetry": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@types/semver": "^7.3.4", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", @@ -95,7 +95,7 @@ "util-deprecate": "^1.0.2" }, "devDependencies": { - "@storybook/client-api": "7.1.0-beta.2", + "@storybook/client-api": "7.1.0-beta.3", "@types/cross-spawn": "^6.0.2", "@types/prompts": "^2.0.9", "@types/puppeteer-core": "^2.1.0", diff --git a/code/lib/cli/rendererAssets/common/Configure.mdx b/code/lib/cli/rendererAssets/common/Configure.mdx index 42180d9d5def..7302a63c5aa6 100644 --- a/code/lib/cli/rendererAssets/common/Configure.mdx +++ b/code/lib/cli/rendererAssets/common/Configure.mdx @@ -1,286 +1,351 @@ import { Meta } from "@storybook/blocks"; +import { Icons } from "@storybook/components"; -import Accessibility from "./assets/accessibility.svg"; -import Checkmark from "./assets/checkmark.svg"; -import Document from "./assets/document.svg"; -import Typography from "./assets/typography.svg"; import Github from "./assets/github.svg"; import Discord from "./assets/discord.svg"; import Youtube from "./assets/youtube.svg"; -import Chromatic from "./assets/chromatic.svg"; -import Figma from "./assets/figma.svg"; import Tutorials from "./assets/tutorials.svg"; -import Styling from "./assets/styling.jpg"; -import Context from "./assets/context.jpg"; -import Assets from "./assets/assets.jpg"; +import Styling from "./assets/styling.png"; +import Context from "./assets/context.png"; +import Assets from "./assets/assets.png"; +import Docs from "./assets/docs.png"; +import Share from "./assets/share.png"; +import FigmaPlugin from "./assets/figma-plugin.png"; +import Testing from "./assets/testing.png"; +import Accessibility from "./assets/accessibility.png"; +import Theming from "./assets/theming.png"; +import AddonLibrary from "./assets/addon-library.png"; - +export const RightArrow = () => -# Configure your project + -Because Storybook works separately from your app, you'll need to configure it for your specific stack and setup. Below, explore guides for configuring Storybook with popular frameworks and tools. If you get stuck, learn how you can ask for help from our community. +
+
+ # Configure your project -
-
- A wall of logos representing different styling technologies -
-

Add styling and CSS

-

Like with web applications, there are many ways to include CSS within Storybook. Learn more about setting up styling within Storybook.

+ Because Storybook works separately from your app, you'll need to configure it for your specific stack and setup. Below, explore guides for configuring Storybook with popular frameworks and tools. If you get stuck, learn how you can ask for help from our community. +
+
+
+ A wall of logos representing different styling technologies +

Add styling and CSS

+

Like with web applications, there are many ways to include CSS within Storybook. Learn more about setting up styling within Storybook.

- Read more on how to set up styling - - + >Learn more
-
-
- An abstraction representing the composition of data for a component -
-

Provide context and mocking

-

Often when a story doesn't render, it's because your component is - expecting a specific environment or context (like a theme provider) to be available. - Learn more about solving these issues by providing context and mocking to Storybook.

+
+ An abstraction representing the composition of data for a component +

Provide context and mocking

+

Often when a story doesn't render, it's because your component is expecting a specific environment or context (like a theme provider) to be available.

Read more on how to set up context + >Learn more
-
-
- A representation of typography and image assets -
-

Load assets and resources

-

To link static files (like fonts) to your projects and stories, use the `staticDirs` configuration option to specify folders to load when starting Storybook.

- Read more on how to load assets +
+ A representation of typography and image assets +
+

Load assets and resources

+

To link static files (like fonts) to your projects and stories, use the + `staticDirs` configuration option to specify folders to load when + starting Storybook.

+ Learn more +
+
+
+ # Do more with Storybook -# Do more with Storybook - -Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. - -
+ Now that you know the basics, let's explore other parts of Storybook that will improve your experience. This list is just to get you started. You can customise Storybook in many ways to fit your needs. +
-
-
-
- Document -

Autodocs

-

Auto-generate living, interactive reference documentation from your components and stories.

- Learn more +
+
+
+ A screenshot showing the autodocs tag being set, pointing a docs page being generated +

Autodocs

+

Auto-generate living, + interactive reference documentation from your components and stories.

+ Learn more +
+
+ A browser window showing a Storybook being published to a chromatic.com URL +

Publish to Chromatic

+

Publish your Storybook to review and collaborate with your entire team.

+ Learn more +
+
+ Windows showing the Storybook plugin in Figma +

Figma Plugin

+

Embed your stories into Figma to cross-reference the design and live + implementation in one place.

+ Learn more +
+
+ Screenshot of tests passing and failing +

Testing

+

Use stories to test a component in all its variations, no matter how + complex.

+ Learn more +
+
+ Screenshot of accessibility tests passing and failing +

Accessibility

+

Automatically test your components for a11y issues as you develop.

+ Learn more +
+
+ Screenshot of Storybook in light and dark mode +

Theming

+

Theme Storybook's UI to personalize it to your project.

+ Learn more +
-
- Checkmark -

Testing

-

Use stories to test a component in all its variations, no matter how complex.

- +
+
+ -
- Chromatic -

Publish to Chromatic

-

Publish your Storybook to review and collaborate with your entire team.

+ >Discover all addons +
+
+ Integrate your tools with Storybook to connect workflows. +
+
+ +
+
+ Github logo + Join our contributors building the future of UI development. + Learn more + >Star on GitHub
-
- Figma -

Figma Plugin

-

Embed your stories into Figma to cross-reference the design and live implementation in one place.

- Learn more +
+ Discord logo +
+ Get support and chat with frontend developers. + + Join Discord server +
-
- Accessibility -

Accessibility

-

Automatically test your components for a11y issues as you develop.

- Learn more +
+ Youtube logo +
+ Watch tutorials, feature previews and interviews. + + Watch on YouTube +
-
- Typography -

Theming

-

Theme Storybook's UI to personalize it to your project.

+
+ A book +

Follow guided walkthroughs on for key workflows.

+ Learn more + href="https://storybook.js.org/tutorials/" + target="_blank" + >Discover tutorials
-
-
- -# Explore and Connect - -Connect with our community on Discord or start contributing directly on Github. You might also be interesting in watching some videos on Youtube explaining how to take full advantage of Storybook. - -
- - diff --git a/code/lib/cli/rendererAssets/common/assets/accessibility.png b/code/lib/cli/rendererAssets/common/assets/accessibility.png new file mode 100644 index 000000000000..6ffe6feabdc1 Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/accessibility.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/accessibility.svg b/code/lib/cli/rendererAssets/common/assets/accessibility.svg index 00efad3d0b7e..a3288830e348 100644 --- a/code/lib/cli/rendererAssets/common/assets/accessibility.svg +++ b/code/lib/cli/rendererAssets/common/assets/accessibility.svg @@ -2,4 +2,4 @@ Accessibility - + \ No newline at end of file diff --git a/code/lib/cli/rendererAssets/common/assets/addon-library.png b/code/lib/cli/rendererAssets/common/assets/addon-library.png new file mode 100644 index 000000000000..95deb38a88de Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/addon-library.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/assets.jpg b/code/lib/cli/rendererAssets/common/assets/assets.jpg deleted file mode 100644 index 5390e31ec915..000000000000 Binary files a/code/lib/cli/rendererAssets/common/assets/assets.jpg and /dev/null differ diff --git a/code/lib/cli/rendererAssets/common/assets/assets.png b/code/lib/cli/rendererAssets/common/assets/assets.png new file mode 100644 index 000000000000..cfba6817aeb6 Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/assets.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/checkmark.svg b/code/lib/cli/rendererAssets/common/assets/checkmark.svg deleted file mode 100644 index b1de90119d58..000000000000 --- a/code/lib/cli/rendererAssets/common/assets/checkmark.svg +++ /dev/null @@ -1,5 +0,0 @@ - - Checkmark - - - diff --git a/code/lib/cli/rendererAssets/common/assets/chromatic.svg b/code/lib/cli/rendererAssets/common/assets/chromatic.svg deleted file mode 100644 index 80060821a939..000000000000 --- a/code/lib/cli/rendererAssets/common/assets/chromatic.svg +++ /dev/null @@ -1,5 +0,0 @@ - - Chromatic logo - - - diff --git a/code/lib/cli/rendererAssets/common/assets/context.jpg b/code/lib/cli/rendererAssets/common/assets/context.jpg deleted file mode 100644 index 763d0d871c85..000000000000 Binary files a/code/lib/cli/rendererAssets/common/assets/context.jpg and /dev/null differ diff --git a/code/lib/cli/rendererAssets/common/assets/context.png b/code/lib/cli/rendererAssets/common/assets/context.png new file mode 100644 index 000000000000..e5cd249a2d3a Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/context.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/discord.svg b/code/lib/cli/rendererAssets/common/assets/discord.svg index 5ab7196249e7..1204df998d0e 100644 --- a/code/lib/cli/rendererAssets/common/assets/discord.svg +++ b/code/lib/cli/rendererAssets/common/assets/discord.svg @@ -1,12 +1,15 @@ - - Discord logo - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + diff --git a/code/lib/cli/rendererAssets/common/assets/docs.png b/code/lib/cli/rendererAssets/common/assets/docs.png new file mode 100644 index 000000000000..a749629df9ef Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/docs.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/document.svg b/code/lib/cli/rendererAssets/common/assets/document.svg deleted file mode 100644 index 8e6e57986966..000000000000 --- a/code/lib/cli/rendererAssets/common/assets/document.svg +++ /dev/null @@ -1,11 +0,0 @@ - - Document - - - - - - - - - diff --git a/code/lib/cli/rendererAssets/common/assets/figma-plugin.png b/code/lib/cli/rendererAssets/common/assets/figma-plugin.png new file mode 100644 index 000000000000..8f79b08cdf28 Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/figma-plugin.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/figma.svg b/code/lib/cli/rendererAssets/common/assets/figma.svg deleted file mode 100644 index 0fccef023d3f..000000000000 --- a/code/lib/cli/rendererAssets/common/assets/figma.svg +++ /dev/null @@ -1,11 +0,0 @@ - - Figma logo - - - - - - - - - \ No newline at end of file diff --git a/code/lib/cli/rendererAssets/common/assets/github.svg b/code/lib/cli/rendererAssets/common/assets/github.svg index 7360edd5c731..158e0268a343 100644 --- a/code/lib/cli/rendererAssets/common/assets/github.svg +++ b/code/lib/cli/rendererAssets/common/assets/github.svg @@ -1,4 +1,3 @@ - - Github logo - - \ No newline at end of file + + + diff --git a/code/lib/cli/rendererAssets/common/assets/share.png b/code/lib/cli/rendererAssets/common/assets/share.png new file mode 100644 index 000000000000..8097a370777a Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/share.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/styling.jpg b/code/lib/cli/rendererAssets/common/assets/styling.jpg deleted file mode 100644 index 0f6b37a4c8d4..000000000000 Binary files a/code/lib/cli/rendererAssets/common/assets/styling.jpg and /dev/null differ diff --git a/code/lib/cli/rendererAssets/common/assets/styling.png b/code/lib/cli/rendererAssets/common/assets/styling.png new file mode 100644 index 000000000000..d341e8263e40 Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/styling.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/testing.png b/code/lib/cli/rendererAssets/common/assets/testing.png new file mode 100644 index 000000000000..d4ac39a0ced9 Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/testing.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/theming.png b/code/lib/cli/rendererAssets/common/assets/theming.png new file mode 100644 index 000000000000..1535eb9b8192 Binary files /dev/null and b/code/lib/cli/rendererAssets/common/assets/theming.png differ diff --git a/code/lib/cli/rendererAssets/common/assets/tutorials.svg b/code/lib/cli/rendererAssets/common/assets/tutorials.svg index bd08af920bd9..4b2fc7c44b80 100644 --- a/code/lib/cli/rendererAssets/common/assets/tutorials.svg +++ b/code/lib/cli/rendererAssets/common/assets/tutorials.svg @@ -1,8 +1,12 @@ - - Tutorials - - - - - - \ No newline at end of file + + + + + + + + + + + + diff --git a/code/lib/cli/rendererAssets/common/assets/typography.svg b/code/lib/cli/rendererAssets/common/assets/typography.svg deleted file mode 100644 index f2a18909b68b..000000000000 --- a/code/lib/cli/rendererAssets/common/assets/typography.svg +++ /dev/null @@ -1,4 +0,0 @@ - - Typography - - diff --git a/code/lib/cli/rendererAssets/common/assets/youtube.svg b/code/lib/cli/rendererAssets/common/assets/youtube.svg index ab37d73a062e..33a3a61f611e 100644 --- a/code/lib/cli/rendererAssets/common/assets/youtube.svg +++ b/code/lib/cli/rendererAssets/common/assets/youtube.svg @@ -1,5 +1,4 @@ - - Youtube logo - - - \ No newline at end of file + + + + diff --git a/code/lib/cli/src/sandbox-templates.ts b/code/lib/cli/src/sandbox-templates.ts index 2ca650b32eb4..abad0370cfa0 100644 --- a/code/lib/cli/src/sandbox-templates.ts +++ b/code/lib/cli/src/sandbox-templates.ts @@ -296,10 +296,12 @@ const baseTemplates = { }, skipTasks: ['e2e-tests-dev', 'bench'], }, - 'angular-cli/14-ts': { - name: 'Angular CLI (Version 14)', + 'angular-cli/15-ts': { + name: 'Angular CLI (Version 15)', script: - 'npx -p @angular/cli@14 ng new angular-v14 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn', + 'npx -p @angular/cli@15 ng new angular-v15 --directory {{beforeDir}} --routing=true --minimal=true --style=scss --strict --skip-git --skip-install --package-manager=yarn', + // TODO: Remove as soon as available + inDevelopment: true, expected: { framework: '@storybook/angular', renderer: '@storybook/angular', @@ -551,7 +553,7 @@ export const merged: TemplateKey[] = [ ...pr, 'react-webpack/18-ts', 'react-webpack/17-ts', - 'angular-cli/14-ts', + 'angular-cli/15-ts', 'preact-webpack5/default-ts', 'preact-vite/default-ts', 'html-webpack/default', diff --git a/code/lib/cli/src/versions.ts b/code/lib/cli/src/versions.ts index a5b1d66f0616..bcd58e937c22 100644 --- a/code/lib/cli/src/versions.ts +++ b/code/lib/cli/src/versions.ts @@ -1,96 +1,96 @@ // auto generated file, do not edit export default { - '@storybook/addon-a11y': '7.1.0-beta.2', - '@storybook/addon-actions': '7.1.0-beta.2', - '@storybook/addon-backgrounds': '7.1.0-beta.2', - '@storybook/addon-controls': '7.1.0-beta.2', - '@storybook/addon-docs': '7.1.0-beta.2', - '@storybook/addon-essentials': '7.1.0-beta.2', - '@storybook/addon-highlight': '7.1.0-beta.2', - '@storybook/addon-interactions': '7.1.0-beta.2', - '@storybook/addon-jest': '7.1.0-beta.2', - '@storybook/addon-links': '7.1.0-beta.2', - '@storybook/addon-mdx-gfm': '7.1.0-beta.2', - '@storybook/addon-measure': '7.1.0-beta.2', - '@storybook/addon-outline': '7.1.0-beta.2', - '@storybook/addon-storyshots': '7.1.0-beta.2', - '@storybook/addon-storyshots-puppeteer': '7.1.0-beta.2', - '@storybook/addon-storysource': '7.1.0-beta.2', - '@storybook/addon-toolbars': '7.1.0-beta.2', - '@storybook/addon-viewport': '7.1.0-beta.2', - '@storybook/addons': '7.1.0-beta.2', - '@storybook/angular': '7.1.0-beta.2', - '@storybook/api': '7.1.0-beta.2', - '@storybook/blocks': '7.1.0-beta.2', - '@storybook/builder-manager': '7.1.0-beta.2', - '@storybook/builder-vite': '7.1.0-beta.2', - '@storybook/builder-webpack5': '7.1.0-beta.2', - '@storybook/channel-postmessage': '7.1.0-beta.2', - '@storybook/channel-websocket': '7.1.0-beta.2', - '@storybook/channels': '7.1.0-beta.2', - '@storybook/cli': '7.1.0-beta.2', - '@storybook/client-api': '7.1.0-beta.2', - '@storybook/client-logger': '7.1.0-beta.2', - '@storybook/codemod': '7.1.0-beta.2', - '@storybook/components': '7.1.0-beta.2', - '@storybook/core-client': '7.1.0-beta.2', - '@storybook/core-common': '7.1.0-beta.2', - '@storybook/core-events': '7.1.0-beta.2', - '@storybook/core-server': '7.1.0-beta.2', - '@storybook/core-webpack': '7.1.0-beta.2', - '@storybook/csf-plugin': '7.1.0-beta.2', - '@storybook/csf-tools': '7.1.0-beta.2', - '@storybook/docs-tools': '7.1.0-beta.2', - '@storybook/ember': '7.1.0-beta.2', - '@storybook/html': '7.1.0-beta.2', - '@storybook/html-vite': '7.1.0-beta.2', - '@storybook/html-webpack5': '7.1.0-beta.2', - '@storybook/instrumenter': '7.1.0-beta.2', - '@storybook/manager': '7.1.0-beta.2', - '@storybook/manager-api': '7.1.0-beta.2', - '@storybook/nextjs': '7.1.0-beta.2', - '@storybook/node-logger': '7.1.0-beta.2', - '@storybook/postinstall': '7.1.0-beta.2', - '@storybook/preact': '7.1.0-beta.2', - '@storybook/preact-vite': '7.1.0-beta.2', - '@storybook/preact-webpack5': '7.1.0-beta.2', - '@storybook/preset-create-react-app': '7.1.0-beta.2', - '@storybook/preset-html-webpack': '7.1.0-beta.2', - '@storybook/preset-preact-webpack': '7.1.0-beta.2', - '@storybook/preset-react-webpack': '7.1.0-beta.2', - '@storybook/preset-server-webpack': '7.1.0-beta.2', - '@storybook/preset-svelte-webpack': '7.1.0-beta.2', - '@storybook/preset-vue-webpack': '7.1.0-beta.2', - '@storybook/preset-vue3-webpack': '7.1.0-beta.2', - '@storybook/preset-web-components-webpack': '7.1.0-beta.2', - '@storybook/preview': '7.1.0-beta.2', - '@storybook/preview-api': '7.1.0-beta.2', - '@storybook/preview-web': '7.1.0-beta.2', - '@storybook/react': '7.1.0-beta.2', - '@storybook/react-dom-shim': '7.1.0-beta.2', - '@storybook/react-vite': '7.1.0-beta.2', - '@storybook/react-webpack5': '7.1.0-beta.2', - '@storybook/router': '7.1.0-beta.2', - '@storybook/server': '7.1.0-beta.2', - '@storybook/server-webpack5': '7.1.0-beta.2', - '@storybook/source-loader': '7.1.0-beta.2', - '@storybook/store': '7.1.0-beta.2', - '@storybook/svelte': '7.1.0-beta.2', - '@storybook/svelte-vite': '7.1.0-beta.2', - '@storybook/svelte-webpack5': '7.1.0-beta.2', - '@storybook/sveltekit': '7.1.0-beta.2', - '@storybook/telemetry': '7.1.0-beta.2', - '@storybook/theming': '7.1.0-beta.2', - '@storybook/types': '7.1.0-beta.2', - '@storybook/vue': '7.1.0-beta.2', - '@storybook/vue-vite': '7.1.0-beta.2', - '@storybook/vue-webpack5': '7.1.0-beta.2', - '@storybook/vue3': '7.1.0-beta.2', - '@storybook/vue3-vite': '7.1.0-beta.2', - '@storybook/vue3-webpack5': '7.1.0-beta.2', - '@storybook/web-components': '7.1.0-beta.2', - '@storybook/web-components-vite': '7.1.0-beta.2', - '@storybook/web-components-webpack5': '7.1.0-beta.2', - sb: '7.1.0-beta.2', - storybook: '7.1.0-beta.2', + '@storybook/addon-a11y': '7.1.0-beta.3', + '@storybook/addon-actions': '7.1.0-beta.3', + '@storybook/addon-backgrounds': '7.1.0-beta.3', + '@storybook/addon-controls': '7.1.0-beta.3', + '@storybook/addon-docs': '7.1.0-beta.3', + '@storybook/addon-essentials': '7.1.0-beta.3', + '@storybook/addon-highlight': '7.1.0-beta.3', + '@storybook/addon-interactions': '7.1.0-beta.3', + '@storybook/addon-jest': '7.1.0-beta.3', + '@storybook/addon-links': '7.1.0-beta.3', + '@storybook/addon-mdx-gfm': '7.1.0-beta.3', + '@storybook/addon-measure': '7.1.0-beta.3', + '@storybook/addon-outline': '7.1.0-beta.3', + '@storybook/addon-storyshots': '7.1.0-beta.3', + '@storybook/addon-storyshots-puppeteer': '7.1.0-beta.3', + '@storybook/addon-storysource': '7.1.0-beta.3', + '@storybook/addon-toolbars': '7.1.0-beta.3', + '@storybook/addon-viewport': '7.1.0-beta.3', + '@storybook/addons': '7.1.0-beta.3', + '@storybook/angular': '7.1.0-beta.3', + '@storybook/api': '7.1.0-beta.3', + '@storybook/blocks': '7.1.0-beta.3', + '@storybook/builder-manager': '7.1.0-beta.3', + '@storybook/builder-vite': '7.1.0-beta.3', + '@storybook/builder-webpack5': '7.1.0-beta.3', + '@storybook/channel-postmessage': '7.1.0-beta.3', + '@storybook/channel-websocket': '7.1.0-beta.3', + '@storybook/channels': '7.1.0-beta.3', + '@storybook/cli': '7.1.0-beta.3', + '@storybook/client-api': '7.1.0-beta.3', + '@storybook/client-logger': '7.1.0-beta.3', + '@storybook/codemod': '7.1.0-beta.3', + '@storybook/components': '7.1.0-beta.3', + '@storybook/core-client': '7.1.0-beta.3', + '@storybook/core-common': '7.1.0-beta.3', + '@storybook/core-events': '7.1.0-beta.3', + '@storybook/core-server': '7.1.0-beta.3', + '@storybook/core-webpack': '7.1.0-beta.3', + '@storybook/csf-plugin': '7.1.0-beta.3', + '@storybook/csf-tools': '7.1.0-beta.3', + '@storybook/docs-tools': '7.1.0-beta.3', + '@storybook/ember': '7.1.0-beta.3', + '@storybook/html': '7.1.0-beta.3', + '@storybook/html-vite': '7.1.0-beta.3', + '@storybook/html-webpack5': '7.1.0-beta.3', + '@storybook/instrumenter': '7.1.0-beta.3', + '@storybook/manager': '7.1.0-beta.3', + '@storybook/manager-api': '7.1.0-beta.3', + '@storybook/nextjs': '7.1.0-beta.3', + '@storybook/node-logger': '7.1.0-beta.3', + '@storybook/postinstall': '7.1.0-beta.3', + '@storybook/preact': '7.1.0-beta.3', + '@storybook/preact-vite': '7.1.0-beta.3', + '@storybook/preact-webpack5': '7.1.0-beta.3', + '@storybook/preset-create-react-app': '7.1.0-beta.3', + '@storybook/preset-html-webpack': '7.1.0-beta.3', + '@storybook/preset-preact-webpack': '7.1.0-beta.3', + '@storybook/preset-react-webpack': '7.1.0-beta.3', + '@storybook/preset-server-webpack': '7.1.0-beta.3', + '@storybook/preset-svelte-webpack': '7.1.0-beta.3', + '@storybook/preset-vue-webpack': '7.1.0-beta.3', + '@storybook/preset-vue3-webpack': '7.1.0-beta.3', + '@storybook/preset-web-components-webpack': '7.1.0-beta.3', + '@storybook/preview': '7.1.0-beta.3', + '@storybook/preview-api': '7.1.0-beta.3', + '@storybook/preview-web': '7.1.0-beta.3', + '@storybook/react': '7.1.0-beta.3', + '@storybook/react-dom-shim': '7.1.0-beta.3', + '@storybook/react-vite': '7.1.0-beta.3', + '@storybook/react-webpack5': '7.1.0-beta.3', + '@storybook/router': '7.1.0-beta.3', + '@storybook/server': '7.1.0-beta.3', + '@storybook/server-webpack5': '7.1.0-beta.3', + '@storybook/source-loader': '7.1.0-beta.3', + '@storybook/store': '7.1.0-beta.3', + '@storybook/svelte': '7.1.0-beta.3', + '@storybook/svelte-vite': '7.1.0-beta.3', + '@storybook/svelte-webpack5': '7.1.0-beta.3', + '@storybook/sveltekit': '7.1.0-beta.3', + '@storybook/telemetry': '7.1.0-beta.3', + '@storybook/theming': '7.1.0-beta.3', + '@storybook/types': '7.1.0-beta.3', + '@storybook/vue': '7.1.0-beta.3', + '@storybook/vue-vite': '7.1.0-beta.3', + '@storybook/vue-webpack5': '7.1.0-beta.3', + '@storybook/vue3': '7.1.0-beta.3', + '@storybook/vue3-vite': '7.1.0-beta.3', + '@storybook/vue3-webpack5': '7.1.0-beta.3', + '@storybook/web-components': '7.1.0-beta.3', + '@storybook/web-components-vite': '7.1.0-beta.3', + '@storybook/web-components-webpack5': '7.1.0-beta.3', + sb: '7.1.0-beta.3', + storybook: '7.1.0-beta.3', }; diff --git a/code/lib/client-logger/package.json b/code/lib/client-logger/package.json index ff0a5f27448e..012ce166afc1 100644 --- a/code/lib/client-logger/package.json +++ b/code/lib/client-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-logger", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "", "keywords": [ "storybook" diff --git a/code/lib/codemod/package.json b/code/lib/codemod/package.json index 6885174ac167..6309a7ebf9e2 100644 --- a/code/lib/codemod/package.json +++ b/code/lib/codemod/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/codemod", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "A collection of codemod scripts written with JSCodeshift", "keywords": [ "storybook" @@ -49,9 +49,9 @@ "@babel/preset-env": "^7.22.0", "@babel/types": "^7.22.0", "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/csf-tools": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@types/cross-spawn": "^6.0.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", diff --git a/code/lib/core-common/package.json b/code/lib/core-common/package.json index 6a1550a00b14..ba3ef22b221a 100644 --- a/code/lib/core-common/package.json +++ b/code/lib/core-common/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-common", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -43,8 +43,8 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@types/find-cache-dir": "^3.2.1", "@types/node": "^16.0.0", "@types/node-fetch": "^2.6.4", diff --git a/code/lib/core-common/src/utils/get-storybook-info.ts b/code/lib/core-common/src/utils/get-storybook-info.ts index bcdb4eee3970..fe183d566b7c 100644 --- a/code/lib/core-common/src/utils/get-storybook-info.ts +++ b/code/lib/core-common/src/utils/get-storybook-info.ts @@ -83,7 +83,7 @@ const getRendererInfo = (packageJson: PackageJson) => { const validConfigExtensions = ['ts', 'js', 'tsx', 'jsx', 'mjs', 'cjs']; -const findConfigFile = (prefix: string, configDir: string) => { +export const findConfigFile = (prefix: string, configDir: string) => { const filePrefix = path.join(configDir, prefix); const extension = validConfigExtensions.find((ext: string) => fse.existsSync(`${filePrefix}.${ext}`) diff --git a/code/lib/core-events/package.json b/code/lib/core-events/package.json index bc6814cc16b3..197354e60124 100644 --- a/code/lib/core-events/package.json +++ b/code/lib/core-events/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-events", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Event names used in storybook core", "keywords": [ "storybook" diff --git a/code/lib/core-events/src/index.ts b/code/lib/core-events/src/index.ts index 64a452dc11f2..beec768961de 100644 --- a/code/lib/core-events/src/index.ts +++ b/code/lib/core-events/src/index.ts @@ -68,6 +68,7 @@ enum events { REQUEST_WHATS_NEW_DATA = 'requestWhatsNewData', RESULT_WHATS_NEW_DATA = 'resultWhatsNewData', SET_WHATS_NEW_CACHE = 'setWhatsNewCache', + TOGGLE_WHATS_NEW_NOTIFICATIONS = 'toggleWhatsNewNotifications', } // Enables: `import Events from ...` @@ -118,6 +119,7 @@ export const { REQUEST_WHATS_NEW_DATA, RESULT_WHATS_NEW_DATA, SET_WHATS_NEW_CACHE, + TOGGLE_WHATS_NEW_NOTIFICATIONS, } = events; // Used to break out of the current render without showing a redbox @@ -133,10 +135,12 @@ export type WhatsNewData = status: 'SUCCESS'; title: string; url: string; + blogUrl?: string; publishedAt: string; excerpt: string; postIsRead: boolean; showNotification: boolean; + disableWhatsNewNotifications: boolean; } | { status: 'ERROR'; diff --git a/code/lib/core-server/package.json b/code/lib/core-server/package.json index 916ca137e35e..5995f5818be2 100644 --- a/code/lib/core-server/package.json +++ b/code/lib/core-server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-server", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -56,19 +56,19 @@ "dependencies": { "@aw-web-design/x-default-browser": "1.4.126", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.1.0-beta.2", - "@storybook/channels": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/builder-manager": "7.1.0-beta.3", + "@storybook/channels": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.1.0-beta.2", + "@storybook/csf-tools": "7.1.0-beta.3", "@storybook/docs-mdx": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/telemetry": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/manager": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/telemetry": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@types/detect-port": "^1.3.0", "@types/node": "^16.0.0", "@types/pretty-hrtime": "^1.0.0", diff --git a/code/lib/core-server/src/presets/common-preset.ts b/code/lib/core-server/src/presets/common-preset.ts index 79439587cb32..800f7ccaf0f7 100644 --- a/code/lib/core-server/src/presets/common-preset.ts +++ b/code/lib/core-server/src/presets/common-preset.ts @@ -1,6 +1,8 @@ import { pathExists, readFile } from 'fs-extra'; import { deprecate, logger } from '@storybook/node-logger'; +import { telemetry } from '@storybook/telemetry'; import { + findConfigFile, getDirectoryFromWorkingDir, getPreviewBodyTemplate, getPreviewHeadTemplate, @@ -15,7 +17,7 @@ import type { StorybookConfig, StoryIndexer, } from '@storybook/types'; -import { loadCsf } from '@storybook/csf-tools'; +import { loadCsf, readConfig, writeConfig } from '@storybook/csf-tools'; import { join } from 'path'; import { dedent } from 'ts-dedent'; import fetch from 'node-fetch'; @@ -25,9 +27,11 @@ import { REQUEST_WHATS_NEW_DATA, RESULT_WHATS_NEW_DATA, SET_WHATS_NEW_CACHE, + TOGGLE_WHATS_NEW_NOTIFICATIONS, } from '@storybook/core-events'; import { parseStaticDir } from '../utils/server-statics'; import { defaultStaticDirs } from '../utils/constants'; +import { sendTelemetryError } from '../withTelemetry'; const interpolate = (string: string, data: Record = {}) => Object.entries(data).reduce((acc, [k, v]) => acc.replace(new RegExp(`%${k}%`, 'g'), v), string); @@ -188,7 +192,6 @@ export const features = async ( storyStoreV7: true, argTypeTargetsV7: true, legacyDecoratorFileOrder: false, - whatsNewNotifications: false, }); export const storyIndexers = async (indexers?: StoryIndexer[]) => { @@ -246,10 +249,18 @@ const WHATS_NEW_CACHE = 'whats-new-cache'; const WHATS_NEW_URL = 'https://storybook.js.org/whats-new/v1'; // Grabbed from the implementation: https://github.com/storybookjs/dx-functions/blob/main/netlify/functions/whats-new.ts -type WhatsNewResponse = { title: string; url: string; publishedAt: string; excerpt: string }; +type WhatsNewResponse = { + title: string; + url: string; + blogUrl?: string; + publishedAt: string; + excerpt: string; +}; // eslint-disable-next-line @typescript-eslint/naming-convention -export const experimental_serverChannel = (channel: Channel, options: Options) => { +export const experimental_serverChannel = async (channel: Channel, options: Options) => { + const coreOptions = await options.presets.apply('core'); + channel.on(SET_WHATS_NEW_CACHE, async (data: WhatsNewCache) => { const cache: WhatsNewCache = await options.cache.get(WHATS_NEW_CACHE).catch((e) => { logger.verbose(e); @@ -266,12 +277,19 @@ export const experimental_serverChannel = (channel: Channel, options: Options) = throw response; })) as WhatsNewResponse; + const main = await readConfig(findConfigFile('main', options.configDir)); + const disableWhatsNewNotifications = main.getFieldValue([ + 'core', + 'disableWhatsNewNotifications', + ]); + const cache: WhatsNewCache = (await options.cache.get(WHATS_NEW_CACHE)) ?? {}; const data = { ...post, status: 'SUCCESS', postIsRead: post.url === cache.lastReadPost, showNotification: post.url !== cache.lastDismissedPost && post.url !== cache.lastReadPost, + disableWhatsNewNotifications, } satisfies WhatsNewData; channel.emit(RESULT_WHATS_NEW_DATA, { data }); } catch (e) { @@ -282,5 +300,29 @@ export const experimental_serverChannel = (channel: Channel, options: Options) = } }); + channel.on( + TOGGLE_WHATS_NEW_NOTIFICATIONS, + async ({ disableWhatsNewNotifications }: { disableWhatsNewNotifications: boolean }) => { + const isTelemetryEnabled = coreOptions.disableTelemetry !== true; + try { + const main = await readConfig(findConfigFile('main', options.configDir)); + main.setFieldValue(['core', 'disableWhatsNewNotifications'], disableWhatsNewNotifications); + await writeConfig(main); + + if (isTelemetryEnabled) { + await telemetry('core-config', { disableWhatsNewNotifications }); + } + } catch (error) { + if (isTelemetryEnabled) { + await sendTelemetryError(error, 'core-config', { + cliOptions: options, + presetOptions: { ...options, corePresets: [], overridePresets: [] }, + skipPrompt: true, + }); + } + } + } + ); + return channel; }; diff --git a/code/lib/core-server/src/withTelemetry.ts b/code/lib/core-server/src/withTelemetry.ts index 2eda1325587a..ef231fe83c24 100644 --- a/code/lib/core-server/src/withTelemetry.ts +++ b/code/lib/core-server/src/withTelemetry.ts @@ -9,6 +9,7 @@ type TelemetryOptions = { cliOptions: CLIOptions; presetOptions?: Parameters[0]; printError?: (err: any) => void; + skipPrompt?: boolean; }; const promptCrashReports = async () => { @@ -30,7 +31,11 @@ const promptCrashReports = async () => { type ErrorLevel = 'none' | 'error' | 'full'; -async function getErrorLevel({ cliOptions, presetOptions }: TelemetryOptions): Promise { +async function getErrorLevel({ + cliOptions, + presetOptions, + skipPrompt, +}: TelemetryOptions): Promise { if (cliOptions.disableTelemetry) return 'none'; // If we are running init or similar, we just have to go with true here @@ -54,6 +59,10 @@ async function getErrorLevel({ cliOptions, presetOptions }: TelemetryOptions): P (await cache.get('enableCrashReports')) ?? (await cache.get('enableCrashreports')); if (valueFromCache !== undefined) return valueFromCache ? 'full' : 'error'; + if (skipPrompt) { + return 'error'; + } + const valueFromPrompt = await promptCrashReports(); if (valueFromPrompt !== undefined) return valueFromPrompt ? 'full' : 'error'; diff --git a/code/lib/core-webpack/package.json b/code/lib/core-webpack/package.json index 0b271cf8e615..6beb0c395c81 100644 --- a/code/lib/core-webpack/package.json +++ b/code/lib/core-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-webpack", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -43,9 +43,9 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@types/node": "^16.0.0", "ts-dedent": "^2.0.0" }, diff --git a/code/lib/csf-plugin/package.json b/code/lib/csf-plugin/package.json index 047319326bb3..e0826b74ea89 100644 --- a/code/lib/csf-plugin/package.json +++ b/code/lib/csf-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-plugin", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Enrich CSF files via static analysis", "keywords": [ "storybook" @@ -43,7 +43,7 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/csf-tools": "7.1.0-beta.2", + "@storybook/csf-tools": "7.1.0-beta.3", "unplugin": "^1.3.1" }, "devDependencies": { diff --git a/code/lib/csf-tools/package.json b/code/lib/csf-tools/package.json index 51dba6f87f57..6f5fa87d4261 100644 --- a/code/lib/csf-tools/package.json +++ b/code/lib/csf-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-tools", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Parse and manipulate CSF and Storybook config files", "keywords": [ "storybook" @@ -46,7 +46,7 @@ "@babel/traverse": "^7.22.0", "@babel/types": "^7.22.0", "@storybook/csf": "^0.1.0", - "@storybook/types": "7.1.0-beta.2", + "@storybook/types": "7.1.0-beta.3", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" diff --git a/code/lib/docs-tools/package.json b/code/lib/docs-tools/package.json index 80b57409239d..3adee4c39427 100644 --- a/code/lib/docs-tools/package.json +++ b/code/lib/docs-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/docs-tools", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Shared utility functions for frameworks to implement docs", "keywords": [ "storybook" @@ -43,9 +43,9 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-common": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/core-common": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@types/doctrine": "^0.0.3", "doctrine": "^3.0.0", "lodash": "^4.17.21" diff --git a/code/lib/instrumenter/package.json b/code/lib/instrumenter/package.json index 84050b61cdc7..527af259dc9f 100644 --- a/code/lib/instrumenter/package.json +++ b/code/lib/instrumenter/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/instrumenter", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "", "keywords": [ "storybook" @@ -43,11 +43,11 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channels": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/channels": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-beta.2" + "@storybook/preview-api": "7.1.0-beta.3" }, "devDependencies": { "typescript": "~4.9.3" diff --git a/code/lib/manager-api/package.json b/code/lib/manager-api/package.json index c9c3f0d47ef8..198615137893 100644 --- a/code/lib/manager-api/package.json +++ b/code/lib/manager-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager-api", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Core Storybook Manager API & Context", "keywords": [ "storybook" @@ -42,14 +42,14 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channels": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/channels": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/router": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/router": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", diff --git a/code/lib/manager-api/src/modules/whatsnew.ts b/code/lib/manager-api/src/modules/whatsnew.ts index b970d0e96bac..21d0596683f6 100644 --- a/code/lib/manager-api/src/modules/whatsnew.ts +++ b/code/lib/manager-api/src/modules/whatsnew.ts @@ -4,6 +4,7 @@ import { REQUEST_WHATS_NEW_DATA, RESULT_WHATS_NEW_DATA, SET_WHATS_NEW_CACHE, + TOGGLE_WHATS_NEW_NOTIFICATIONS, } from '@storybook/core-events'; import type { ModuleFn } from '../index'; @@ -14,6 +15,7 @@ export type SubState = { export type SubAPI = { isWhatsNewUnread(): boolean; whatsNewHasBeenRead(): void; + toggleWhatsNewNotifications(): void; }; const WHATS_NEW_NOTIFICATION_ID = 'whats-new'; @@ -39,6 +41,17 @@ export const init: ModuleFn = ({ fullAPI, store }) => { fullAPI.clearNotification(WHATS_NEW_NOTIFICATION_ID); } }, + toggleWhatsNewNotifications() { + if (state.whatsNewData?.status === 'SUCCESS') { + setWhatsNewState({ + ...state.whatsNewData, + disableWhatsNewNotifications: !state.whatsNewData.disableWhatsNewNotifications, + }); + fullAPI.emit(TOGGLE_WHATS_NEW_NOTIFICATIONS, { + disableWhatsNewNotifications: state.whatsNewData.disableWhatsNewNotifications, + }); + } + }, }; function getLatestWhatsNewPost(): Promise { @@ -63,9 +76,9 @@ export const init: ModuleFn = ({ fullAPI, store }) => { const isNewStoryBookUser = fullAPI.getUrlState().path.includes('onboarding'); if ( - global.FEATURES.whatsNewNotifications && !isNewStoryBookUser && whatsNewData.status === 'SUCCESS' && + !whatsNewData.disableWhatsNewNotifications && whatsNewData.showNotification ) { fullAPI.addNotification({ diff --git a/code/lib/manager-api/src/version.ts b/code/lib/manager-api/src/version.ts index 3147cfe7ad60..a91960161ecd 100644 --- a/code/lib/manager-api/src/version.ts +++ b/code/lib/manager-api/src/version.ts @@ -1 +1 @@ -export const version = '7.1.0-beta.2'; +export const version = '7.1.0-beta.3'; diff --git a/code/lib/node-logger/package.json b/code/lib/node-logger/package.json index 98f73631461f..f37772c7065b 100644 --- a/code/lib/node-logger/package.json +++ b/code/lib/node-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/node-logger", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "", "keywords": [ "storybook" diff --git a/code/lib/postinstall/package.json b/code/lib/postinstall/package.json index f52b88a97a87..6d30d511a6b5 100644 --- a/code/lib/postinstall/package.json +++ b/code/lib/postinstall/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/postinstall", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook addons postinstall utilities", "keywords": [ "api", diff --git a/code/lib/preview-api/package.json b/code/lib/preview-api/package.json index 2d6277039da1..50bd8372df01 100644 --- a/code/lib/preview-api/package.json +++ b/code/lib/preview-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview-api", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "", "keywords": [ "storybook" @@ -67,13 +67,13 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channel-postmessage": "7.1.0-beta.2", - "@storybook/channels": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/channel-postmessage": "7.1.0-beta.3", + "@storybook/channels": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/types": "7.1.0-beta.2", + "@storybook/types": "7.1.0-beta.3", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -85,7 +85,7 @@ }, "devDependencies": { "@jest/globals": "^29.5.0", - "@storybook/core-common": "7.1.0-beta.2", + "@storybook/core-common": "7.1.0-beta.3", "ansi-to-html": "^0.6.11", "react": "^16.14.0", "slash": "^5.0.0" diff --git a/code/lib/preview/package.json b/code/lib/preview/package.json index 9618f6dc54c1..5b56c2cb34a3 100644 --- a/code/lib/preview/package.json +++ b/code/lib/preview/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "", "keywords": [ "storybook" @@ -55,10 +55,10 @@ "prep": "../../../scripts/prepare/esm-bundle.ts" }, "devDependencies": { - "@storybook/channels": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", + "@storybook/channels": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", "typescript": "~4.9.3" }, "publishConfig": { diff --git a/code/lib/react-dom-shim/package.json b/code/lib/react-dom-shim/package.json index b58a4f2c9f9b..4b308883748f 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": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "", "keywords": [ "storybook" @@ -53,7 +53,7 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "devDependencies": { - "@storybook/types": "7.1.0-beta.2", + "@storybook/types": "7.1.0-beta.3", "typescript": "~4.9.3" }, "peerDependencies": { diff --git a/code/lib/router/package.json b/code/lib/router/package.json index e964534b0c57..515e75709758 100644 --- a/code/lib/router/package.json +++ b/code/lib/router/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/router", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Core Storybook Router", "keywords": [ "storybook" @@ -48,7 +48,7 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", "memoizerific": "^1.11.3", "qs": "^6.10.0" }, diff --git a/code/lib/source-loader/package.json b/code/lib/source-loader/package.json index c112ca59b865..1119488a1aa6 100644 --- a/code/lib/source-loader/package.json +++ b/code/lib/source-loader/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/source-loader", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Source loader", "keywords": [ "lib", @@ -45,7 +45,7 @@ }, "dependencies": { "@storybook/csf": "^0.1.0", - "@storybook/types": "7.1.0-beta.2", + "@storybook/types": "7.1.0-beta.3", "estraverse": "^5.2.0", "lodash": "^4.17.21", "prettier": "^2.8.0" diff --git a/code/lib/telemetry/package.json b/code/lib/telemetry/package.json index ae1d2199771f..9aff281775e2 100644 --- a/code/lib/telemetry/package.json +++ b/code/lib/telemetry/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/telemetry", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Telemetry logging for crash reports and usage statistics", "keywords": [ "storybook" @@ -43,8 +43,8 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/core-common": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/core-common": "7.1.0-beta.3", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", diff --git a/code/lib/telemetry/src/types.ts b/code/lib/telemetry/src/types.ts index e65da2747a34..25100149fd44 100644 --- a/code/lib/telemetry/src/types.ts +++ b/code/lib/telemetry/src/types.ts @@ -12,7 +12,8 @@ export type EventType = | 'canceled' | 'error' | 'error-metadata' - | 'version-update'; + | 'version-update' + | 'core-config'; export interface Dependency { version: string | undefined; diff --git a/code/lib/theming/package.json b/code/lib/theming/package.json index 2f81bcd94891..7f0369208e9d 100644 --- a/code/lib/theming/package.json +++ b/code/lib/theming/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/theming", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Core Storybook Components", "keywords": [ "storybook" @@ -49,7 +49,7 @@ }, "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, diff --git a/code/lib/types/package.json b/code/lib/types/package.json index 399d1343812e..39e7533ad2fa 100644 --- a/code/lib/types/package.json +++ b/code/lib/types/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/types", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Core Storybook TS Types", "keywords": [ "storybook" @@ -43,7 +43,7 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channels": "7.1.0-beta.2", + "@storybook/channels": "7.1.0-beta.3", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", "file-system-cache": "2.3.0" diff --git a/code/lib/types/src/modules/core-common.ts b/code/lib/types/src/modules/core-common.ts index ff5141f5238a..24f4d8c8f9ce 100644 --- a/code/lib/types/src/modules/core-common.ts +++ b/code/lib/types/src/modules/core-common.ts @@ -38,6 +38,11 @@ export interface CoreConfig { * @see https://storybook.js.org/telemetry */ disableTelemetry?: boolean; + + /** + * Disables notifications for Storybook updates. + */ + disableWhatsNewNotifications?: boolean; /** * Enable crash reports to be sent to Storybook telemetry * @see https://storybook.js.org/telemetry @@ -305,11 +310,6 @@ export interface StorybookConfig { * Apply decorators from preview.js before decorators from addons or frameworks */ legacyDecoratorFileOrder?: boolean; - - /** - * Show a notification anytime a What's new? post is published in the Storybook blog. - */ - whatsNewNotifications?: boolean; }; /** diff --git a/code/package.json b/code/package.json index e3f8825097f1..7426d42a9192 100644 --- a/code/package.json +++ b/code/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/root", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "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 78745c434110..2964e1bdf96a 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": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Create React App preset", "keywords": [ "storybook" @@ -50,14 +50,14 @@ "dependencies": { "@pmmmwh/react-refresh-webpack-plugin": "^0.5.1", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", - "@storybook/types": "7.1.0-beta.2", + "@storybook/types": "7.1.0-beta.3", "@types/babel__core": "^7.1.7", "babel-plugin-react-docgen": "^4.1.0", "pnp-webpack-plugin": "^1.7.0", "semver": "^7.3.5" }, "devDependencies": { - "@storybook/node-logger": "7.1.0-beta.2", + "@storybook/node-logger": "7.1.0-beta.3", "@types/node": "^16.0.0", "typescript": "~4.9.3" }, diff --git a/code/presets/html-webpack/package.json b/code/presets/html-webpack/package.json index 5752aafbf440..29099e2d97fc 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": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -48,7 +48,7 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-webpack": "7.1.0-beta.2", + "@storybook/core-webpack": "7.1.0-beta.3", "@types/node": "^16.0.0", "html-loader": "^3.1.0", "webpack": "5" diff --git a/code/presets/preact-webpack/package.json b/code/presets/preact-webpack/package.json index edaa4eef3b77..2146f0d1304a 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": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" @@ -50,7 +50,7 @@ "dependencies": { "@babel/plugin-transform-react-jsx": "^7.21.0", "@babel/preset-typescript": "^7.21.0", - "@storybook/core-webpack": "7.1.0-beta.2", + "@storybook/core-webpack": "7.1.0-beta.3", "@types/node": "^16.0.0" }, "devDependencies": { diff --git a/code/presets/react-webpack/package.json b/code/presets/react-webpack/package.json index 0b4435533af2..950ec9125510 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": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading", "keywords": [ "storybook" @@ -66,10 +66,10 @@ "@babel/preset-flow": "^7.21.0", "@babel/preset-react": "^7.22.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", - "@storybook/core-webpack": "7.1.0-beta.2", - "@storybook/docs-tools": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", - "@storybook/react": "7.1.0-beta.2", + "@storybook/core-webpack": "7.1.0-beta.3", + "@storybook/docs-tools": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", + "@storybook/react": "7.1.0-beta.3", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^16.0.0", "@types/semver": "^7.3.4", diff --git a/code/presets/server-webpack/package.json b/code/presets/server-webpack/package.json index 9488297affde..22eaef06476a 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": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -53,10 +53,10 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-server": "7.1.0-beta.2", - "@storybook/core-webpack": "7.1.0-beta.2", + "@storybook/core-server": "7.1.0-beta.3", + "@storybook/core-webpack": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/server": "7.1.0-beta.2", + "@storybook/server": "7.1.0-beta.3", "@types/node": "^16.0.0", "safe-identifier": "^0.4.1", "ts-dedent": "^2.0.0", diff --git a/code/presets/svelte-webpack/package.json b/code/presets/svelte-webpack/package.json index 7b292d136cd9..02eea6c5e5b1 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": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -63,19 +63,19 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-webpack": "7.1.0-beta.2", - "@storybook/node-logger": "7.1.0-beta.2", + "@storybook/core-webpack": "7.1.0-beta.3", + "@storybook/node-logger": "7.1.0-beta.3", "sveltedoc-parser": "^4.2.1", "ts-dedent": "^2.0.0" }, "devDependencies": { - "svelte": "^3.31.2", - "svelte-loader": "^3.1.2", + "svelte": "^4.0.0", + "svelte-loader": "^3.1.9", "typescript": "~4.9.3" }, "peerDependencies": { "@babel/core": "*", - "svelte": "^3.1.0", + "svelte": "^3.1.0 || ^4.0.0", "svelte-loader": "*" }, "engines": { diff --git a/code/presets/vue-webpack/package.json b/code/presets/vue-webpack/package.json index 4f33456662d7..41ea69914f10 100644 --- a/code/presets/vue-webpack/package.json +++ b/code/presets/vue-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-vue-webpack", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Vue: Develop Vue Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -58,8 +58,8 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-webpack": "7.1.0-beta.2", - "@storybook/docs-tools": "7.1.0-beta.2", + "@storybook/core-webpack": "7.1.0-beta.3", + "@storybook/docs-tools": "7.1.0-beta.3", "@types/node": "^16.0.0", "ts-loader": "^9.2.8", "vue-docgen-api": "^4.44.23", diff --git a/code/presets/vue3-webpack/package.json b/code/presets/vue3-webpack/package.json index a94712230c61..25ed231f4676 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": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -58,8 +58,8 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-webpack": "7.1.0-beta.2", - "@storybook/docs-tools": "7.1.0-beta.2", + "@storybook/core-webpack": "7.1.0-beta.3", + "@storybook/docs-tools": "7.1.0-beta.3", "@types/node": "^16.0.0", "ts-loader": "^9.2.8", "vue-docgen-api": "^4.46.0", diff --git a/code/presets/web-components-webpack/package.json b/code/presets/web-components-webpack/package.json index 817080461a95..83a9bfe6b1fe 100644 --- a/code/presets/web-components-webpack/package.json +++ b/code/presets/web-components-webpack/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preset-web-components-webpack", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.", "keywords": [ "lit", @@ -54,7 +54,7 @@ "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/preset-env": "^7.22.0", - "@storybook/core-webpack": "7.1.0-beta.2", + "@storybook/core-webpack": "7.1.0-beta.3", "@types/node": "^16.0.0", "babel-loader": "^7.0.0 || ^8.0.0 || ^9.0.0", "babel-plugin-bundled-import-meta": "^0.3.1" diff --git a/code/renderers/html/package.json b/code/renderers/html/package.json index 58d08c2f28bb..5c59abedc3bf 100644 --- a/code/renderers/html/package.json +++ b/code/renderers/html/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook HTML renderer", "keywords": [ "storybook" @@ -48,11 +48,11 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-client": "7.1.0-beta.2", - "@storybook/docs-tools": "7.1.0-beta.2", + "@storybook/core-client": "7.1.0-beta.3", + "@storybook/docs-tools": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "ts-dedent": "^2.0.0" }, "devDependencies": { diff --git a/code/renderers/preact/package.json b/code/renderers/preact/package.json index 71d6f2aaac2e..f8b24bb91006 100644 --- a/code/renderers/preact/package.json +++ b/code/renderers/preact/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook Preact renderer", "keywords": [ "storybook" @@ -48,10 +48,10 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-client": "7.1.0-beta.2", + "@storybook/core-client": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "ts-dedent": "^2.0.0" }, "devDependencies": { diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json index 34bf396dce3a..e68ec630ccfe 100644 --- a/code/renderers/react/package.json +++ b/code/renderers/react/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook React renderer", "keywords": [ "storybook" @@ -52,13 +52,13 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/core-client": "7.1.0-beta.2", - "@storybook/docs-tools": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/core-client": "7.1.0-beta.3", + "@storybook/docs-tools": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/react-dom-shim": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/react-dom-shim": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", "@types/node": "^16.0.0", @@ -79,12 +79,12 @@ "@types/util-deprecate": "^1.0.0", "expect-type": "^0.15.0", "jest-specific-snapshot": "^8.0.0", - "require-from-string": "^2.0.2", - "typescript": "~4.9.3" + "require-from-string": "^2.0.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "typescript": "*" }, "peerDependenciesMeta": { "typescript": { diff --git a/code/renderers/server/package.json b/code/renderers/server/package.json index 68c51f5dcaa7..98d193497675 100644 --- a/code/renderers/server/package.json +++ b/code/renderers/server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook Server renderer", "keywords": [ "storybook" @@ -53,12 +53,12 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-client": "7.1.0-beta.2", + "@storybook/core-client": "7.1.0-beta.3", "@storybook/csf": "^0.1.0", - "@storybook/csf-tools": "7.1.0-beta.2", + "@storybook/csf-tools": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@types/fs-extra": "^11.0.1", "fs-extra": "^11.1.0", "ts-dedent": "^2.0.0", diff --git a/code/renderers/svelte/package.json b/code/renderers/svelte/package.json index c224a590faba..44902421e2b2 100644 --- a/code/renderers/svelte/package.json +++ b/code/renderers/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook Svelte renderer", "keywords": [ "storybook" @@ -52,13 +52,13 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/core-client": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", - "@storybook/docs-tools": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/core-client": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", + "@storybook/docs-tools": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "sveltedoc-parser": "^4.2.1", "type-fest": "^3.11.0" }, diff --git a/code/renderers/vue/package.json b/code/renderers/vue/package.json index 8c99058b9596..a20f19162f02 100644 --- a/code/renderers/vue/package.json +++ b/code/renderers/vue/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook Vue renderer", "keywords": [ "storybook" @@ -48,12 +48,12 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/core-client": "7.1.0-beta.2", - "@storybook/docs-tools": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/core-client": "7.1.0-beta.3", + "@storybook/docs-tools": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "ts-dedent": "^2.0.0", "type-fest": "^3.11.0" }, diff --git a/code/renderers/vue3/package.json b/code/renderers/vue3/package.json index 0a233b0463b7..b04f77944eff 100644 --- a/code/renderers/vue3/package.json +++ b/code/renderers/vue3/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook Vue 3 renderer", "keywords": [ "storybook" @@ -48,11 +48,11 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-client": "7.1.0-beta.2", - "@storybook/docs-tools": "7.1.0-beta.2", + "@storybook/core-client": "7.1.0-beta.3", + "@storybook/docs-tools": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "lodash": "^4.17.21", "ts-dedent": "^2.0.0", "type-fest": "^3.11.0", diff --git a/code/renderers/web-components/package.json b/code/renderers/web-components/package.json index 1dde0309b740..ac97e29f435e 100644 --- a/code/renderers/web-components/package.json +++ b/code/renderers/web-components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook web-components renderer", "keywords": [ "lit", @@ -51,13 +51,13 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/core-client": "7.1.0-beta.2", - "@storybook/docs-tools": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/core-client": "7.1.0-beta.3", + "@storybook/docs-tools": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "tiny-invariant": "^1.3.1", "ts-dedent": "^2.0.0" }, diff --git a/code/ui/.storybook/main.ts b/code/ui/.storybook/main.ts index 23a70dc16661..541b0f2c69e1 100644 --- a/code/ui/.storybook/main.ts +++ b/code/ui/.storybook/main.ts @@ -50,6 +50,7 @@ const config: StorybookConfig = { '@storybook/addon-essentials', '@storybook/addon-interactions', '@storybook/addon-storysource', + '@storybook/addon-designs', ], framework: { name: '@storybook/react-vite', diff --git a/code/ui/blocks/package.json b/code/ui/blocks/package.json index 70b667de3e2c..9f264bba42f4 100644 --- a/code/ui/blocks/package.json +++ b/code/ui/blocks/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/blocks", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Storybook Doc Blocks", "keywords": [ "storybook" @@ -43,17 +43,17 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/channels": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/channels": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/csf": "^0.1.0", - "@storybook/docs-tools": "7.1.0-beta.2", + "@storybook/docs-tools": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/preview-api": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/preview-api": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -68,7 +68,7 @@ "util-deprecate": "^1.0.2" }, "devDependencies": { - "@storybook/addon-actions": "7.1.0-beta.2", + "@storybook/addon-actions": "7.1.0-beta.3", "@types/color-convert": "^2.0.0" }, "peerDependencies": { diff --git a/code/ui/components/package.json b/code/ui/components/package.json index 325c27e2a5b3..dfffc9695682 100644 --- a/code/ui/components/package.json +++ b/code/ui/components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/components", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Core Storybook Components", "keywords": [ "storybook" @@ -48,11 +48,11 @@ "prep": "../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/client-logger": "7.1.0-beta.2", + "@storybook/client-logger": "7.1.0-beta.3", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/theming": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" diff --git a/code/ui/components/src/Zoom/ZoomElement.tsx b/code/ui/components/src/Zoom/ZoomElement.tsx index e880637a30b7..8293d9a7f031 100644 --- a/code/ui/components/src/Zoom/ZoomElement.tsx +++ b/code/ui/components/src/Zoom/ZoomElement.tsx @@ -2,23 +2,13 @@ import type { ReactElement } from 'react'; import React, { useEffect, useRef, useState, useCallback } from 'react'; import useResizeObserver from 'use-resize-observer'; import { styled } from '@storybook/theming'; -import { browserSupportsCssZoom } from './browserSupportsCssZoom'; - -const hasBrowserSupportForCssZoom = browserSupportsCssZoom(); const ZoomElementWrapper = styled.div<{ scale: number; elementHeight: number }>( - ({ scale = 1, elementHeight }) => - hasBrowserSupportForCssZoom - ? { - '> *': { - zoom: 1 / scale, - }, - } - : { - height: elementHeight || 'auto', - transformOrigin: 'top left', - transform: `scale(${1 / scale})`, - } + ({ scale = 1, elementHeight }) => ({ + height: elementHeight || 'auto', + transformOrigin: 'top left', + transform: `scale(${1 / scale})`, + }) ); type ZoomProps = { @@ -52,10 +42,7 @@ export function ZoomElement({ scale, children }: ZoomProps) { return ( -
+
{children}
diff --git a/code/ui/components/src/Zoom/ZoomIFrame.tsx b/code/ui/components/src/Zoom/ZoomIFrame.tsx index 255a39c414b5..3101364bd861 100644 --- a/code/ui/components/src/Zoom/ZoomIFrame.tsx +++ b/code/ui/components/src/Zoom/ZoomIFrame.tsx @@ -1,6 +1,5 @@ import type { RefObject, ReactElement } from 'react'; import { Component } from 'react'; -import { browserSupportsCssZoom } from './browserSupportsCssZoom'; export type IZoomIFrameProps = { scale: number; @@ -36,19 +35,12 @@ export class ZoomIFrame extends Component { setIframeInnerZoom(scale: number) { try { - if (browserSupportsCssZoom()) { - Object.assign(this.iframe.contentDocument.body.style, { - zoom: 1 / scale, - minHeight: `calc(100vh / ${1 / scale})`, - }); - } else { - Object.assign(this.iframe.contentDocument.body.style, { - width: `${scale * 100}%`, - height: `${scale * 100}%`, - transform: `scale(${1 / scale})`, - transformOrigin: 'top left', - }); - } + Object.assign(this.iframe.contentDocument.body.style, { + width: `${scale * 100}%`, + height: `${scale * 100}%`, + transform: `scale(${1 / scale})`, + transformOrigin: 'top left', + }); } catch (e) { this.setIframeZoom(scale); } diff --git a/code/ui/components/src/Zoom/browserSupportsCssZoom.ts b/code/ui/components/src/Zoom/browserSupportsCssZoom.ts deleted file mode 100644 index 43ff5b9004cf..000000000000 --- a/code/ui/components/src/Zoom/browserSupportsCssZoom.ts +++ /dev/null @@ -1,13 +0,0 @@ -export function browserSupportsCssZoom(): boolean { - try { - // First checks if Safari is being used, because Safari supports zoom, but it's buggy: https://developer.mozilla.org/en-US/docs/Web/CSS/zoom#browser_compatibility - if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { - return false; - } - - // Next check if the browser supports zoom styling - return global.CSS?.supports('zoom: 1'); - } catch (error) { - return false; - } -} diff --git a/code/ui/components/src/clipboard/ClipboardCode.tsx b/code/ui/components/src/clipboard/ClipboardCode.tsx new file mode 100644 index 000000000000..577a6674f5d4 --- /dev/null +++ b/code/ui/components/src/clipboard/ClipboardCode.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { color, styled, typography } from '@storybook/theming'; + +const Code = styled.pre` + line-height: 18px; + padding: 11px 1rem; + white-space: pre-wrap; + background: rgba(0, 0, 0, 0.05); + color: ${color.darkest}; + border-radius: 3px; + margin: 1rem 0; + width: 100%; + display: block; + overflow: hidden; + font-family: ${typography.fonts.mono}; + font-size: ${typography.size.s2 - 1}px; +`; + +interface ClipboardCodeProps { + code: string; +} + +export const ClipboardCode = ({ code, ...props }: ClipboardCodeProps) => ( + + {code} + +); diff --git a/code/ui/components/src/index.ts b/code/ui/components/src/index.ts index c654094f1b61..292a9c7067dd 100644 --- a/code/ui/components/src/index.ts +++ b/code/ui/components/src/index.ts @@ -26,7 +26,6 @@ export { Span } from './typography/elements/Span'; export { Table } from './typography/elements/Table'; export { TT } from './typography/elements/TT'; export { UL } from './typography/elements/UL'; - export { Badge } from './Badge/Badge'; // Typography @@ -85,6 +84,8 @@ export * from './typography/ResetWrapper'; export { withReset, codeCommon } from './typography/lib/common'; +export { ClipboardCode } from './clipboard/ClipboardCode'; + // eslint-disable-next-line prefer-destructuring export const components = typography.components; diff --git a/code/ui/manager/package.json b/code/ui/manager/package.json index b23ddccb7d87..113af1c66eed 100644 --- a/code/ui/manager/package.json +++ b/code/ui/manager/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager", - "version": "7.1.0-beta.2", + "version": "7.1.0-beta.3", "description": "Core Storybook UI", "keywords": [ "storybook" @@ -51,18 +51,19 @@ }, "devDependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/addons": "7.1.0-beta.2", - "@storybook/api": "7.1.0-beta.2", - "@storybook/channel-postmessage": "7.1.0-beta.2", - "@storybook/channels": "7.1.0-beta.2", - "@storybook/client-logger": "7.1.0-beta.2", - "@storybook/components": "7.1.0-beta.2", - "@storybook/core-events": "7.1.0-beta.2", + "@storybook/addon-designs": "^7.0.0", + "@storybook/addons": "7.1.0-beta.3", + "@storybook/api": "7.1.0-beta.3", + "@storybook/channel-postmessage": "7.1.0-beta.3", + "@storybook/channels": "7.1.0-beta.3", + "@storybook/client-logger": "7.1.0-beta.3", + "@storybook/components": "7.1.0-beta.3", + "@storybook/core-events": "7.1.0-beta.3", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.1.0-beta.2", - "@storybook/router": "7.1.0-beta.2", - "@storybook/theming": "7.1.0-beta.2", - "@storybook/types": "7.1.0-beta.2", + "@storybook/manager-api": "7.1.0-beta.3", + "@storybook/router": "7.1.0-beta.3", + "@storybook/theming": "7.1.0-beta.3", + "@storybook/types": "7.1.0-beta.3", "@testing-library/react": "^11.2.2", "@types/semver": "^7.3.4", "copy-to-clipboard": "^3.3.1", diff --git a/code/ui/manager/src/components/sidebar/Menu.stories.tsx b/code/ui/manager/src/components/sidebar/Menu.stories.tsx index acf071da57ce..f9e743a6d84d 100644 --- a/code/ui/manager/src/components/sidebar/Menu.stories.tsx +++ b/code/ui/manager/src/components/sidebar/Menu.stories.tsx @@ -1,11 +1,11 @@ +import type { ComponentProps } from 'react'; import React from 'react'; import { expect } from '@storybook/jest'; import type { Meta, StoryObj } from '@storybook/react'; -import type { ComponentProps } from 'react'; import { TooltipLinkList } from '@storybook/components'; import { styled } from '@storybook/theming'; -import { within, userEvent, screen } from '@storybook/testing-library'; +import { screen, userEvent, within } from '@storybook/testing-library'; import type { State } from '@storybook/manager-api'; import { SidebarMenu, ToolbarMenu } from './Menu'; import { useMenu } from '../../containers/menu'; @@ -46,9 +46,8 @@ const DoubleThemeRenderingHack = styled.div({ export const Expanded: Story = { render: () => { - window.FEATURES.whatsNewNotifications = true; const menu = useMenu( - { whatsNewData: { status: 'SUCCESS' } } as State, + { whatsNewData: { status: 'SUCCESS', disableWhatsNewNotifications: false } } as State, { // @ts-expect-error (Converted from ts-ignore) getShortcutKeys: () => ({}), diff --git a/code/ui/manager/src/containers/menu.tsx b/code/ui/manager/src/containers/menu.tsx index 6d5272ad8fd6..a387cb24d5f3 100644 --- a/code/ui/manager/src/containers/menu.tsx +++ b/code/ui/manager/src/containers/menu.tsx @@ -5,7 +5,6 @@ import { Badge, Icons } from '@storybook/components'; import type { API, State } from '@storybook/manager-api'; import { shortcutToHumanString } from '@storybook/manager-api'; import { styled, useTheme } from '@storybook/theming'; -import { global } from '@storybook/global'; const focusableUIElements = { storySearchField: 'storybook-explorer-searchfield', @@ -69,7 +68,8 @@ export const useMenu = ( [api] ); - const whatsNewNotificationsEnabled = global.FEATURES.whatsNewNotifications; + const whatsNewNotificationsEnabled = + state.whatsNewData?.status === 'SUCCESS' && !state.disableWhatsNewNotifications; const isWhatsNewUnread = api.isWhatsNewUnread(); const whatsNew = useMemo( () => ({ diff --git a/code/ui/manager/src/containers/sidebar.tsx b/code/ui/manager/src/containers/sidebar.tsx index 6a9b606e2db4..86b9cb71ac6b 100755 --- a/code/ui/manager/src/containers/sidebar.tsx +++ b/code/ui/manager/src/containers/sidebar.tsx @@ -3,7 +3,6 @@ import React from 'react'; import type { Combo, StoriesHash } from '@storybook/manager-api'; import { Consumer } from '@storybook/manager-api'; -import { global } from '@storybook/global'; import { Sidebar as SidebarComponent } from '../components/sidebar/Sidebar'; import { useMenu } from './menu'; @@ -33,6 +32,9 @@ const Sidebar = React.memo(function Sideber() { enableShortcuts ); + const whatsNewNotificationsEnabled = + state.whatsNewData?.status === 'SUCCESS' && !state.disableWhatsNewNotifications; + return { title: name, url, @@ -44,7 +46,7 @@ const Sidebar = React.memo(function Sideber() { refId, viewMode, menu, - menuHighlighted: global.FEATURES.whatsNewNotifications && api.isWhatsNewUnread(), + menuHighlighted: whatsNewNotificationsEnabled && api.isWhatsNewUnread(), enableShortcuts, }; }; diff --git a/code/ui/manager/src/globals/exports.ts b/code/ui/manager/src/globals/exports.ts index 0e8fa703c97a..43b7c50f5191 100644 --- a/code/ui/manager/src/globals/exports.ts +++ b/code/ui/manager/src/globals/exports.ts @@ -54,6 +54,7 @@ export default { 'Bar', 'Blockquote', 'Button', + 'ClipboardCode', 'Code', 'DL', 'Div', @@ -162,6 +163,7 @@ export default { 'STORY_SPECIFIED', 'STORY_THREW_EXCEPTION', 'STORY_UNCHANGED', + 'TOGGLE_WHATS_NEW_NOTIFICATIONS', 'UPDATE_GLOBALS', 'UPDATE_QUERY_PARAMS', 'UPDATE_STORY_ARGS', diff --git a/code/ui/manager/src/settings/about.stories.jsx b/code/ui/manager/src/settings/about.stories.jsx deleted file mode 100644 index 7bb06a45ad0b..000000000000 --- a/code/ui/manager/src/settings/about.stories.jsx +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react'; -import { actions as createActions } from '@storybook/addon-actions'; - -import { AboutScreen } from './about'; - -const info = { - plain: `- upgrade webpack & babel to latest\n- new addParameters and third argument to .add to pass data to addons\n- added the ability to theme storybook\n- improved ui for mobile devices\n- improved performance of addon-knobs`, -}; - -export default { - component: AboutScreen, - title: 'Settings/AboutScreen', - decorators: [ - (storyFn) => ( -
- {storyFn()} -
- ), - ], -}; - -const actions = createActions('onClose'); - -export const UpToDate = () => ( - -); - -export const OldVersionRaceCondition = () => ( - -); - -export const NewVersionRequired = () => ( - -); - -export const FailedToFetchNewVersion = () => ( - -); diff --git a/code/ui/manager/src/settings/about.stories.tsx b/code/ui/manager/src/settings/about.stories.tsx new file mode 100644 index 000000000000..67fcabcf6667 --- /dev/null +++ b/code/ui/manager/src/settings/about.stories.tsx @@ -0,0 +1,39 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import React from 'react'; +import { AboutScreen } from './about'; + +const meta = { + component: AboutScreen, + title: 'Settings/AboutScreen', + decorators: [ + (Story) => ( +
+ +
+ ), + ], +} satisfies Meta; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + current: { + version: '7.0.1', + }, + }, + parameters: { + design: { + type: 'figma', + url: 'https://www.figma.com/file/ur4kydUbRqdDyfoZWzdiIw/Storybook-app?type=design&node-id=9564-120444&mode=design&t=0TPINZFpwgFQFQeX-4', + }, + }, +}; diff --git a/code/ui/manager/src/settings/about.tsx b/code/ui/manager/src/settings/about.tsx index fccd4ee15111..7fb70f5eae59 100644 --- a/code/ui/manager/src/settings/about.tsx +++ b/code/ui/manager/src/settings/about.tsx @@ -1,114 +1,160 @@ +/* eslint-disable no-nested-ternary */ import type { FC } from 'react'; -import React from 'react'; -import semver from 'semver'; +import React, { useState } from 'react'; import { styled } from '@storybook/theming'; import type { State } from '@storybook/manager-api'; -import { StorybookIcon, SyntaxHighlighter, DocumentWrapper } from '@storybook/components'; - -import SettingsFooter from './SettingsFooter'; +import { Button as BaseButton, Icons, Link, StorybookIcon } from '@storybook/components'; const Header = styled.header(({ theme }) => ({ - marginBottom: 20, - fontSize: theme.typography.size.m3, + marginBottom: 32, + fontSize: theme.typography.size.l2, color: theme.base === 'light' ? theme.color.darkest : theme.color.lightest, fontWeight: theme.typography.weight.bold, alignItems: 'center', display: 'flex', '> svg': { - height: 32, + height: 48, width: 'auto', marginRight: 8, }, })); -const UpdateMessage = styled.div<{ status: 'positive' | 'negative' | string }>( - ({ status, theme }) => { - if (status === 'positive') { - return { background: theme.background.positive, color: theme.color.positiveText }; - } - if (status === 'negative') { - return { background: theme.background.negative, color: theme.color.negativeText }; - } - return { - background: theme.base === 'light' ? '#EAF3FC' : theme.color.darkest, - color: theme.base === 'light' ? theme.color.darkest : theme.defaultText, - }; - }, +const Container = styled.div({ + display: `flex`, + alignItems: 'center', + justifyContent: 'center', + height: 'calc(100% - 40px)', + flexDirection: 'column', +}); - ({ theme }) => ({ - fontWeight: theme.typography.weight.bold, +const UpgradeBlock = styled.div(({ theme }) => { + return { + border: '1px solid', + borderRadius: 5, + padding: 20, + margin: 20, + marginTop: 0, + maxWidth: 400, + borderColor: theme.appBorderColor, fontSize: theme.typography.size.s2, - padding: '10px 20px', - marginBottom: 24, - borderRadius: theme.appBorderRadius, - border: `1px solid ${theme.appBorderColor}`, - textAlign: 'center', - }) -); + }; +}); -const Upgrade = styled.div(({ theme }) => ({ - marginTop: 20, - borderTop: `1px solid ${theme.appBorderColor}`, +const Code = styled.pre(({ theme }) => ({ + background: theme.base === 'light' ? 'rgba(0, 0, 0, 0.05)' : theme.appBorderColor, + fontSize: theme.typography.size.s2 - 1, + margin: '4px 0 16px', })); -const Container = styled.div({ - padding: `3rem 20px`, - maxWidth: 600, - margin: '0 auto', -}); +const Footer = styled.div(({ theme }) => ({ + marginBottom: 24, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + color: theme.base === 'light' ? theme.color.dark : theme.color.lightest, + fontWeight: theme.typography.weight.regular, + fontSize: theme.typography.size.s2, +})); -const AboutScreen: FC<{ - latest: State['versions']['latest']; - current: State['versions']['current']; -}> = ({ latest = null, current }) => { - const canUpdate = latest && semver.gt(latest.version, current.version); +const SquareButton = styled(BaseButton)(({ theme }) => ({ + '&&': { + borderRadius: 4, + fontSize: '13px', + lineHeight: '14px', + color: theme.base === 'light' ? theme.color.darker : theme.color.lightest, + padding: '9px 12px', + svg: { + marginRight: 6, + }, + }, +})); + +const TabButton = styled(BaseButton)<{ active: boolean }>(({ theme, active }) => ({ + '&&': { + padding: 2, + paddingRight: 8, + margin: 0, + color: active + ? theme.color.secondary + : theme.base === 'light' + ? theme.color.dark + : theme.color.lightest, + }, +})); - let updateMessage; - if (latest) { - if (canUpdate) { - updateMessage = ( - - Storybook {latest.version} is available. Upgrade from {current.version} now. - - ); - } else { - updateMessage = ( - Looking good! You're up to date. - ); - } - } else { - updateMessage = ( - - Oops! The latest version of Storybook couldn't be fetched. - - ); - } +const StyledLink = styled(Link as any)(({ theme }) => ({ + '&&': { + fontWeight: theme.typography.weight.bold, + color: theme.base === 'light' ? theme.color.dark : theme.color.light, + }, + '&:hover': { + color: theme.base === 'light' ? theme.color.darkest : theme.color.lightest, + }, +})); +const AboutScreen: FC<{ + current: State['versions']['current']; + onNavigateToWhatsNew?: () => void; +}> = ({ current, onNavigateToWhatsNew }) => { + const [activeTab, setActiveTab] = useState<'npm' | 'pnpm'>('npm'); return ( +
- - Storybook {current.version} + Storybook
+ + You are on Storybook {current.version} +

Run the following script to check for updates and upgrade to the latest version.

+
+ setActiveTab('npm')}> + npm + + setActiveTab('pnpm')}> + pnpm + +
- {updateMessage} + + {activeTab === 'npm' + ? 'npx storybook@latest upgrade' + : 'pnpm dlx storybook@latest upgrade'} + + {onNavigateToWhatsNew && ( + // eslint-disable-next-line jsx-a11y/anchor-is-valid + See what's new in Storybook + )} +
- {canUpdate && ( - - -

- Upgrade all Storybook packages to latest: -

- - npx storybook@latest upgrade - -
-
- )} +
+
+
+ + + GitHub + - + + + Documentation + +
+
+ Open source software maintained by{' '} + Chromatic and the{' '} + + Storybook Community + +
+
); }; diff --git a/code/ui/manager/src/settings/about_page.tsx b/code/ui/manager/src/settings/about_page.tsx index 34640957ad18..e20d89d5362a 100644 --- a/code/ui/manager/src/settings/about_page.tsx +++ b/code/ui/manager/src/settings/about_page.tsx @@ -1,7 +1,7 @@ import type { FC } from 'react'; -import React, { Component } from 'react'; +import React, { Component, useCallback } from 'react'; -import { type API, useStorybookApi } from '@storybook/manager-api'; +import { type API, useStorybookApi, useStorybookState } from '@storybook/manager-api'; import { AboutScreen } from './about'; @@ -20,10 +20,19 @@ class NotificationClearer extends Component<{ api: API; notificationId: string } const AboutPage: FC = () => { const api = useStorybookApi(); + const state = useStorybookState(); + const onNavigateToWhatsNew = useCallback(() => { + api.changeSettingsTab('whats-new'); + }, [api]); return ( - + ); }; diff --git a/code/ui/manager/src/settings/whats_new.tsx b/code/ui/manager/src/settings/whats_new.tsx index a033f3b7ffe9..3d0569129917 100644 --- a/code/ui/manager/src/settings/whats_new.tsx +++ b/code/ui/manager/src/settings/whats_new.tsx @@ -1,8 +1,9 @@ -import type { FC, ComponentProps } from 'react'; -import React, { useEffect, useState, Fragment } from 'react'; -import { styled } from '@storybook/theming'; -import { Icons, Loader } from '@storybook/components'; -import { useStorybookApi } from '@storybook/manager-api'; +import type { ComponentProps, FC } from 'react'; +import React, { Fragment, useEffect, useState } from 'react'; +import { styled, useTheme } from '@storybook/theming'; +import { Button, IconButton, Icons, Loader } from '@storybook/components'; +import { useStorybookApi, useStorybookState } from '@storybook/manager-api'; +import { global } from '@storybook/global'; const Centered = styled.div({ top: '50%', @@ -26,6 +27,74 @@ const Message = styled.div(({ theme }) => ({ lineHeight: `16px`, })); +const Container = styled.div(({ theme }) => ({ + position: 'absolute', + width: '100%', + bottom: '40px', + background: theme.background.bar, + fontSize: `13px`, + borderTop: '1px solid', + borderColor: theme.appBorderColor, + padding: '8px 12px', + display: 'flex', + justifyContent: 'space-between', +})); + +const ToggleNotificationButton = styled(IconButton)(({ theme }) => ({ + fontWeight: theme.typography.weight.regular, + color: theme.color.mediumdark, + margin: 0, +})); + +const CopyButton = styled(Button)(() => ({ + margin: 0, + padding: 0, + borderRadius: 0, +})); + +export const WhatsNewFooter = ({ + isNotificationsEnabled, + onToggleNotifications, + onCopyLink, +}: { + isNotificationsEnabled: boolean; + onToggleNotifications?: () => void; + onCopyLink?: () => void; +}) => { + const theme = useTheme(); + const [copyText, setCopyText] = useState('Copy Link'); + const copyLink = () => { + onCopyLink(); + setCopyText('Copied!'); + setTimeout(() => setCopyText('Copy Link'), 4000); + }; + + return ( + +
+ +
Share this with your team.
+ + {copyText} + +
+ + {isNotificationsEnabled ? ( + <> + +  Hide notifications + + ) : ( + <> + +  Show notifications + + )} + +
+ ); +}; + const Iframe = styled.iframe<{ isLoaded: boolean }>( { position: 'absolute', @@ -37,7 +106,7 @@ const Iframe = styled.iframe<{ isLoaded: boolean }>( margin: 0, padding: 0, width: '100%', - height: '100%', + height: 'calc(100% - 80px)', }, ({ isLoaded }) => ({ visibility: isLoaded ? 'visible' : 'hidden' }) ); @@ -72,25 +141,43 @@ export interface WhatsNewProps { isLoaded: boolean; onLoad: () => void; url?: string; + isNotificationsEnabled: boolean; + onCopyLink?: () => void; + onToggleNotifications?: () => void; } -const PureWhatsNewScreen: FC = ({ didHitMaxWaitTime, isLoaded, onLoad, url }) => ( +const PureWhatsNewScreen: FC = ({ + didHitMaxWaitTime, + isLoaded, + onLoad, + url, + onCopyLink, + onToggleNotifications, + isNotificationsEnabled, +}) => ( {!isLoaded && !didHitMaxWaitTime && } {didHitMaxWaitTime ? ( ) : ( -