@storybook/nextjs 7.0.0-alpha.50 → 7.0.0-alpha.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export * from '@storybook/react';
2
- export { F as FrameworkOptions, S as StorybookConfig } from './types-4223e3ef.js';
2
+ export { F as FrameworkOptions, S as StorybookConfig } from './types-5de4e7b7.js';
3
3
  import '@storybook/preset-react-webpack';
4
4
  import '@storybook/builder-webpack5';
package/dist/preset.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { FileSystemCache } from 'file-system-cache';
2
2
  import { TransformOptions } from '@babel/core';
3
3
  import { Server } from 'http';
4
- import { S as StorybookConfig$1 } from './types-4223e3ef.js';
4
+ import { S as StorybookConfig$1 } from './types-5de4e7b7.js';
5
5
  import '@storybook/preset-react-webpack';
6
6
  import '@storybook/builder-webpack5';
7
7
 
@@ -740,8 +740,8 @@ interface Options$1 {
740
740
  /**
741
741
  * ⚠️ This file contains internal WIP types they MUST NOT be exported outside this package for now!
742
742
  */
743
- declare type BuilderName = 'webpack5' | '@storybook/builder-webpack5' | string;
744
- declare type RendererName = string;
743
+ type BuilderName = 'webpack5' | '@storybook/builder-webpack5' | string;
744
+ type RendererName = string;
745
745
  interface CoreConfig {
746
746
  builder?: BuilderName | {
747
747
  name: BuilderName;
@@ -805,7 +805,7 @@ interface ReleaseNotesData {
805
805
  currentVersion: string;
806
806
  showOnFirstLaunch: boolean;
807
807
  }
808
- declare type PackageJson = PackageJson$1 & Record<string, any>;
808
+ type PackageJson = PackageJson$1 & Record<string, any>;
809
809
  interface LoadOptions {
810
810
  packageJson: PackageJson;
811
811
  outputDir?: string;
@@ -862,7 +862,7 @@ interface StorybookConfigOptions {
862
862
  presets: Presets;
863
863
  presetsList?: LoadedPreset[];
864
864
  }
865
- declare type Options = LoadOptions & StorybookConfigOptions & CLIOptions & BuilderOptions;
865
+ type Options = LoadOptions & StorybookConfigOptions & CLIOptions & BuilderOptions;
866
866
  interface CoreCommon_IndexerOptions {
867
867
  makeTitle: (userTitle?: string) => string;
868
868
  }
@@ -916,8 +916,8 @@ interface CoreCommon_StoriesSpecifier {
916
916
  */
917
917
  files?: string;
918
918
  }
919
- declare type CoreCommon_StoriesEntry = string | CoreCommon_StoriesSpecifier;
920
- declare type Preset = string | {
919
+ type CoreCommon_StoriesEntry = string | CoreCommon_StoriesSpecifier;
920
+ type Preset = string | {
921
921
  name: string;
922
922
  options?: any;
923
923
  };
@@ -925,14 +925,14 @@ declare type Preset = string | {
925
925
  * An additional script that gets injected into the
926
926
  * preview or the manager,
927
927
  */
928
- declare type Entry = string;
929
- declare type CoreCommon_StorybookRefs = Record<string, {
928
+ type Entry = string;
929
+ type CoreCommon_StorybookRefs = Record<string, {
930
930
  title: string;
931
931
  url: string;
932
932
  } | {
933
933
  disable: boolean;
934
934
  }>;
935
- declare type DocsOptions = {
935
+ type DocsOptions = {
936
936
  /**
937
937
  * Should we generate docs entries at all under any circumstances? (i.e. can they be rendered)
938
938
  */
@@ -1062,8 +1062,8 @@ interface StorybookConfig {
1062
1062
  previewHead?: (head: string, options: Options) => string;
1063
1063
  previewBody?: (body: string, options: Options) => string;
1064
1064
  }
1065
- declare type PresetProperty<K, TStorybookConfig = StorybookConfig> = TStorybookConfig[K extends keyof TStorybookConfig ? K : never] | PresetPropertyFn<K, TStorybookConfig>;
1066
- declare type PresetPropertyFn<K, TStorybookConfig = StorybookConfig, TOptions = {}> = (config: TStorybookConfig[K extends keyof TStorybookConfig ? K : never], options: Options & TOptions) => TStorybookConfig[K extends keyof TStorybookConfig ? K : never] | Promise<TStorybookConfig[K extends keyof TStorybookConfig ? K : never]>;
1065
+ type PresetProperty<K, TStorybookConfig = StorybookConfig> = TStorybookConfig[K extends keyof TStorybookConfig ? K : never] | PresetPropertyFn<K, TStorybookConfig>;
1066
+ type PresetPropertyFn<K, TStorybookConfig = StorybookConfig, TOptions = {}> = (config: TStorybookConfig[K extends keyof TStorybookConfig ? K : never], options: Options & TOptions) => TStorybookConfig[K extends keyof TStorybookConfig ? K : never] | Promise<TStorybookConfig[K extends keyof TStorybookConfig ? K : never]>;
1067
1067
 
1068
1068
  declare const addons: PresetProperty<'addons', StorybookConfig$1>;
1069
1069
  declare const frameworkOptions: (_: never, options: Options) => Promise<StorybookConfig$1['framework']>;
package/dist/preset.js CHANGED
@@ -1,5 +1,5 @@
1
- "use strict";var U=Object.create;var l=Object.defineProperty;var X=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var B=(o,e)=>{for(var t in e)l(o,t,{get:e[t],enumerable:!0})},k=(o,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of G(e))!z.call(o,s)&&s!==t&&l(o,s,{get:()=>e[s],enumerable:!(r=X(e,s))||r.enumerable});return o};var n=(o,e,t)=>(t=o!=null?U(H(o)):{},k(e||!o||!o.__esModule?l(t,"default",{value:o,enumerable:!0}):t,o)),K=o=>k(l({},"__esModule",{value:!0}),o);var co={};B(co,{addons:()=>ro,babel:()=>po,config:()=>no,core:()=>io,frameworkOptions:()=>so,webpackFinal:()=>ao});module.exports=K(co);var p=require("path");var w=require("next/constants"),C=n(require("find-up")),j=require("fs-extra"),R=n(require("ts-dedent")),h=require("webpack");var u=n(require("path")),b=require("webpack"),v=o=>{var e;(e=o.plugins)==null||e.push(new b.DefinePlugin({"process.env.__NEXT_VERSION":JSON.stringify(a())}))},a=()=>require(g("next/package.json")).version,i=(o,e,t)=>{o.resolve??={},o.resolve.alias??={};let r=o.resolve.alias,s=g(`${t??e}`);Array.isArray(r)?r.push({name:e,alias:s}):r[e]=s},g=o=>{let e=require.resolve(o,{paths:[u.default.resolve()]}),r=e.lastIndexOf(o.replace(/\//g,u.default.sep))+o.length;return e.substring(0,r)};var P=async({baseConfig:o,nextConfigPath:e,configDir:t})=>{let r=await Y({baseConfig:o,nextConfigPath:e,configDir:t});return i(o,"next/config"),Z(o,r),r},Q=async o=>["mjs","js"].reduce(async(t,r)=>(await t||(t=(0,C.default)(`next.config.${r}`,{cwd:o})),t),Promise.resolve(void 0)),Y=async({baseConfig:o,nextConfigPath:e,configDir:t})=>{let r=e||await Q(t);if(!r||await(0,j.pathExists)(r)===!1)throw new Error(R.default`
1
+ "use strict";var z=Object.create;var u=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var Z=Object.getPrototypeOf,ee=Object.prototype.hasOwnProperty;var oe=(e,t)=>{for(var o in t)u(e,o,{get:t[o],enumerable:!0})},w=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Y(t))!ee.call(e,s)&&s!==o&&u(e,s,{get:()=>t[s],enumerable:!(r=Q(t,s))||r.enumerable});return e};var a=(e,t,o)=>(o=e!=null?z(Z(e)):{},w(t||!e||!e.__esModule?u(o,"default",{value:e,enumerable:!0}):o,e)),te=e=>w(u({},"__esModule",{value:!0}),e);var ue={};oe(ue,{addons:()=>pe,babel:()=>le,config:()=>me,core:()=>ce,frameworkOptions:()=>fe,webpackFinal:()=>ge});module.exports=te(ue);var f=require("path"),G=require("@babel/core"),K=require("@storybook/core-common");var y=a(require("semver")),_=require("webpack");var x=a(require("path")),j=require("webpack"),N=require("next/constants"),h=a(require("find-up")),R=require("fs-extra"),P=a(require("ts-dedent")),S=require("url"),O=e=>{var t;(t=e.plugins)==null||t.push(new j.DefinePlugin({"process.env.__NEXT_VERSION":JSON.stringify(m())}))},m=()=>require(d("next/package.json")).version,re=async e=>["mjs","js"].reduce(async(o,r)=>(await o||(o=(0,h.default)(`next.config.${r}`,{cwd:e})),o),Promise.resolve(void 0)),E=async({baseConfig:e={},nextConfigPath:t,configDir:o})=>{let r=t||await re(o);if(!r||await(0,R.pathExists)(r)===!1)throw new Error(P.default`
2
2
  Could not find or resolve your Next config file. Please provide the next config file path as a framework option.
3
3
 
4
4
  More info: https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/README.md#options
5
- `);let s=await import(r);return typeof s=="function"?s(w.PHASE_DEVELOPMENT_SERVER,{defaultConfig:o}):s},Z=(o,e)=>{var t;(t=o.plugins)==null||t.push(new h.DefinePlugin({"process.env.__NEXT_RUNTIME_CONFIG":JSON.stringify({serverRuntimeConfig:{},publicRuntimeConfig:e.publicRuntimeConfig})}))};var d=require("next/dist/build/webpack/config/blocks/css/loaders/getCssModuleLocalIdent"),y=require("next/dist/build/webpack/config/blocks/css/loaders/file-resolve"),E=n(require("semver"));var T=(o,e)=>{var r,s,c;let t=(r=o.module)==null?void 0:r.rules;t==null||t.forEach((f,m)=>{typeof f!="string"&&f.test instanceof RegExp&&f.test.test("test.css")&&(t[m]={test:/\.css$/,use:["style-loader",{loader:"css-loader",options:{importLoaders:1,...O(e),modules:{auto:!0,getLocalIdent:d.getCssModuleLocalIdent}}},"postcss-loader"]})}),t==null||t.push({test:/\.(scss|sass)$/,use:["style-loader",{loader:"css-loader",options:{importLoaders:3,...O(e),modules:{auto:!0,getLocalIdent:d.getCssModuleLocalIdent}}},"postcss-loader","resolve-url-loader",{loader:"sass-loader",options:{sourceMap:!0,sassOptions:e.sassOptions,additionalData:((s=e.sassOptions)==null?void 0:s.prependData)||((c=e.sassOptions)==null?void 0:c.additionalData)}}]})},O=o=>oo()?{url:{filter:S(o)},import:{filter:N(o)}}:{url:S(o),import:N(o)},S=o=>(e,t)=>{var r;return(0,y.cssFileResolve)(e,t,(r=o.experimental)==null?void 0:r.urlImports)},N=o=>(e,t,r)=>{var s;return(0,y.cssFileResolve)(typeof e=="string"?e:e.url,r,(s=o.experimental)==null?void 0:s.urlImports)},oo=()=>{try{let o=require(g("css-loader/package.json")).version;return E.default.gte(o,"6.0.0")}catch{return!1}};var W=n(require("tsconfig-paths-webpack-plugin")),I=require("tsconfig-paths"),F=o=>{let e=(0,I.loadConfig)();e.resultType==="failed"||!e.baseUrl||(o.resolve??={},o.resolve.plugins??=[],o.resolve.plugins.push(new W.default({configFile:e.configFileAbsolutePath,extensions:[".js",".jsx",".ts",".tsx"]})))};var A=n(require("semver"));var L=o=>{let e=eo();i(o,e)},eo=()=>{let o=a();return A.default.gte(o,"11.1.0")?"next/dist/shared/lib/router-context":"next/dist/next-server/lib/router-context"};var D=n(require("semver"));var V=o=>{let e=a();D.default.gte(e,"12.0.0")?i(o,"styled-jsx"):(i(o,"styled-jsx/babel"),i(o,"styled-jsx/css"),i(o,"styled-jsx/macro"),i(o,"styled-jsx/server"),i(o,"styled-jsx/style"),i(o,"styled-jsx/webpack"))};var _=async o=>{o.plugins||=[],o.plugins.includes("styled-jsx/babel")||o.plugins.push("styled-jsx/babel")};var q=n(require("semver"));var $=o=>{to(o),i(o,"next/image")},to=o=>{var s,c,f;let e=a();if(q.default.lt(e,"11.0.0"))return;let t=(s=o.module)==null?void 0:s.rules,r=t==null?void 0:t.find(m=>typeof m!="string"&&m.test instanceof RegExp&&m.test.test("test.jpg"));!r||(r.test=/\.(apng|eot|otf|ttf|woff|woff2|cur|ani|pdf)(\?.*)?$/,t==null||t.push({test:/\.(png|jpg|jpeg|gif|webp|avif|ico|bmp|svg)$/i,issuer:{not:/\.(css|scss|sass)$/},use:[{loader:require.resolve("@storybook/nextjs/next-image-loader-stub.js"),options:{filename:(c=r.generator)==null?void 0:c.filename}}]}),t==null||t.push({test:/\.(png|jpg|jpeg|gif|webp|avif|ico|bmp|svg)$/i,issuer:/\.(css|scss|sass)$/,type:"asset/resource",generator:{filename:(f=r.generator)==null?void 0:f.filename}}))};var M=require("tsconfig-paths"),J=async o=>{(0,M.loadConfig)().resultType==="success"&&(o.presets||=[],o.presets.includes("@babel/preset-typescript")||o.presets.push("@babel/preset-typescript"))};var ro=[(0,p.dirname)(require.resolve((0,p.join)("@storybook/preset-react-webpack","package.json"))),(0,p.dirname)(require.resolve((0,p.join)("@storybook/builder-webpack5","package.json")))],x={},so=async(o,e)=>{let t=await e.presets.apply("framework");return typeof t=="string"?{name:t,options:x}:typeof t>"u"?{name:require.resolve("@storybook/nextjs"),options:x}:{name:t.name,options:{...x,...t.options}}},io=async(o,e)=>{let t=await e.presets.apply("framework");return{...o,builder:{name:(0,p.dirname)(require.resolve((0,p.join)("@storybook/builder-webpack5","package.json"))),options:typeof t=="string"?{}:t.options.builder||{}},renderer:(0,p.dirname)(require.resolve((0,p.join)("@storybook/react","package.json")))}},no=(o=[])=>[...o,require.resolve("@storybook/nextjs/preview.js")],po=async o=>(J(o),_(o),o),ao=async(o,e)=>{let t=await e.presets.apply("frameworkOptions"),{options:{nextConfigPath:r}={}}=t,s=await P({baseConfig:o,nextConfigPath:r,configDir:e.configDir});return v(o),F(o),T(o,s),$(o),L(o),V(o),o};0&&(module.exports={addons,babel,config,core,frameworkOptions,webpackFinal});
5
+ `);let s=await import((0,S.pathToFileURL)(r).href),n=typeof s=="function"?s(N.PHASE_DEVELOPMENT_SERVER,{defaultConfig:e}):s;return n.default||n},i=(e,t,o)=>{e.resolve??={},e.resolve.alias??={};let r=e.resolve.alias,s=d(`${o??t}`);Array.isArray(r)?r.push({name:t,alias:s}):r[t]=s},d=e=>{let t=require.resolve(e,{paths:[x.default.resolve()]}),r=t.lastIndexOf(e.replace(/\//g,x.default.sep))+e.length;return t.substring(0,r)};var W=async({baseConfig:e,nextConfigPath:t,configDir:o})=>{let r=await E({baseConfig:e,nextConfigPath:t,configDir:o});return i(e,"next/config"),se(e,r),r},I=m(),se=(e,t)=>{var s,n;let o={"process.env.__NEXT_RUNTIME_CONFIG":JSON.stringify({serverRuntimeConfig:{},publicRuntimeConfig:t.publicRuntimeConfig})},r=(s=t.experimental)==null?void 0:s.newNextLinkBehavior;(y.default.gte(I,"13.0.0")&&r!==!1||y.default.gte(I,"12.2.0")&&r)&&(o["process.env.__NEXT_NEW_LINK_BEHAVIOR"]=!0),(n=e.plugins)==null||n.push(new _.DefinePlugin(o))};var k=require("next/dist/build/webpack/config/blocks/css/loaders/getCssModuleLocalIdent"),b=require("next/dist/build/webpack/config/blocks/css/loaders/file-resolve"),q=a(require("semver"));var V=(e,t)=>{var r,s,n;let o=(r=e.module)==null?void 0:r.rules;o==null||o.forEach((c,l)=>{typeof c!="string"&&c.test instanceof RegExp&&c.test.test("test.css")&&(o[l]={test:/\.css$/,use:["style-loader",{loader:"css-loader",options:{importLoaders:1,...A(t),modules:{auto:!0,getLocalIdent:k.getCssModuleLocalIdent}}},"postcss-loader"]})}),o==null||o.push({test:/\.(scss|sass)$/,use:["style-loader",{loader:"css-loader",options:{importLoaders:3,...A(t),modules:{auto:!0,getLocalIdent:k.getCssModuleLocalIdent}}},"postcss-loader","resolve-url-loader",{loader:"sass-loader",options:{sourceMap:!0,sassOptions:t.sassOptions,additionalData:((s=t.sassOptions)==null?void 0:s.prependData)||((n=t.sassOptions)==null?void 0:n.additionalData)}}]})},A=e=>ie()?{url:{filter:F(e)},import:{filter:L(e)}}:{url:F(e),import:L(e)},F=e=>(t,o)=>{var r;return(0,b.cssFileResolve)(t,o,(r=e.experimental)==null?void 0:r.urlImports)},L=e=>(t,o,r)=>{var s;return(0,b.cssFileResolve)(typeof t=="string"?t:t.url,r,(s=e.experimental)==null?void 0:s.urlImports)},ie=()=>{try{let e=require(d("css-loader/package.json")).version;return q.default.gte(e,"6.0.0")}catch{return!1}};var D=a(require("tsconfig-paths-webpack-plugin")),T=require("tsconfig-paths"),$=e=>{let t=(0,T.loadConfig)();t.resultType==="failed"||!t.baseUrl||(e.resolve??={},e.resolve.plugins??=[],e.resolve.plugins.push(new D.default({configFile:t.configFileAbsolutePath,extensions:[".js",".jsx",".ts",".tsx"]})))};var M=a(require("semver"));var U=e=>{let t=ne();i(e,t)},ne=()=>{let e=m();return M.default.gte(e,"11.1.0")?"next/dist/shared/lib/router-context":"next/dist/next-server/lib/router-context"};var B=a(require("semver"));var J=e=>{let t=m();B.default.gte(t,"12.0.0")?i(e,"styled-jsx"):(i(e,"styled-jsx/babel"),i(e,"styled-jsx/css"),i(e,"styled-jsx/macro"),i(e,"styled-jsx/server"),i(e,"styled-jsx/style"),i(e,"styled-jsx/webpack"))};var X=a(require("semver"));var H=e=>{ae(e),i(e,"next/image")},ae=e=>{var s,n,c;let t=m();if(X.default.lt(t,"11.0.0"))return;let o=(s=e.module)==null?void 0:s.rules,r=o==null?void 0:o.find(l=>typeof l!="string"&&l.test instanceof RegExp&&l.test.test("test.jpg"));!r||(r.test=/\.(apng|eot|otf|ttf|woff|woff2|cur|ani|pdf)(\?.*)?$/,o==null||o.push({test:/\.(png|jpg|jpeg|gif|webp|avif|ico|bmp|svg)$/i,issuer:{not:/\.(css|scss|sass)$/},use:[{loader:require.resolve("@storybook/nextjs/next-image-loader-stub.js"),options:{filename:(n=r.generator)==null?void 0:n.filename}}]}),o==null||o.push({test:/\.(png|jpg|jpeg|gif|webp|avif|ico|bmp|svg)$/i,issuer:/\.(css|scss|sass)$/,type:"asset/resource",generator:{filename:(c=r.generator)==null?void 0:c.filename}}))};var pe=[(0,f.dirname)(require.resolve((0,f.join)("@storybook/preset-react-webpack","package.json"))),(0,f.dirname)(require.resolve((0,f.join)("@storybook/builder-webpack5","package.json")))],v={},fe=async(e,t)=>{let o=await t.presets.apply("framework");return typeof o=="string"?{name:o,options:v}:typeof o>"u"?{name:require.resolve("@storybook/nextjs"),options:v}:{name:o.name,options:{...v,...o.options}}},ce=async(e,t)=>{let o=await t.presets.apply("framework");return{...e,builder:{name:(0,f.dirname)(require.resolve((0,f.join)("@storybook/builder-webpack5","package.json"))),options:typeof o=="string"?{}:o.options.builder||{}},renderer:(0,f.dirname)(require.resolve((0,f.join)("@storybook/react","package.json")))}},me=(e=[])=>[...e,require.resolve("@storybook/nextjs/preview.js")],le=async e=>{var c,l,C;let t=(0,G.loadPartialConfig)({...e,filename:`${(0,K.getProjectRoot)()}/__fake__.js`}),o=t==null?void 0:t.options,r=p=>typeof p=="object"&&p!==null&&"file"in p;((c=o==null?void 0:o.presets)==null?void 0:c.find(p=>{var g;return Array.isArray(p)&&p[0]==="next/babel"||p==="next/babel"||r(p)&&((g=p.file)==null?void 0:g.request)==="next/babel"}))||(l=o==null?void 0:o.presets)==null||l.push("next/babel");let n=(C=o==null?void 0:o.presets)==null?void 0:C.filter(p=>{var g;return!(r(p)&&((g=p.file)==null?void 0:g.request)===require.resolve("@babel/preset-react"))});return{...o,presets:n,babelrc:!1,configFile:!1}},ge=async(e,t)=>{let o=await t.presets.apply("frameworkOptions"),{options:{nextConfigPath:r}={}}=o,s=await W({baseConfig:e,nextConfigPath:r,configDir:t.configDir});return O(e),$(e),V(e,s),H(e),U(e),J(e),e};0&&(module.exports={addons,babel,config,core,frameworkOptions,webpackFinal});
package/dist/preset.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import{a as i}from"./chunk-QY6LZ6WI.mjs";import{dirname as c,join as f}from"path";import{PHASE_DEVELOPMENT_SERVER as S}from"next/constants";import N from"find-up";import{pathExists as E}from"fs-extra";import T from"ts-dedent";import{DefinePlugin as W}from"webpack";import l from"path";import{DefinePlugin as O}from"webpack";var g=o=>{o.plugins?.push(new O({"process.env.__NEXT_VERSION":JSON.stringify(p())}))},p=()=>i(a("next/package.json")).version,n=(o,e,t)=>{o.resolve??={},o.resolve.alias??={};let r=o.resolve.alias,s=a(`${t??e}`);Array.isArray(r)?r.push({name:e,alias:s}):r[e]=s},a=o=>{let e=i.resolve(o,{paths:[l.resolve()]}),r=e.lastIndexOf(o.replace(/\//g,l.sep))+o.length;return e.substring(0,r)};var u=async({baseConfig:o,nextConfigPath:e,configDir:t})=>{let r=await F({baseConfig:o,nextConfigPath:e,configDir:t});return n(o,"next/config"),A(o,r),r},I=async o=>["mjs","js"].reduce(async(t,r)=>(await t||(t=N(`next.config.${r}`,{cwd:o})),t),Promise.resolve(void 0)),F=async({baseConfig:o,nextConfigPath:e,configDir:t})=>{let r=e||await I(t);if(!r||await E(r)===!1)throw new Error(T`
1
+ import{a as i}from"./chunk-QY6LZ6WI.mjs";import{dirname as l,join as m}from"path";import{loadPartialConfig as G}from"@babel/core";import{getProjectRoot as K}from"@storybook/core-common";import y from"semver";import{DefinePlugin as q}from"webpack";import u from"path";import{DefinePlugin as E}from"webpack";import{PHASE_DEVELOPMENT_SERVER as I}from"next/constants";import _ from"find-up";import{pathExists as W}from"fs-extra";import A from"ts-dedent";import{pathToFileURL as F}from"url";var d=e=>{e.plugins?.push(new E({"process.env.__NEXT_VERSION":JSON.stringify(p())}))},p=()=>i(c("next/package.json")).version,L=async e=>["mjs","js"].reduce(async(t,r)=>(await t||(t=_(`next.config.${r}`,{cwd:e})),t),Promise.resolve(void 0)),x=async({baseConfig:e={},nextConfigPath:o,configDir:t})=>{let r=o||await L(t);if(!r||await W(r)===!1)throw new Error(A`
2
2
  Could not find or resolve your Next config file. Please provide the next config file path as a framework option.
3
3
 
4
4
  More info: https://github.com/storybookjs/storybook/blob/next/code/frameworks/nextjs/README.md#options
5
- `);let s=await import(r);return typeof s=="function"?s(S,{defaultConfig:o}):s},A=(o,e)=>{o.plugins?.push(new W({"process.env.__NEXT_RUNTIME_CONFIG":JSON.stringify({serverRuntimeConfig:{},publicRuntimeConfig:e.publicRuntimeConfig})}))};import{getCssModuleLocalIdent as d}from"next/dist/build/webpack/config/blocks/css/loaders/getCssModuleLocalIdent";import{cssFileResolve as b}from"next/dist/build/webpack/config/blocks/css/loaders/file-resolve";import L from"semver";var v=(o,e)=>{let t=o.module?.rules;t?.forEach((r,s)=>{typeof r!="string"&&r.test instanceof RegExp&&r.test.test("test.css")&&(t[s]={test:/\.css$/,use:["style-loader",{loader:"css-loader",options:{importLoaders:1,...y(e),modules:{auto:!0,getLocalIdent:d}}},"postcss-loader"]})}),t?.push({test:/\.(scss|sass)$/,use:["style-loader",{loader:"css-loader",options:{importLoaders:3,...y(e),modules:{auto:!0,getLocalIdent:d}}},"postcss-loader","resolve-url-loader",{loader:"sass-loader",options:{sourceMap:!0,sassOptions:e.sassOptions,additionalData:e.sassOptions?.prependData||e.sassOptions?.additionalData}}]})},y=o=>D()?{url:{filter:x(o)},import:{filter:k(o)}}:{url:x(o),import:k(o)},x=o=>(e,t)=>b(e,t,o.experimental?.urlImports),k=o=>(e,t,r)=>b(typeof e=="string"?e:e.url,r,o.experimental?.urlImports),D=()=>{try{let o=i(a("css-loader/package.json")).version;return L.gte(o,"6.0.0")}catch{return!1}};import V from"tsconfig-paths-webpack-plugin";import{loadConfig as _}from"tsconfig-paths";var w=o=>{let e=_();e.resultType==="failed"||!e.baseUrl||(o.resolve??={},o.resolve.plugins??=[],o.resolve.plugins.push(new V({configFile:e.configFileAbsolutePath,extensions:[".js",".jsx",".ts",".tsx"]})))};import q from"semver";var C=o=>{let e=$();n(o,e)},$=()=>{let o=p();return q.gte(o,"11.1.0")?"next/dist/shared/lib/router-context":"next/dist/next-server/lib/router-context"};import M from"semver";var j=o=>{let e=p();M.gte(e,"12.0.0")?n(o,"styled-jsx"):(n(o,"styled-jsx/babel"),n(o,"styled-jsx/css"),n(o,"styled-jsx/macro"),n(o,"styled-jsx/server"),n(o,"styled-jsx/style"),n(o,"styled-jsx/webpack"))};var R=async o=>{o.plugins||=[],o.plugins.includes("styled-jsx/babel")||o.plugins.push("styled-jsx/babel")};import J from"semver";var h=o=>{U(o),n(o,"next/image")},U=o=>{let e=p();if(J.lt(e,"11.0.0"))return;let t=o.module?.rules,r=t?.find(s=>typeof s!="string"&&s.test instanceof RegExp&&s.test.test("test.jpg"));!r||(r.test=/\.(apng|eot|otf|ttf|woff|woff2|cur|ani|pdf)(\?.*)?$/,t?.push({test:/\.(png|jpg|jpeg|gif|webp|avif|ico|bmp|svg)$/i,issuer:{not:/\.(css|scss|sass)$/},use:[{loader:i.resolve("@storybook/nextjs/next-image-loader-stub.js"),options:{filename:r.generator?.filename}}]}),t?.push({test:/\.(png|jpg|jpeg|gif|webp|avif|ico|bmp|svg)$/i,issuer:/\.(css|scss|sass)$/,type:"asset/resource",generator:{filename:r.generator?.filename}}))};import{loadConfig as X}from"tsconfig-paths";var P=async o=>{X().resultType==="success"&&(o.presets||=[],o.presets.includes("@babel/preset-typescript")||o.presets.push("@babel/preset-typescript"))};var Fo=[c(i.resolve(f("@storybook/preset-react-webpack","package.json"))),c(i.resolve(f("@storybook/builder-webpack5","package.json")))],m={},Ao=async(o,e)=>{let t=await e.presets.apply("framework");return typeof t=="string"?{name:t,options:m}:typeof t>"u"?{name:i.resolve("@storybook/nextjs"),options:m}:{name:t.name,options:{...m,...t.options}}},Lo=async(o,e)=>{let t=await e.presets.apply("framework");return{...o,builder:{name:c(i.resolve(f("@storybook/builder-webpack5","package.json"))),options:typeof t=="string"?{}:t.options.builder||{}},renderer:c(i.resolve(f("@storybook/react","package.json")))}},Do=(o=[])=>[...o,i.resolve("@storybook/nextjs/preview.js")],Vo=async o=>(P(o),R(o),o),_o=async(o,e)=>{let t=await e.presets.apply("frameworkOptions"),{options:{nextConfigPath:r}={}}=t,s=await u({baseConfig:o,nextConfigPath:r,configDir:e.configDir});return g(o),w(o),v(o,s),h(o),C(o),j(o),o};export{Fo as addons,Vo as babel,Do as config,Lo as core,Ao as frameworkOptions,_o as webpackFinal};
5
+ `);let s=await import(F(r).href),f=typeof s=="function"?s(I,{defaultConfig:e}):s;return f.default||f},n=(e,o,t)=>{e.resolve??={},e.resolve.alias??={};let r=e.resolve.alias,s=c(`${t??o}`);Array.isArray(r)?r.push({name:o,alias:s}):r[o]=s},c=e=>{let o=i.resolve(e,{paths:[u.resolve()]}),r=o.lastIndexOf(e.replace(/\//g,u.sep))+e.length;return o.substring(0,r)};var k=async({baseConfig:e,nextConfigPath:o,configDir:t})=>{let r=await x({baseConfig:e,nextConfigPath:o,configDir:t});return n(e,"next/config"),V(e,r),r},b=p(),V=(e,o)=>{let t={"process.env.__NEXT_RUNTIME_CONFIG":JSON.stringify({serverRuntimeConfig:{},publicRuntimeConfig:o.publicRuntimeConfig})},r=o.experimental?.newNextLinkBehavior;(y.gte(b,"13.0.0")&&r!==!1||y.gte(b,"12.2.0")&&r)&&(t["process.env.__NEXT_NEW_LINK_BEHAVIOR"]=!0),e.plugins?.push(new q(t))};import{getCssModuleLocalIdent as v}from"next/dist/build/webpack/config/blocks/css/loaders/getCssModuleLocalIdent";import{cssFileResolve as N}from"next/dist/build/webpack/config/blocks/css/loaders/file-resolve";import D from"semver";var h=(e,o)=>{let t=e.module?.rules;t?.forEach((r,s)=>{typeof r!="string"&&r.test instanceof RegExp&&r.test.test("test.css")&&(t[s]={test:/\.css$/,use:["style-loader",{loader:"css-loader",options:{importLoaders:1,...C(o),modules:{auto:!0,getLocalIdent:v}}},"postcss-loader"]})}),t?.push({test:/\.(scss|sass)$/,use:["style-loader",{loader:"css-loader",options:{importLoaders:3,...C(o),modules:{auto:!0,getLocalIdent:v}}},"postcss-loader","resolve-url-loader",{loader:"sass-loader",options:{sourceMap:!0,sassOptions:o.sassOptions,additionalData:o.sassOptions?.prependData||o.sassOptions?.additionalData}}]})},C=e=>T()?{url:{filter:w(e)},import:{filter:j(e)}}:{url:w(e),import:j(e)},w=e=>(o,t)=>N(o,t,e.experimental?.urlImports),j=e=>(o,t,r)=>N(typeof o=="string"?o:o.url,r,e.experimental?.urlImports),T=()=>{try{let e=i(c("css-loader/package.json")).version;return D.gte(e,"6.0.0")}catch{return!1}};import $ from"tsconfig-paths-webpack-plugin";import{loadConfig as M}from"tsconfig-paths";var P=e=>{let o=M();o.resultType==="failed"||!o.baseUrl||(e.resolve??={},e.resolve.plugins??=[],e.resolve.plugins.push(new $({configFile:o.configFileAbsolutePath,extensions:[".js",".jsx",".ts",".tsx"]})))};import U from"semver";var R=e=>{let o=B();n(e,o)},B=()=>{let e=p();return U.gte(e,"11.1.0")?"next/dist/shared/lib/router-context":"next/dist/next-server/lib/router-context"};import J from"semver";var S=e=>{let o=p();J.gte(o,"12.0.0")?n(e,"styled-jsx"):(n(e,"styled-jsx/babel"),n(e,"styled-jsx/css"),n(e,"styled-jsx/macro"),n(e,"styled-jsx/server"),n(e,"styled-jsx/style"),n(e,"styled-jsx/webpack"))};import X from"semver";var O=e=>{H(e),n(e,"next/image")},H=e=>{let o=p();if(X.lt(o,"11.0.0"))return;let t=e.module?.rules,r=t?.find(s=>typeof s!="string"&&s.test instanceof RegExp&&s.test.test("test.jpg"));!r||(r.test=/\.(apng|eot|otf|ttf|woff|woff2|cur|ani|pdf)(\?.*)?$/,t?.push({test:/\.(png|jpg|jpeg|gif|webp|avif|ico|bmp|svg)$/i,issuer:{not:/\.(css|scss|sass)$/},use:[{loader:i.resolve("@storybook/nextjs/next-image-loader-stub.js"),options:{filename:r.generator?.filename}}]}),t?.push({test:/\.(png|jpg|jpeg|gif|webp|avif|ico|bmp|svg)$/i,issuer:/\.(css|scss|sass)$/,type:"asset/resource",generator:{filename:r.generator?.filename}}))};var Fe=[l(i.resolve(m("@storybook/preset-react-webpack","package.json"))),l(i.resolve(m("@storybook/builder-webpack5","package.json")))],g={},Le=async(e,o)=>{let t=await o.presets.apply("framework");return typeof t=="string"?{name:t,options:g}:typeof t>"u"?{name:i.resolve("@storybook/nextjs"),options:g}:{name:t.name,options:{...g,...t.options}}},qe=async(e,o)=>{let t=await o.presets.apply("framework");return{...e,builder:{name:l(i.resolve(m("@storybook/builder-webpack5","package.json"))),options:typeof t=="string"?{}:t.options.builder||{}},renderer:l(i.resolve(m("@storybook/react","package.json")))}},Ve=(e=[])=>[...e,i.resolve("@storybook/nextjs/preview.js")],De=async e=>{let t=G({...e,filename:`${K()}/__fake__.js`})?.options,r=a=>typeof a=="object"&&a!==null&&"file"in a;t?.presets?.find(a=>Array.isArray(a)&&a[0]==="next/babel"||a==="next/babel"||r(a)&&a.file?.request==="next/babel")||t?.presets?.push("next/babel");let f=t?.presets?.filter(a=>!(r(a)&&a.file?.request===i.resolve("@babel/preset-react")));return{...t,presets:f,babelrc:!1,configFile:!1}},Te=async(e,o)=>{let t=await o.presets.apply("frameworkOptions"),{options:{nextConfigPath:r}={}}=t,s=await k({baseConfig:e,nextConfigPath:r,configDir:o.configDir});return d(e),P(e),h(e,s),O(e),R(e),S(e),e};export{Fe as addons,De as babel,Ve as config,qe as core,Le as frameworkOptions,Te as webpackFinal};
@@ -1,13 +1,13 @@
1
1
  import { ReactOptions, StorybookConfig as StorybookConfig$1, TypescriptOptions as TypescriptOptions$1 } from '@storybook/preset-react-webpack';
2
2
  import { BuilderOptions, StorybookConfigWebpack, TypescriptOptions } from '@storybook/builder-webpack5';
3
3
 
4
- declare type FrameworkName = '@storybook/nextjs';
5
- declare type BuilderName = '@storybook/builder-webpack5';
6
- declare type FrameworkOptions = ReactOptions & {
4
+ type FrameworkName = '@storybook/nextjs';
5
+ type BuilderName = '@storybook/builder-webpack5';
6
+ type FrameworkOptions = ReactOptions & {
7
7
  nextConfigPath?: string;
8
8
  builder?: BuilderOptions;
9
9
  };
10
- declare type StorybookConfigFramework = {
10
+ type StorybookConfigFramework = {
11
11
  framework: FrameworkName | {
12
12
  name: FrameworkName;
13
13
  options: FrameworkOptions;
@@ -23,6 +23,6 @@ declare type StorybookConfigFramework = {
23
23
  /**
24
24
  * The interface for Storybook configuration in `main.ts` files.
25
25
  */
26
- declare type StorybookConfig = Omit<StorybookConfig$1, keyof StorybookConfigWebpack | keyof StorybookConfigFramework> & StorybookConfigWebpack & StorybookConfigFramework;
26
+ type StorybookConfig = Omit<StorybookConfig$1, keyof StorybookConfigWebpack | keyof StorybookConfigFramework> & StorybookConfigWebpack & StorybookConfigFramework;
27
27
 
28
28
  export { FrameworkOptions as F, StorybookConfig as S };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/nextjs",
3
- "version": "7.0.0-alpha.50",
3
+ "version": "7.0.0-alpha.52",
4
4
  "description": "Storybook for Next.js",
5
5
  "keywords": [
6
6
  "storybook",
@@ -59,14 +59,13 @@
59
59
  "prep": "../../../scripts/prepare/bundle.ts"
60
60
  },
61
61
  "dependencies": {
62
- "@babel/preset-typescript": "^7.18.6",
63
- "@storybook/addons": "7.0.0-alpha.50",
64
- "@storybook/builder-webpack5": "7.0.0-alpha.50",
65
- "@storybook/core-common": "7.0.0-alpha.50",
66
- "@storybook/node-logger": "7.0.0-alpha.50",
67
- "@storybook/preset-react-webpack": "7.0.0-alpha.50",
68
- "@storybook/react": "7.0.0-alpha.50",
69
- "@types/node": "^14.14.20 || ^16.0.0",
62
+ "@storybook/addons": "7.0.0-alpha.52",
63
+ "@storybook/builder-webpack5": "7.0.0-alpha.52",
64
+ "@storybook/core-common": "7.0.0-alpha.52",
65
+ "@storybook/node-logger": "7.0.0-alpha.52",
66
+ "@storybook/preset-react-webpack": "7.0.0-alpha.52",
67
+ "@storybook/react": "7.0.0-alpha.52",
68
+ "@types/node": "^16.0.0 || ^18.0.0",
70
69
  "find-up": "^5.0.0",
71
70
  "fs-extra": "^9.0.1",
72
71
  "image-size": "^1.0.0",
@@ -81,9 +80,9 @@
81
80
  "tsconfig-paths-webpack-plugin": "^3.5.2"
82
81
  },
83
82
  "devDependencies": {
84
- "@storybook/addon-actions": "7.0.0-alpha.50",
83
+ "@storybook/addon-actions": "7.0.0-alpha.52",
85
84
  "next": "^12.2.4",
86
- "typescript": "~4.6.3",
85
+ "typescript": "^4.9.3",
87
86
  "webpack": "^5.65.0"
88
87
  },
89
88
  "peerDependencies": {
@@ -120,5 +119,5 @@
120
119
  ],
121
120
  "platform": "node"
122
121
  },
123
- "gitHead": "77184d039091f4782dc4540df6d271a24fb3e242"
122
+ "gitHead": "d2494e3f51ce0f55bcb1ef693a6477c669fbe666"
124
123
  }
@@ -0,0 +1,41 @@
1
+ import { Button } from './Button';
2
+
3
+ // More on how to set up stories at: https://storybook.js.org/docs/7.0/react/writing-stories/introduction
4
+ export default {
5
+ title: 'Example/Button',
6
+ component: Button,
7
+ tags: ['docsPage'],
8
+ argTypes: {
9
+ backgroundColor: {
10
+ control: 'color',
11
+ },
12
+ },
13
+ };
14
+
15
+ // More on writing stories with args: https://storybook.js.org/docs/7.0/react/writing-stories/args
16
+ export const Primary = {
17
+ args: {
18
+ primary: true,
19
+ label: 'Button',
20
+ },
21
+ };
22
+
23
+ export const Secondary = {
24
+ args: {
25
+ label: 'Button',
26
+ },
27
+ };
28
+
29
+ export const Large = {
30
+ args: {
31
+ size: 'large',
32
+ label: 'Button',
33
+ },
34
+ };
35
+
36
+ export const Small = {
37
+ args: {
38
+ size: 'small',
39
+ label: 'Button',
40
+ },
41
+ };
@@ -0,0 +1,23 @@
1
+ import { Header } from './Header';
2
+
3
+ export default {
4
+ title: 'Example/Header',
5
+ component: Header,
6
+ // This component will have an automatically generated docsPage entry: https://storybook.js.org/docs/7.0/react/writing-docs/docs-page
7
+ tags: ['docsPage'],
8
+ parameters: {
9
+ // More on how to position stories at: https://storybook.js.org/docs/7.0/react/configure/story-layout
10
+ layout: 'fullscreen',
11
+ },
12
+ };
13
+ export const LoggedIn = {
14
+ args: {
15
+ user: {
16
+ name: 'Jane Doe',
17
+ },
18
+ },
19
+ };
20
+
21
+ export const LoggedOut = {
22
+ args: {},
23
+ };
@@ -0,0 +1,24 @@
1
+ import { within, userEvent } from '@storybook/testing-library';
2
+ import { Page } from './Page';
3
+
4
+ export default {
5
+ title: 'Example/Page',
6
+ component: Page,
7
+ parameters: {
8
+ // More on how to position stories at: https://storybook.js.org/docs/7.0/react/configure/story-layout
9
+ layout: 'fullscreen',
10
+ },
11
+ };
12
+
13
+ export const LoggedOut = {};
14
+
15
+ // More on interaction testing: https://storybook.js.org/docs/7.0/react/writing-tests/interaction-testing
16
+ export const LoggedIn = {
17
+ play: async ({ canvasElement }) => {
18
+ const canvas = within(canvasElement);
19
+ const loginButton = await canvas.getByRole('button', {
20
+ name: /Log in/i,
21
+ });
22
+ await userEvent.click(loginButton);
23
+ },
24
+ };
@@ -2,13 +2,11 @@ import type { Meta, StoryObj } from '@storybook/react';
2
2
 
3
3
  import { Button } from './Button';
4
4
 
5
- // More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
5
+ // More on how to set up stories at: https://storybook.js.org/docs/7.0/react/writing-stories/introduction
6
6
  const meta: Meta<typeof Button> = {
7
7
  title: 'Example/Button',
8
8
  component: Button,
9
- // This component will have an automatically generated docsPage entry: https://storybook.js.org/docs/react/writing-docs/docs-page
10
9
  tags: ['docsPage'],
11
- // More on argTypes: https://storybook.js.org/docs/react/api/argtypes
12
10
  argTypes: {
13
11
  backgroundColor: {
14
12
  control: 'color',
@@ -19,7 +17,7 @@ const meta: Meta<typeof Button> = {
19
17
  export default meta;
20
18
  type Story = StoryObj<typeof Button>;
21
19
 
22
- // More on component templates: https://storybook.js.org/docs/react/writing-stories/introduction#using-args
20
+ // More on writing stories with args: https://storybook.js.org/docs/7.0/react/writing-stories/args
23
21
  export const Primary: Story = {
24
22
  args: {
25
23
  primary: true,
@@ -4,10 +4,10 @@ import { Header } from './Header';
4
4
  const meta: Meta<typeof Header> = {
5
5
  title: 'Example/Header',
6
6
  component: Header,
7
- // This component will have an automatically generated docsPage entry: https://storybook.js.org/docs/react/writing-docs/docs-page
7
+ // This component will have an automatically generated docsPage entry: https://storybook.js.org/docs/7.0/react/writing-docs/docs-page
8
8
  tags: ['docsPage'],
9
9
  parameters: {
10
- // More on Story layout: https://storybook.js.org/docs/react/configure/story-layout
10
+ // More on how to position stories at: https://storybook.js.org/docs/7.0/react/configure/story-layout
11
11
  layout: 'fullscreen',
12
12
  },
13
13
  };
@@ -7,7 +7,7 @@ const meta: Meta<typeof Page> = {
7
7
  title: 'Example/Page',
8
8
  component: Page,
9
9
  parameters: {
10
- // More on Story layout: https://storybook.js.org/docs/react/configure/story-layout
10
+ // More on how to position stories at: https://storybook.js.org/docs/7.0/react/configure/story-layout
11
11
  layout: 'fullscreen',
12
12
  },
13
13
  };
@@ -17,7 +17,7 @@ type Story = StoryObj<typeof Page>;
17
17
 
18
18
  export const LoggedOut: Story = {};
19
19
 
20
- // More on interaction testing: https://storybook.js.org/docs/react/writing-tests/interaction-testing
20
+ // More on interaction testing: https://storybook.js.org/docs/7.0/react/writing-tests/interaction-testing
21
21
  export const LoggedIn: Story = {
22
22
  play: async ({ canvasElement }) => {
23
23
  const canvas = within(canvasElement);
@@ -1,42 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Button } from './Button';
4
-
5
- // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
6
- export default {
7
- title: 'Example/Button',
8
- component: Button,
9
- // This component will have an automatically generated docsPage entry: https://storybook.js.org/docs/react/writing-docs/docs-page
10
- tags: ['docsPage'],
11
- // More on argTypes: https://storybook.js.org/docs/react/api/argtypes
12
- argTypes: {
13
- backgroundColor: { control: 'color' },
14
- },
15
- };
16
-
17
- // More on component templates: https://storybook.js.org/docs/react/writing-stories/introduction#using-args
18
- const Template = (args) => <Button {...args} />;
19
-
20
- export const Primary = Template.bind({});
21
- // More on args: https://storybook.js.org/docs/react/writing-stories/args
22
- Primary.args = {
23
- primary: true,
24
- label: 'Button',
25
- };
26
-
27
- export const Secondary = Template.bind({});
28
- Secondary.args = {
29
- label: 'Button',
30
- };
31
-
32
- export const Large = Template.bind({});
33
- Large.args = {
34
- size: 'large',
35
- label: 'Button',
36
- };
37
-
38
- export const Small = Template.bind({});
39
- Small.args = {
40
- size: 'small',
41
- label: 'Button',
42
- };
@@ -1,26 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Header } from './Header';
4
-
5
- export default {
6
- title: 'Example/Header',
7
- component: Header,
8
- // This component will have an automatically generated docsPage entry: https://storybook.js.org/docs/react/writing-docs/docs-page
9
- tags: ['docsPage'],
10
- parameters: {
11
- // More on Story layout: https://storybook.js.org/docs/react/configure/story-layout
12
- layout: 'fullscreen',
13
- },
14
- };
15
-
16
- const Template = (args) => <Header {...args} />;
17
-
18
- export const LoggedIn = Template.bind({});
19
- LoggedIn.args = {
20
- user: {
21
- name: 'Jane Doe',
22
- },
23
- };
24
-
25
- export const LoggedOut = Template.bind({});
26
- LoggedOut.args = {};
@@ -1,25 +0,0 @@
1
- import React from 'react';
2
- import { within, userEvent } from '@storybook/testing-library';
3
-
4
- import { Page } from './Page';
5
-
6
- export default {
7
- title: 'Example/Page',
8
- component: Page,
9
- parameters: {
10
- // More on Story layout: https://storybook.js.org/docs/react/configure/story-layout
11
- layout: 'fullscreen',
12
- },
13
- };
14
-
15
- const Template = (args) => <Page {...args} />;
16
-
17
- // More on interaction testing: https://storybook.js.org/docs/react/writing-tests/interaction-testing
18
- export const LoggedOut = Template.bind({});
19
-
20
- export const LoggedIn = Template.bind({});
21
- LoggedIn.play = async ({ canvasElement }) => {
22
- const canvas = within(canvasElement);
23
- const loginButton = await canvas.getByRole('button', { name: /Log in/i });
24
- await userEvent.click(loginButton);
25
- };