@storybook/cli 6.5.0-alpha.7 → 6.5.0-beta.1

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.
Files changed (257) hide show
  1. package/bin/index.js +1 -0
  2. package/dist/cjs/add.js +3 -3
  3. package/dist/cjs/automigrate/fixes/builder-vite.js +122 -0
  4. package/dist/cjs/automigrate/fixes/index.js +3 -1
  5. package/dist/cjs/automigrate/types.js +5 -1
  6. package/dist/cjs/babel-config.js +1 -1
  7. package/dist/cjs/detect.js +53 -2
  8. package/dist/cjs/extract.js +7 -2
  9. package/dist/cjs/frameworks/angular/Header.stories.ts +8 -3
  10. package/dist/cjs/frameworks/angular/Page.stories.ts +12 -10
  11. package/dist/cjs/frameworks/angular/header.component.ts +30 -19
  12. package/dist/cjs/frameworks/angular/page.component.ts +13 -27
  13. package/dist/cjs/frameworks/common/header.css +6 -0
  14. package/dist/cjs/frameworks/html/js/Header.js +2 -0
  15. package/dist/cjs/frameworks/html/js/Header.stories.js +8 -1
  16. package/dist/cjs/frameworks/html/js/Page.js +29 -2
  17. package/dist/cjs/frameworks/html/js/Page.stories.js +12 -13
  18. package/dist/cjs/frameworks/html/ts/Header.stories.ts +5 -0
  19. package/dist/cjs/frameworks/html/ts/Header.ts +3 -1
  20. package/dist/cjs/frameworks/html/ts/Page.stories.ts +12 -14
  21. package/dist/cjs/frameworks/html/ts/Page.ts +32 -8
  22. package/dist/cjs/frameworks/preact/Header.jsx +6 -1
  23. package/dist/cjs/frameworks/preact/Header.stories.jsx +7 -1
  24. package/dist/cjs/frameworks/preact/Page.jsx +62 -63
  25. package/dist/cjs/frameworks/preact/Page.stories.jsx +12 -9
  26. package/dist/cjs/frameworks/react/js/Header.jsx +6 -1
  27. package/dist/cjs/frameworks/react/js/Header.stories.jsx +7 -1
  28. package/dist/cjs/frameworks/react/js/Page.jsx +61 -63
  29. package/dist/cjs/frameworks/react/js/Page.stories.jsx +12 -9
  30. package/dist/cjs/frameworks/react/ts/Header.stories.tsx +7 -1
  31. package/dist/cjs/frameworks/react/ts/Header.tsx +11 -2
  32. package/dist/cjs/frameworks/react/ts/Page.stories.tsx +12 -9
  33. package/dist/cjs/frameworks/react/ts/Page.tsx +66 -60
  34. package/dist/cjs/frameworks/svelte/Button.stories.js +51 -0
  35. package/dist/cjs/frameworks/svelte/Header.stories.js +35 -0
  36. package/dist/cjs/frameworks/svelte/Header.svelte +3 -0
  37. package/dist/cjs/frameworks/svelte/Page.stories.js +27 -0
  38. package/dist/cjs/frameworks/svelte/Page.svelte +2 -16
  39. package/dist/cjs/frameworks/vue/Header.stories.js +7 -1
  40. package/dist/cjs/frameworks/vue/Header.vue +1 -0
  41. package/dist/cjs/frameworks/vue/Page.stories.js +15 -13
  42. package/dist/cjs/frameworks/vue/Page.vue +7 -7
  43. package/dist/cjs/frameworks/vue3/Header.stories.js +7 -1
  44. package/dist/cjs/frameworks/vue3/Header.vue +1 -0
  45. package/dist/cjs/frameworks/vue3/Page.stories.js +16 -17
  46. package/dist/cjs/frameworks/vue3/Page.vue +18 -8
  47. package/dist/cjs/frameworks/web-components/js/Page.js +2 -2
  48. package/dist/cjs/frameworks/web-components/ts/Page.ts +2 -2
  49. package/dist/cjs/generators/ANGULAR/angular-helpers.js +5 -5
  50. package/dist/cjs/generators/ANGULAR/index.js +2 -2
  51. package/dist/cjs/generators/ANGULAR/template-csf/.storybook/tsconfig.json +17 -5
  52. package/dist/cjs/generators/AURELIA/index.js +1 -1
  53. package/dist/cjs/generators/AURELIA/template-csf/.storybook/tsconfig.json +16 -5
  54. package/dist/cjs/generators/EMBER/index.js +1 -1
  55. package/dist/cjs/generators/HTML/index.js +1 -1
  56. package/dist/cjs/generators/METEOR/index.js +1 -1
  57. package/dist/cjs/generators/MITHRIL/index.js +1 -1
  58. package/dist/cjs/generators/PREACT/index.js +1 -1
  59. package/dist/cjs/generators/RAX/index.js +1 -1
  60. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/addons.js +3 -3
  61. package/dist/cjs/generators/REACT_NATIVE/template-csf/storybook/rn-addons.js +2 -2
  62. package/dist/cjs/generators/REACT_SCRIPTS/index.js +9 -1
  63. package/dist/cjs/generators/RIOT/index.js +1 -1
  64. package/dist/cjs/generators/SERVER/index.js +1 -1
  65. package/dist/cjs/generators/SFC_VUE/index.js +1 -1
  66. package/dist/cjs/generators/SVELTE/index.js +0 -1
  67. package/dist/cjs/generators/VUE/index.js +1 -1
  68. package/dist/cjs/generators/VUE3/index.js +1 -1
  69. package/dist/cjs/generators/WEBPACK_REACT/index.js +1 -1
  70. package/dist/cjs/generators/baseGenerator.js +38 -4
  71. package/dist/cjs/generators/configure.js +3 -1
  72. package/dist/cjs/helpers.js +9 -8
  73. package/dist/cjs/initiate.js +27 -24
  74. package/dist/cjs/js-package-manager/JsPackageManager.js +2 -2
  75. package/dist/cjs/project_types.js +2 -1
  76. package/dist/cjs/repro-generators/configs.js +51 -8
  77. package/dist/cjs/repro-generators/scripts.js +46 -14
  78. package/dist/cjs/repro.js +3 -2
  79. package/dist/cjs/typings.d.ts +3 -0
  80. package/dist/cjs/upgrade.js +4 -2
  81. package/dist/cjs/versions.js +66 -0
  82. package/dist/cjs/window.d.js +5 -1
  83. package/dist/esm/add.js +3 -3
  84. package/dist/esm/automigrate/fixes/builder-vite.js +122 -0
  85. package/dist/esm/automigrate/fixes/index.js +3 -1
  86. package/dist/esm/automigrate/types.js +5 -1
  87. package/dist/esm/babel-config.js +1 -1
  88. package/dist/esm/detect.js +53 -2
  89. package/dist/esm/extract.js +7 -2
  90. package/dist/esm/frameworks/angular/Header.stories.ts +8 -3
  91. package/dist/esm/frameworks/angular/Page.stories.ts +12 -10
  92. package/dist/esm/frameworks/angular/header.component.ts +30 -19
  93. package/dist/esm/frameworks/angular/page.component.ts +13 -27
  94. package/dist/esm/frameworks/common/header.css +6 -0
  95. package/dist/esm/frameworks/html/js/Header.js +2 -0
  96. package/dist/esm/frameworks/html/js/Header.stories.js +8 -1
  97. package/dist/esm/frameworks/html/js/Page.js +29 -2
  98. package/dist/esm/frameworks/html/js/Page.stories.js +12 -13
  99. package/dist/esm/frameworks/html/ts/Header.stories.ts +5 -0
  100. package/dist/esm/frameworks/html/ts/Header.ts +3 -1
  101. package/dist/esm/frameworks/html/ts/Page.stories.ts +12 -14
  102. package/dist/esm/frameworks/html/ts/Page.ts +32 -8
  103. package/dist/esm/frameworks/preact/Header.jsx +6 -1
  104. package/dist/esm/frameworks/preact/Header.stories.jsx +7 -1
  105. package/dist/esm/frameworks/preact/Page.jsx +62 -63
  106. package/dist/esm/frameworks/preact/Page.stories.jsx +12 -9
  107. package/dist/esm/frameworks/react/js/Header.jsx +6 -1
  108. package/dist/esm/frameworks/react/js/Header.stories.jsx +7 -1
  109. package/dist/esm/frameworks/react/js/Page.jsx +61 -63
  110. package/dist/esm/frameworks/react/js/Page.stories.jsx +12 -9
  111. package/dist/esm/frameworks/react/ts/Header.stories.tsx +7 -1
  112. package/dist/esm/frameworks/react/ts/Header.tsx +11 -2
  113. package/dist/esm/frameworks/react/ts/Page.stories.tsx +12 -9
  114. package/dist/esm/frameworks/react/ts/Page.tsx +66 -60
  115. package/dist/esm/frameworks/svelte/Button.stories.js +51 -0
  116. package/dist/esm/frameworks/svelte/Header.stories.js +35 -0
  117. package/dist/esm/frameworks/svelte/Header.svelte +3 -0
  118. package/dist/esm/frameworks/svelte/Page.stories.js +27 -0
  119. package/dist/esm/frameworks/svelte/Page.svelte +2 -16
  120. package/dist/esm/frameworks/vue/Header.stories.js +7 -1
  121. package/dist/esm/frameworks/vue/Header.vue +1 -0
  122. package/dist/esm/frameworks/vue/Page.stories.js +15 -13
  123. package/dist/esm/frameworks/vue/Page.vue +7 -7
  124. package/dist/esm/frameworks/vue3/Header.stories.js +7 -1
  125. package/dist/esm/frameworks/vue3/Header.vue +1 -0
  126. package/dist/esm/frameworks/vue3/Page.stories.js +16 -17
  127. package/dist/esm/frameworks/vue3/Page.vue +18 -8
  128. package/dist/esm/frameworks/web-components/js/Page.js +2 -2
  129. package/dist/esm/frameworks/web-components/ts/Page.ts +2 -2
  130. package/dist/esm/generators/ANGULAR/angular-helpers.js +5 -5
  131. package/dist/esm/generators/ANGULAR/index.js +2 -2
  132. package/dist/esm/generators/ANGULAR/template-csf/.storybook/tsconfig.json +17 -5
  133. package/dist/esm/generators/AURELIA/index.js +1 -1
  134. package/dist/esm/generators/AURELIA/template-csf/.storybook/tsconfig.json +16 -5
  135. package/dist/esm/generators/EMBER/index.js +1 -1
  136. package/dist/esm/generators/HTML/index.js +1 -1
  137. package/dist/esm/generators/METEOR/index.js +1 -1
  138. package/dist/esm/generators/MITHRIL/index.js +1 -1
  139. package/dist/esm/generators/PREACT/index.js +1 -1
  140. package/dist/esm/generators/RAX/index.js +1 -1
  141. package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/addons.js +3 -3
  142. package/dist/esm/generators/REACT_NATIVE/template-csf/storybook/rn-addons.js +2 -2
  143. package/dist/esm/generators/REACT_SCRIPTS/index.js +9 -1
  144. package/dist/esm/generators/RIOT/index.js +1 -1
  145. package/dist/esm/generators/SERVER/index.js +1 -1
  146. package/dist/esm/generators/SFC_VUE/index.js +1 -1
  147. package/dist/esm/generators/SVELTE/index.js +0 -1
  148. package/dist/esm/generators/VUE/index.js +1 -1
  149. package/dist/esm/generators/VUE3/index.js +1 -1
  150. package/dist/esm/generators/WEBPACK_REACT/index.js +1 -1
  151. package/dist/esm/generators/baseGenerator.js +38 -4
  152. package/dist/esm/generators/configure.js +3 -1
  153. package/dist/esm/helpers.js +9 -8
  154. package/dist/esm/initiate.js +27 -24
  155. package/dist/esm/js-package-manager/JsPackageManager.js +2 -2
  156. package/dist/esm/project_types.js +2 -1
  157. package/dist/esm/repro-generators/configs.js +51 -8
  158. package/dist/esm/repro-generators/scripts.js +46 -14
  159. package/dist/esm/repro.js +3 -2
  160. package/dist/esm/typings.d.ts +3 -0
  161. package/dist/esm/upgrade.js +4 -2
  162. package/dist/esm/versions.js +66 -0
  163. package/dist/esm/window.d.js +5 -1
  164. package/dist/modern/add.js +3 -3
  165. package/dist/modern/automigrate/fixes/builder-vite.js +122 -0
  166. package/dist/modern/automigrate/fixes/index.js +3 -1
  167. package/dist/modern/automigrate/types.js +5 -1
  168. package/dist/modern/babel-config.js +1 -1
  169. package/dist/modern/detect.js +53 -2
  170. package/dist/modern/extract.js +7 -2
  171. package/dist/modern/frameworks/common/header.css +6 -0
  172. package/dist/modern/frameworks/html/js/Header.js +2 -0
  173. package/dist/modern/frameworks/html/js/Header.stories.js +8 -1
  174. package/dist/modern/frameworks/html/js/Page.js +29 -2
  175. package/dist/modern/frameworks/html/js/Page.stories.js +12 -13
  176. package/dist/modern/frameworks/preact/Header.jsx +6 -1
  177. package/dist/modern/frameworks/preact/Header.stories.jsx +7 -1
  178. package/dist/modern/frameworks/preact/Page.jsx +62 -63
  179. package/dist/modern/frameworks/preact/Page.stories.jsx +12 -9
  180. package/dist/modern/frameworks/react/js/Header.jsx +6 -1
  181. package/dist/modern/frameworks/react/js/Header.stories.jsx +7 -1
  182. package/dist/modern/frameworks/react/js/Page.jsx +61 -63
  183. package/dist/modern/frameworks/react/js/Page.stories.jsx +12 -9
  184. package/dist/modern/frameworks/svelte/Button.stories.js +51 -0
  185. package/dist/modern/frameworks/svelte/Header.stories.js +35 -0
  186. package/dist/modern/frameworks/svelte/Header.svelte +3 -0
  187. package/dist/modern/frameworks/svelte/Page.stories.js +27 -0
  188. package/dist/modern/frameworks/svelte/Page.svelte +2 -16
  189. package/dist/modern/frameworks/vue/Header.stories.js +7 -1
  190. package/dist/modern/frameworks/vue/Header.vue +1 -0
  191. package/dist/modern/frameworks/vue/Page.stories.js +15 -13
  192. package/dist/modern/frameworks/vue/Page.vue +7 -7
  193. package/dist/modern/frameworks/vue3/Header.stories.js +7 -1
  194. package/dist/modern/frameworks/vue3/Header.vue +1 -0
  195. package/dist/modern/frameworks/vue3/Page.stories.js +16 -17
  196. package/dist/modern/frameworks/vue3/Page.vue +18 -8
  197. package/dist/modern/frameworks/web-components/js/Page.js +2 -2
  198. package/dist/modern/generators/ANGULAR/angular-helpers.js +5 -5
  199. package/dist/modern/generators/ANGULAR/index.js +2 -2
  200. package/dist/modern/generators/ANGULAR/template-csf/.storybook/tsconfig.json +17 -5
  201. package/dist/modern/generators/AURELIA/index.js +1 -1
  202. package/dist/modern/generators/AURELIA/template-csf/.storybook/tsconfig.json +16 -5
  203. package/dist/modern/generators/EMBER/index.js +1 -1
  204. package/dist/modern/generators/HTML/index.js +1 -1
  205. package/dist/modern/generators/METEOR/index.js +1 -1
  206. package/dist/modern/generators/MITHRIL/index.js +1 -1
  207. package/dist/modern/generators/PREACT/index.js +1 -1
  208. package/dist/modern/generators/RAX/index.js +1 -1
  209. package/dist/modern/generators/REACT_NATIVE/template-csf/storybook/addons.js +3 -3
  210. package/dist/modern/generators/REACT_NATIVE/template-csf/storybook/rn-addons.js +2 -2
  211. package/dist/modern/generators/REACT_SCRIPTS/index.js +9 -1
  212. package/dist/modern/generators/RIOT/index.js +1 -1
  213. package/dist/modern/generators/SERVER/index.js +1 -1
  214. package/dist/modern/generators/SFC_VUE/index.js +1 -1
  215. package/dist/modern/generators/SVELTE/index.js +0 -1
  216. package/dist/modern/generators/VUE/index.js +1 -1
  217. package/dist/modern/generators/VUE3/index.js +1 -1
  218. package/dist/modern/generators/WEBPACK_REACT/index.js +1 -1
  219. package/dist/modern/generators/baseGenerator.js +38 -4
  220. package/dist/modern/generators/configure.js +3 -1
  221. package/dist/modern/helpers.js +9 -8
  222. package/dist/modern/initiate.js +27 -24
  223. package/dist/modern/js-package-manager/JsPackageManager.js +2 -2
  224. package/dist/modern/project_types.js +2 -1
  225. package/dist/modern/repro-generators/configs.js +51 -8
  226. package/dist/modern/repro-generators/scripts.js +46 -14
  227. package/dist/modern/repro.js +3 -2
  228. package/dist/modern/typings.d.ts +3 -0
  229. package/dist/modern/upgrade.js +4 -2
  230. package/dist/modern/versions.js +66 -0
  231. package/dist/modern/window.d.js +5 -1
  232. package/dist/ts3.4/automigrate/fixes/builder-vite.d.ts +19 -0
  233. package/dist/ts3.4/detect.d.ts +9 -2
  234. package/dist/ts3.4/project_types.d.ts +2 -1
  235. package/dist/ts3.4/repro-generators/configs.d.ts +8 -0
  236. package/dist/ts3.4/versions.d.ts +59 -0
  237. package/dist/ts3.9/automigrate/fixes/builder-vite.d.ts +19 -0
  238. package/dist/ts3.9/detect.d.ts +9 -2
  239. package/dist/ts3.9/project_types.d.ts +2 -1
  240. package/dist/ts3.9/repro-generators/configs.d.ts +9 -1
  241. package/dist/ts3.9/versions.d.ts +59 -0
  242. package/package.json +11 -12
  243. package/dist/cjs/frameworks/svelte/Button.stories.svelte +0 -57
  244. package/dist/cjs/frameworks/svelte/Header.stories.svelte +0 -32
  245. package/dist/cjs/frameworks/svelte/Page.stories.svelte +0 -32
  246. package/dist/cjs/typings.d.js +0 -1
  247. package/dist/cjs/versions.json +0 -59
  248. package/dist/esm/frameworks/svelte/Button.stories.svelte +0 -57
  249. package/dist/esm/frameworks/svelte/Header.stories.svelte +0 -32
  250. package/dist/esm/frameworks/svelte/Page.stories.svelte +0 -32
  251. package/dist/esm/typings.d.js +0 -1
  252. package/dist/esm/versions.json +0 -59
  253. package/dist/modern/frameworks/svelte/Button.stories.svelte +0 -57
  254. package/dist/modern/frameworks/svelte/Header.stories.svelte +0 -32
  255. package/dist/modern/frameworks/svelte/Page.stories.svelte +0 -32
  256. package/dist/modern/typings.d.js +0 -1
  257. package/dist/modern/versions.json +0 -59
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createAndInit = exports.exec = void 0;
6
+ exports.exec = exports.createAndInit = void 0;
7
7
 
8
8
  require("core-js/modules/es.promise.js");
9
9
 
@@ -15,6 +15,12 @@ var _shelljs = _interopRequireDefault(require("shelljs"));
15
15
 
16
16
  var _chalk = _interopRequireDefault(require("chalk"));
17
17
 
18
+ var _configs = require("./configs");
19
+
20
+ var _versions = _interopRequireDefault(require("../versions"));
21
+
22
+ const _excluded = ["name", "version"];
23
+
18
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
25
 
20
26
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
@@ -36,17 +42,18 @@ const exec = async (command, options = {}, {
36
42
  silent: true
37
43
  };
38
44
 
39
- _shelljs.default.exec(command, Object.assign({}, defaultOptions, options), (code, stdout, stderr) => {
45
+ const child = _shelljs.default.exec(command, Object.assign({}, defaultOptions, options, {
46
+ async: true
47
+ }));
48
+
49
+ child.stderr.pipe(process.stderr);
50
+ child.stdout.pipe(process.stdout);
51
+ child.on('exit', code => {
40
52
  if (code === 0) {
41
53
  resolve(undefined);
42
54
  } else {
43
55
  logger.error(_chalk.default.red(`An error occurred while executing: \`${command}\``));
44
- logger.error(`Command output was:${_chalk.default.yellow(`\n${stdout}\n${stderr}`)}`);
45
-
46
- if (errorMessage) {
47
- logger.error(errorMessage);
48
- }
49
-
56
+ logger.log(errorMessage);
50
57
  reject(new Error(`command exited with code: ${code}: `));
51
58
  }
52
59
  });
@@ -55,12 +62,34 @@ const exec = async (command, options = {}, {
55
62
 
56
63
  exports.exec = exec;
57
64
 
65
+ const addPackageResolutions = async ({
66
+ cwd
67
+ }) => {
68
+ logger.info(`🔢 Adding package resolutions:`);
69
+
70
+ const packageJsonPath = _path.default.join(cwd, 'package.json');
71
+
72
+ const packageJson = await (0, _fsExtra.readJSON)(packageJsonPath);
73
+ packageJson.resolutions = _versions.default;
74
+ await (0, _fsExtra.writeJSON)(packageJsonPath, packageJson, {
75
+ spaces: 2
76
+ });
77
+ };
78
+
58
79
  const installYarn2 = async ({
59
80
  cwd,
60
- pnp
81
+ pnp,
82
+ name
61
83
  }) => {
62
- const command = [`yarn set version berry`, `yarn config set enableGlobalCache true`, `yarn config set nodeLinker ${pnp ? 'pnp' : 'node-modules'}`].join(' && ');
63
- await exec(command, {
84
+ const command = [`yarn set version berry`, `yarn config set enableGlobalCache true`, `yarn config set nodeLinker ${pnp ? 'pnp' : 'node-modules'}`]; // FIXME: Some dependencies used by CRA aren't listed in its package.json
85
+ // Next line is a hack to remove as soon as CRA will have added these missing deps
86
+ // for details see https://github.com/facebook/create-react-app/pull/11751
87
+
88
+ if ([_configs.cra.name, _configs.cra_typescript.name].includes(name)) {
89
+ command.push(`yarn config set packageExtensions --json '{ "babel-preset-react-app@10.0.x": { "dependencies": { "@babel/plugin-proposal-private-property-in-object": "^7.16.0" } } }'`);
90
+ }
91
+
92
+ await exec(command.join(' && '), {
64
93
  cwd
65
94
  }, {
66
95
  startMessage: `🧶 Installing Yarn 2`,
@@ -182,7 +211,7 @@ const createAndInit = async (cwd, _ref, {
182
211
  name,
183
212
  version
184
213
  } = _ref,
185
- rest = _objectWithoutPropertiesLoose(_ref, ["name", "version"]);
214
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
186
215
 
187
216
  const options = Object.assign({
188
217
  name,
@@ -196,11 +225,14 @@ const createAndInit = async (cwd, _ref, {
196
225
  logger.log();
197
226
  logger.info(`🏃 Starting for ${name} ${version}`);
198
227
  logger.log();
199
- logger.debug(options);
200
- logger.log();
201
228
  await doTask(generate, Object.assign({}, options, {
202
229
  cwd: options.creationPath
203
230
  }));
231
+
232
+ if (e2e) {
233
+ await doTask(addPackageResolutions, options);
234
+ }
235
+
204
236
  await doTask(installYarn2, options);
205
237
  await doTask(configureYarn2ForE2E, options, e2e);
206
238
  await doTask(addTypescript, options, !!options.typescript);
package/dist/cjs/repro.js CHANGED
@@ -25,9 +25,9 @@ var _scripts = require("./repro-generators/scripts");
25
25
 
26
26
  var configs = _interopRequireWildcard(require("./repro-generators/configs"));
27
27
 
28
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
28
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
29
 
30
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
30
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
31
 
32
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
33
 
@@ -169,6 +169,7 @@ const repro = async ({
169
169
  }));
170
170
  } catch (error) {
171
171
  logger.error('🚨 Failed to create repro');
172
+ throw new Error(error);
172
173
  }
173
174
  };
174
175
 
@@ -0,0 +1,3 @@
1
+ declare module '@storybook/codemod';
2
+ declare module 'envinfo';
3
+ declare module '@storybook/semver';
@@ -3,7 +3,9 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.upgrade = exports.addExtraFlags = exports.checkVersionConsistency = exports.isCorePackage = exports.getStorybookVersion = void 0;
6
+ exports.upgrade = exports.isCorePackage = exports.getStorybookVersion = exports.checkVersionConsistency = exports.addExtraFlags = void 0;
7
+
8
+ require("core-js/modules/es.array.sort.js");
7
9
 
8
10
  require("core-js/modules/es.promise.js");
9
11
 
@@ -34,7 +36,7 @@ const getStorybookVersion = line => {
34
36
  };
35
37
 
36
38
  exports.getStorybookVersion = getStorybookVersion;
37
- const excludeList = ['@storybook/linter-config', '@storybook/design-system', '@storybook/ember-cli-storybook', '@storybook/semver', '@storybook/eslint-config-storybook', '@storybook/bench', '@storybook/addon-bench', '@storybook/addon-console', '@storybook/csf', '@storybook/storybook-deployer'];
39
+ const excludeList = ['@storybook/linter-config', '@storybook/design-system', '@storybook/ember-cli-storybook', '@storybook/semver', '@storybook/eslint-config-storybook', '@storybook/bench', '@storybook/addon-bench', '@storybook/addon-console', '@storybook/csf', '@storybook/storybook-deployer', '@storybook/addon-postcss', '@storybook/react-docgen-typescript-plugin', '@storybook/babel-plugin-require-context-hook', '@storybook/builder-vite', '@storybook/mdx1-csf', '@storybook/mdx2-csf'];
38
40
 
39
41
  const isCorePackage = pkg => pkg.startsWith('@storybook/') && !pkg.startsWith('@storybook/preset-') && !excludeList.includes(pkg);
40
42
 
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ // auto generated file, do not edit
8
+ var _default = {
9
+ '@storybook/addon-a11y': '6.5.0-beta.1',
10
+ '@storybook/addon-actions': '6.5.0-beta.1',
11
+ '@storybook/addon-backgrounds': '6.5.0-beta.1',
12
+ '@storybook/addon-controls': '6.5.0-beta.1',
13
+ '@storybook/addon-docs': '6.5.0-beta.1',
14
+ '@storybook/addon-essentials': '6.5.0-beta.1',
15
+ '@storybook/addon-interactions': '6.5.0-beta.1',
16
+ '@storybook/addon-jest': '6.5.0-beta.1',
17
+ '@storybook/addon-links': '6.5.0-beta.1',
18
+ '@storybook/addon-measure': '6.5.0-beta.1',
19
+ '@storybook/addon-outline': '6.5.0-beta.1',
20
+ '@storybook/addon-storyshots': '6.5.0-beta.1',
21
+ '@storybook/addon-storyshots-puppeteer': '6.5.0-beta.1',
22
+ '@storybook/addon-storysource': '6.5.0-beta.1',
23
+ '@storybook/addon-toolbars': '6.5.0-beta.1',
24
+ '@storybook/addon-viewport': '6.5.0-beta.1',
25
+ '@storybook/addons': '6.5.0-beta.1',
26
+ '@storybook/angular': '6.5.0-beta.1',
27
+ '@storybook/api': '6.5.0-beta.1',
28
+ '@storybook/builder-webpack4': '6.5.0-beta.1',
29
+ '@storybook/builder-webpack5': '6.5.0-beta.1',
30
+ '@storybook/channel-postmessage': '6.5.0-beta.1',
31
+ '@storybook/channel-websocket': '6.5.0-beta.1',
32
+ '@storybook/channels': '6.5.0-beta.1',
33
+ '@storybook/cli': '6.5.0-beta.1',
34
+ '@storybook/client-api': '6.5.0-beta.1',
35
+ '@storybook/client-logger': '6.5.0-beta.1',
36
+ '@storybook/codemod': '6.5.0-beta.1',
37
+ '@storybook/components': '6.5.0-beta.1',
38
+ '@storybook/core': '6.5.0-beta.1',
39
+ '@storybook/core-client': '6.5.0-beta.1',
40
+ '@storybook/core-common': '6.5.0-beta.1',
41
+ '@storybook/core-events': '6.5.0-beta.1',
42
+ '@storybook/core-server': '6.5.0-beta.1',
43
+ '@storybook/csf-tools': '6.5.0-beta.1',
44
+ '@storybook/docs-tools': '6.5.0-beta.1',
45
+ '@storybook/ember': '6.5.0-beta.1',
46
+ '@storybook/html': '6.5.0-beta.1',
47
+ '@storybook/instrumenter': '6.5.0-beta.1',
48
+ '@storybook/manager-webpack4': '6.5.0-beta.1',
49
+ '@storybook/manager-webpack5': '6.5.0-beta.1',
50
+ '@storybook/node-logger': '6.5.0-beta.1',
51
+ '@storybook/postinstall': '6.5.0-beta.1',
52
+ '@storybook/preact': '6.5.0-beta.1',
53
+ '@storybook/preview-web': '6.5.0-beta.1',
54
+ '@storybook/react': '6.5.0-beta.1',
55
+ '@storybook/router': '6.5.0-beta.1',
56
+ '@storybook/server': '6.5.0-beta.1',
57
+ '@storybook/source-loader': '6.5.0-beta.1',
58
+ '@storybook/store': '6.5.0-beta.1',
59
+ '@storybook/svelte': '6.5.0-beta.1',
60
+ '@storybook/theming': '6.5.0-beta.1',
61
+ '@storybook/ui': '6.5.0-beta.1',
62
+ '@storybook/vue': '6.5.0-beta.1',
63
+ '@storybook/vue3': '6.5.0-beta.1',
64
+ '@storybook/web-components': '6.5.0-beta.1'
65
+ };
66
+ exports.default = _default;
@@ -1 +1,5 @@
1
- "use strict";
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/dist/esm/add.js CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.add = add;
7
- exports.addStorybookAddonToFile = exports.getPackageArg = exports.getInstalledStorybookVersion = exports.getPackageName = exports.storybookAddonScope = void 0;
7
+ exports.storybookAddonScope = exports.getPackageName = exports.getPackageArg = exports.getInstalledStorybookVersion = exports.addStorybookAddonToFile = void 0;
8
8
 
9
9
  require("core-js/modules/es.promise.js");
10
10
 
@@ -77,14 +77,14 @@ const installAddon = (packageManager, addonName, isOfficialAddon) => {
77
77
 
78
78
  const addStorybookAddonToFile = (addonName, addonsFile, isOfficialAddon) => {
79
79
  const addonNameNoTag = addonName.split('@')[0];
80
- const alreadyRegistered = addonsFile.find(line => line.includes(`${addonNameNoTag}/register`));
80
+ const alreadyRegistered = addonsFile.find(line => line.includes(`${addonNameNoTag}/manager`));
81
81
 
82
82
  if (alreadyRegistered) {
83
83
  return addonsFile;
84
84
  }
85
85
 
86
86
  const latestImportIndex = addonsFile.reduce((prev, curr, currIndex) => curr.startsWith('import') && curr.includes('register') ? currIndex : prev, -1);
87
- return [...addonsFile.slice(0, latestImportIndex + 1), `import '${getPackageName(addonNameNoTag, isOfficialAddon)}/register';`, ...addonsFile.slice(latestImportIndex + 1)];
87
+ return [...addonsFile.slice(0, latestImportIndex + 1), `import '${getPackageName(addonNameNoTag, isOfficialAddon)}/manager';`, ...addonsFile.slice(latestImportIndex + 1)];
88
88
  };
89
89
 
90
90
  exports.addStorybookAddonToFile = addStorybookAddonToFile;
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.builderVite = void 0;
7
+
8
+ require("core-js/modules/es.promise.js");
9
+
10
+ var _chalk = _interopRequireDefault(require("chalk"));
11
+
12
+ var _tsDedent = _interopRequireDefault(require("ts-dedent"));
13
+
14
+ var _csfTools = require("@storybook/csf-tools");
15
+
16
+ var _getStorybookInfo = require("../helpers/getStorybookInfo");
17
+
18
+ var _jsPackageManager = require("../../js-package-manager");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ const logger = console;
23
+
24
+ /**
25
+ * Is the user using 'storybook-builder-vite' in their project?
26
+ *
27
+ * If so, prompt them to upgrade to '@storybook/builder-vite'.
28
+ *
29
+ * - Add '@storybook/builder-vite' as dev dependency
30
+ * - Remove 'storybook-builder-vite' dependency
31
+ * - Add core.builder = '@storybook/builder-vite' to main.js
32
+ */
33
+ const builderVite = {
34
+ id: 'builder-vite',
35
+
36
+ async check({
37
+ packageManager
38
+ }) {
39
+ const packageJson = packageManager.retrievePackageJson();
40
+ const {
41
+ mainConfig
42
+ } = (0, _getStorybookInfo.getStorybookInfo)(packageJson);
43
+
44
+ if (!mainConfig) {
45
+ logger.warn('Unable to find storybook main.js config');
46
+ return null;
47
+ }
48
+
49
+ const main = await (0, _csfTools.readConfig)(mainConfig);
50
+ const builder = main.getFieldValue(['core', 'builder']);
51
+ const builderName = typeof builder === 'string' ? builder : builder === null || builder === void 0 ? void 0 : builder.name;
52
+
53
+ if (builderName !== 'storybook-builder-vite') {
54
+ return null;
55
+ }
56
+
57
+ return {
58
+ builder,
59
+ main,
60
+ packageJson
61
+ };
62
+ },
63
+
64
+ prompt({
65
+ builder
66
+ }) {
67
+ const builderFormatted = _chalk.default.cyan(JSON.stringify(builder, null, 2));
68
+
69
+ return (0, _tsDedent.default)`
70
+ We've detected you're using the community vite builder: ${builderFormatted}
71
+
72
+ 'storybook-builder-vite' is deprecated and now located at ${_chalk.default.cyan('@storybook/builder-vite')}.
73
+
74
+ We can upgrade your project to use the new builder automatically.
75
+
76
+ More info: ${_chalk.default.yellow('https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#vite-builder-renamed')}
77
+ `;
78
+ },
79
+
80
+ async run({
81
+ result: {
82
+ builder,
83
+ main,
84
+ packageJson
85
+ },
86
+ packageManager,
87
+ dryRun
88
+ }) {
89
+ const {
90
+ dependencies = {},
91
+ devDependencies = {}
92
+ } = packageJson;
93
+ logger.info(`Removing existing 'storybook-builder-vite' dependency`);
94
+
95
+ if (!dryRun) {
96
+ delete dependencies['storybook-builder-vite'];
97
+ delete devDependencies['storybook-builder-vite'];
98
+ (0, _jsPackageManager.writePackageJson)(packageJson);
99
+ }
100
+
101
+ logger.info(`Adding '@storybook/builder-vite' as dev dependency`);
102
+
103
+ if (!dryRun) {
104
+ packageManager.addDependencies({
105
+ installAsDevDependencies: true
106
+ }, ['@storybook/builder-vite']);
107
+ }
108
+
109
+ logger.info(`Updating main.js to use vite builder`);
110
+
111
+ if (!dryRun) {
112
+ const updatedBuilder = typeof builder === 'string' ? '@storybook/builder-vite' : {
113
+ name: '@storybook/builder-vite',
114
+ options: builder.options
115
+ };
116
+ main.setFieldValue(['core', 'builder'], updatedBuilder);
117
+ await (0, _csfTools.writeConfig)(main);
118
+ }
119
+ }
120
+
121
+ };
122
+ exports.builderVite = builderVite;
@@ -18,6 +18,8 @@ var _mainjsFramework = require("./mainjsFramework");
18
18
 
19
19
  var _eslintPlugin = require("./eslint-plugin");
20
20
 
21
+ var _builderVite = require("./builder-vite");
22
+
21
23
  var _types = require("../types");
22
24
 
23
25
  Object.keys(_types).forEach(function (key) {
@@ -31,5 +33,5 @@ Object.keys(_types).forEach(function (key) {
31
33
  }
32
34
  });
33
35
  });
34
- const fixes = [_cra.cra5, _webpack.webpack5, _angular.angular12, _mainjsFramework.mainjsFramework, _eslintPlugin.eslintPlugin];
36
+ const fixes = [_cra.cra5, _webpack.webpack5, _angular.angular12, _mainjsFramework.mainjsFramework, _eslintPlugin.eslintPlugin, _builderVite.builderVite];
35
37
  exports.fixes = fixes;
@@ -1 +1,5 @@
1
- "use strict";
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.generateStorybookBabelConfig = exports.generateStorybookBabelConfigInCWD = void 0;
6
+ exports.generateStorybookBabelConfigInCWD = exports.generateStorybookBabelConfig = void 0;
7
7
 
8
8
  require("core-js/modules/es.promise.js");
9
9
 
@@ -3,15 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.detect = detect;
7
+ exports.detectBuilder = detectBuilder;
6
8
  exports.detectFrameworkPreset = detectFrameworkPreset;
7
- exports.isStorybookInstalled = isStorybookInstalled;
8
9
  exports.detectLanguage = detectLanguage;
9
- exports.detect = detect;
10
+ exports.isStorybookInstalled = isStorybookInstalled;
10
11
 
11
12
  var _path = _interopRequireDefault(require("path"));
12
13
 
13
14
  var _fs = _interopRequireDefault(require("fs"));
14
15
 
16
+ var _findUp = _interopRequireDefault(require("find-up"));
17
+
15
18
  var _project_types = require("./project_types");
16
19
 
17
20
  var _helpers = require("./helpers");
@@ -20,6 +23,8 @@ var _jsPackageManager = require("./js-package-manager");
20
23
 
21
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
25
 
26
+ const viteConfigFiles = ['vite.config.ts', 'vite.config.js', 'vite.config.mjs'];
27
+
23
28
  const hasDependency = (packageJson, name, matcher) => {
24
29
  var _packageJson$dependen, _packageJson$devDepen;
25
30
 
@@ -96,6 +101,52 @@ function detectFrameworkPreset(packageJson = {}) {
96
101
  });
97
102
  return result ? result.preset : _project_types.ProjectType.UNDETECTED;
98
103
  }
104
+ /**
105
+ * Attempts to detect which builder to use, by searching for a vite config file. If one is found, the vite builder
106
+ * will be used, otherwise, webpack4 is the default.
107
+ *
108
+ * @returns CoreBuilder
109
+ */
110
+
111
+
112
+ function detectBuilder(packageManager) {
113
+ const viteConfig = _findUp.default.sync(viteConfigFiles);
114
+
115
+ if (viteConfig) {
116
+ (0, _helpers.paddedLog)('Detected vite project, setting builder to @storybook/builder-vite');
117
+ return _project_types.CoreBuilder.Vite;
118
+ }
119
+
120
+ try {
121
+ let out = '';
122
+
123
+ if (packageManager.type === 'npm') {
124
+ try {
125
+ // npm <= v7
126
+ out = packageManager.executeCommand('npm', ['ls', 'webpack']);
127
+ } catch (e2) {
128
+ // npm >= v8
129
+ out = packageManager.executeCommand('npm', ['why', 'webpack']);
130
+ }
131
+ } else {
132
+ out = packageManager.executeCommand('yarn', ['why', 'webpack']);
133
+ } // if the user has BOTH webpack 4 and 5 installed already, we'll pick the safest options (4)
134
+
135
+
136
+ if (out.includes('webpack@4') || out.includes('webpack@npm:4')) {
137
+ return _project_types.CoreBuilder.Webpack5;
138
+ } // the user has webpack 4 installed, but not 5
139
+
140
+
141
+ if (out.includes('webpack@5') || out.includes('webpack@npm:5')) {
142
+ return _project_types.CoreBuilder.Webpack5;
143
+ }
144
+ } catch (err) {//
145
+ } // Fallback to webpack4
146
+
147
+
148
+ return _project_types.CoreBuilder.Webpack4;
149
+ }
99
150
 
100
151
  function isStorybookInstalled(dependencies, force) {
101
152
  if (!dependencies) {
@@ -24,8 +24,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
24
24
  const read = async url => {
25
25
  const browser = await usePuppeteerBrowser();
26
26
  const page = await browser.newPage();
27
- await page.goto(url);
28
- await page.waitForFunction('window.__STORYBOOK_STORY_STORE__ && window.__STORYBOOK_STORY_STORE__.extract && window.__STORYBOOK_STORY_STORE__.extract()');
27
+ await page.goto(url); // we don't know whether we are running against a new or old storybook
28
+ // FIXME: add tests for both
29
+
30
+ await page.waitForFunction(`
31
+ (window.__STORYBOOK_PREVIEW__ && window.__STORYBOOK_PREVIEW__.extract && window.__STORYBOOK_PREVIEW__.extract()) ||
32
+ (window.__STORYBOOK_STORY_STORE__ && window.__STORYBOOK_STORY_STORE__.extract && window.__STORYBOOK_STORY_STORE__.extract())
33
+ `);
29
34
  const data = JSON.parse(await page.evaluate(async () => {
30
35
  // eslint-disable-next-line no-undef
31
36
  return JSON.stringify(window.__STORYBOOK_STORY_STORE__.getStoriesJsonData(), null, 2);
@@ -1,7 +1,6 @@
1
1
  import { moduleMetadata } from '@storybook/angular';
2
2
  import { CommonModule } from '@angular/common';
3
- // also exported from '@storybook/angular' if you can deal with breaking changes in 6.1
4
- import { Story, Meta } from '@storybook/angular/types-6-0';
3
+ import type { Story, Meta } from '@storybook/angular';
5
4
 
6
5
  import Button from './button.component';
7
6
  import Header from './header.component';
@@ -15,6 +14,10 @@ export default {
15
14
  imports: [CommonModule],
16
15
  }),
17
16
  ],
17
+ parameters: {
18
+ // More on Story layout: https://storybook.js.org/docs/angular/configure/story-layout
19
+ layout: 'fullscreen',
20
+ },
18
21
  } as Meta;
19
22
 
20
23
  const Template: Story<Header> = (args: Header) => ({
@@ -23,7 +26,9 @@ const Template: Story<Header> = (args: Header) => ({
23
26
 
24
27
  export const LoggedIn = Template.bind({});
25
28
  LoggedIn.args = {
26
- user: {},
29
+ user: {
30
+ name: 'Jane Doe',
31
+ },
27
32
  };
28
33
 
29
34
  export const LoggedOut = Template.bind({});
@@ -1,15 +1,18 @@
1
1
  import { moduleMetadata, Story, Meta } from '@storybook/angular';
2
+ import { within, userEvent } from '@storybook/testing-library';
2
3
  import { CommonModule } from '@angular/common';
3
4
 
4
5
  import Button from './button.component';
5
6
  import Header from './header.component';
6
7
  import Page from './page.component';
7
8
 
8
- import * as HeaderStories from './Header.stories';
9
-
10
9
  export default {
11
10
  title: 'Example/Page',
12
11
  component: Page,
12
+ parameters: {
13
+ // More on Story layout: https://storybook.js.org/docs/angular/configure/story-layout
14
+ layout: 'fullscreen',
15
+ },
13
16
  decorators: [
14
17
  moduleMetadata({
15
18
  declarations: [Button, Header],
@@ -22,13 +25,12 @@ const Template: Story<Page> = (args: Page) => ({
22
25
  props: args,
23
26
  });
24
27
 
25
- export const LoggedIn = Template.bind({});
26
- LoggedIn.args = {
27
- // More on composing args: https://storybook.js.org/docs/angular/writing-stories/args#args-composition
28
- ...HeaderStories.LoggedIn.args,
29
- };
30
-
31
28
  export const LoggedOut = Template.bind({});
32
- LoggedOut.args = {
33
- ...HeaderStories.LoggedOut.args,
29
+
30
+ // More on interaction testing: https://storybook.js.org/docs/angular/writing-tests/interaction-testing
31
+ export const LoggedIn = Template.bind({});
32
+ LoggedIn.play = async ({ canvasElement }) => {
33
+ const canvas = within(canvasElement);
34
+ const loginButton = await canvas.getByRole('button', { name: /Log in/i });
35
+ await userEvent.click(loginButton);
34
36
  };
@@ -25,25 +25,36 @@ import { User } from './User';
25
25
  <h1>Acme</h1>
26
26
  </div>
27
27
  <div>
28
- <storybook-button
29
- *ngIf="user"
30
- size="small"
31
- (onClick)="onLogout.emit($event)"
32
- label="Log out"
33
- ></storybook-button>
34
- <storybook-button
35
- *ngIf="!user"
36
- size="small"
37
- (onClick)="onLogin.emit($event)"
38
- label="Log in"
39
- ></storybook-button>
40
- <storybook-button
41
- *ngIf="!user"
42
- primary
43
- size="small"
44
- (onClick)="onCreateAccount.emit($event)"
45
- label="Sign up"
46
- ></storybook-button>
28
+ <div *ngIf="user">
29
+ <span class="welcome">
30
+ Welcome, <b>{{ user.name }}</b
31
+ >!
32
+ </span>
33
+ <storybook-button
34
+ *ngIf="user"
35
+ size="small"
36
+ (onClick)="onLogout.emit($event)"
37
+ label="Log out"
38
+ ></storybook-button>
39
+ </div>
40
+ <div *ngIf="!user">
41
+ <storybook-button
42
+ *ngIf="!user"
43
+ size="small"
44
+ class="margin-left"
45
+ (onClick)="onLogin.emit($event)"
46
+ label="Log in"
47
+ ></storybook-button>
48
+ <storybook-button
49
+ *ngIf="!user"
50
+ primary
51
+ size="small"
52
+ primary="true"
53
+ class="margin-left"
54
+ (onClick)="onCreateAccount.emit($event)"
55
+ label="Sign up"
56
+ ></storybook-button>
57
+ </div>
47
58
  </div>
48
59
  </div>
49
60
  </header>`,