@storybook/cli 7.0.0-alpha.28 → 7.0.0-alpha.30

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 (119) hide show
  1. package/dist/cjs/automigrate/fixes/eslint-plugin.js +1 -2
  2. package/dist/cjs/automigrate/fixes/mainjsFramework.js +2 -1
  3. package/dist/cjs/automigrate/fixes/new-frameworks.js +3 -3
  4. package/dist/cjs/generators/PREACT/index.js +1 -3
  5. package/dist/cjs/generators/baseGenerator.js +2 -2
  6. package/dist/cjs/helpers.js +13 -15
  7. package/dist/cjs/versions.js +79 -79
  8. package/dist/esm/automigrate/fixes/eslint-plugin.js +1 -2
  9. package/dist/esm/automigrate/fixes/mainjsFramework.js +2 -1
  10. package/dist/esm/automigrate/fixes/new-frameworks.js +3 -3
  11. package/dist/esm/generators/PREACT/index.js +1 -3
  12. package/dist/esm/generators/baseGenerator.js +2 -2
  13. package/dist/esm/helpers.js +13 -14
  14. package/dist/esm/versions.js +79 -79
  15. package/dist/types/helpers.d.ts +1 -1
  16. package/package.json +10 -9
  17. package/rendererAssets/.eslintrc.json +11 -0
  18. package/rendererAssets/angular/Button.stories.ts +43 -0
  19. package/rendererAssets/angular/Header.stories.ts +35 -0
  20. package/rendererAssets/angular/Page.stories.ts +36 -0
  21. package/rendererAssets/angular/User.ts +2 -0
  22. package/rendererAssets/angular/button.component.ts +53 -0
  23. package/rendererAssets/angular/header.component.ts +75 -0
  24. package/rendererAssets/angular/page.component.ts +77 -0
  25. package/rendererAssets/aurelia/1-Button.stories.ts +49 -0
  26. package/rendererAssets/aurelia/button.ts +28 -0
  27. package/rendererAssets/common/Introduction.stories.mdx +211 -0
  28. package/rendererAssets/common/assets/code-brackets.svg +1 -0
  29. package/rendererAssets/common/assets/colors.svg +1 -0
  30. package/rendererAssets/common/assets/comments.svg +1 -0
  31. package/rendererAssets/common/assets/direction.svg +1 -0
  32. package/rendererAssets/common/assets/flow.svg +1 -0
  33. package/rendererAssets/common/assets/plugin.svg +1 -0
  34. package/rendererAssets/common/assets/repo.svg +1 -0
  35. package/rendererAssets/common/assets/stackalt.svg +1 -0
  36. package/rendererAssets/common/button.css +30 -0
  37. package/rendererAssets/common/header.css +32 -0
  38. package/rendererAssets/common/page.css +69 -0
  39. package/rendererAssets/ember/1-Button.stories.js +57 -0
  40. package/rendererAssets/html/js/Button.js +21 -0
  41. package/rendererAssets/html/js/Button.stories.js +48 -0
  42. package/rendererAssets/html/js/Header.js +47 -0
  43. package/rendererAssets/html/js/Header.stories.js +27 -0
  44. package/rendererAssets/html/js/Page.js +94 -0
  45. package/rendererAssets/html/js/Page.stories.js +23 -0
  46. package/rendererAssets/html/ts/Button.stories.ts +49 -0
  47. package/rendererAssets/html/ts/Button.ts +51 -0
  48. package/rendererAssets/html/ts/Header.stories.ts +26 -0
  49. package/rendererAssets/html/ts/Header.ts +54 -0
  50. package/rendererAssets/html/ts/Page.stories.ts +24 -0
  51. package/rendererAssets/html/ts/Page.ts +98 -0
  52. package/rendererAssets/marionette/index.stories.js +20 -0
  53. package/rendererAssets/marko/1-Button.stories.js +24 -0
  54. package/rendererAssets/marko/Button.marko +13 -0
  55. package/rendererAssets/mithril/Button.js +22 -0
  56. package/rendererAssets/mithril/Button.stories.js +43 -0
  57. package/rendererAssets/mithril/Header.js +51 -0
  58. package/rendererAssets/mithril/Header.stories.js +20 -0
  59. package/rendererAssets/mithril/Page.js +70 -0
  60. package/rendererAssets/mithril/Page.stories.js +24 -0
  61. package/rendererAssets/preact/Button.jsx +51 -0
  62. package/rendererAssets/preact/Button.stories.jsx +41 -0
  63. package/rendererAssets/preact/Header.jsx +58 -0
  64. package/rendererAssets/preact/Header.stories.jsx +29 -0
  65. package/rendererAssets/preact/Page.jsx +71 -0
  66. package/rendererAssets/preact/Page.stories.jsx +26 -0
  67. package/rendererAssets/rax/Button.js +26 -0
  68. package/rendererAssets/rax/Button.stories.js +40 -0
  69. package/rendererAssets/rax/Header.js +44 -0
  70. package/rendererAssets/rax/Header.stories.js +17 -0
  71. package/rendererAssets/rax/Page.js +64 -0
  72. package/rendererAssets/rax/Page.stories.js +21 -0
  73. package/rendererAssets/react/js/Button.jsx +50 -0
  74. package/rendererAssets/react/js/Button.stories.jsx +40 -0
  75. package/rendererAssets/react/js/Header.jsx +57 -0
  76. package/rendererAssets/react/js/Header.stories.jsx +24 -0
  77. package/rendererAssets/react/js/Page.jsx +69 -0
  78. package/rendererAssets/react/js/Page.stories.jsx +25 -0
  79. package/rendererAssets/react/ts/Button.stories.tsx +41 -0
  80. package/rendererAssets/react/ts/Button.tsx +48 -0
  81. package/rendererAssets/react/ts/Header.stories.tsx +25 -0
  82. package/rendererAssets/react/ts/Header.tsx +56 -0
  83. package/rendererAssets/react/ts/Page.stories.tsx +26 -0
  84. package/rendererAssets/react/ts/Page.tsx +73 -0
  85. package/rendererAssets/riot/1-Button.stories.js +52 -0
  86. package/rendererAssets/riot/MyButton.tag +24 -0
  87. package/rendererAssets/server/button.stories.json +32 -0
  88. package/rendererAssets/server/header.stories.json +15 -0
  89. package/rendererAssets/server/page.stories.json +15 -0
  90. package/rendererAssets/svelte/Button.stories.js +51 -0
  91. package/rendererAssets/svelte/Button.svelte +42 -0
  92. package/rendererAssets/svelte/Header.stories.js +35 -0
  93. package/rendererAssets/svelte/Header.svelte +51 -0
  94. package/rendererAssets/svelte/Page.stories.js +27 -0
  95. package/rendererAssets/svelte/Page.svelte +63 -0
  96. package/rendererAssets/vue/Button.stories.js +46 -0
  97. package/rendererAssets/vue/Button.vue +54 -0
  98. package/rendererAssets/vue/Header.stories.js +27 -0
  99. package/rendererAssets/vue/Header.vue +60 -0
  100. package/rendererAssets/vue/Page.stories.js +27 -0
  101. package/rendererAssets/vue/Page.vue +88 -0
  102. package/rendererAssets/vue3/Button.stories.js +52 -0
  103. package/rendererAssets/vue3/Button.vue +52 -0
  104. package/rendererAssets/vue3/Header.stories.js +34 -0
  105. package/rendererAssets/vue3/Header.vue +50 -0
  106. package/rendererAssets/vue3/Page.stories.js +29 -0
  107. package/rendererAssets/vue3/Page.vue +88 -0
  108. package/rendererAssets/web-components/js/Button.js +21 -0
  109. package/rendererAssets/web-components/js/Button.stories.js +42 -0
  110. package/rendererAssets/web-components/js/Header.js +45 -0
  111. package/rendererAssets/web-components/js/Header.stories.js +15 -0
  112. package/rendererAssets/web-components/js/Page.js +61 -0
  113. package/rendererAssets/web-components/js/Page.stories.js +19 -0
  114. package/rendererAssets/web-components/ts/Button.stories.ts +43 -0
  115. package/rendererAssets/web-components/ts/Button.ts +43 -0
  116. package/rendererAssets/web-components/ts/Header.stories.ts +16 -0
  117. package/rendererAssets/web-components/ts/Header.ts +52 -0
  118. package/rendererAssets/web-components/ts/Page.stories.ts +20 -0
  119. package/rendererAssets/web-components/ts/Page.ts +68 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/cli",
3
- "version": "7.0.0-alpha.28",
3
+ "version": "7.0.0-alpha.30",
4
4
  "description": "Storybook's CLI - easiest method of adding storybook to your projects",
5
5
  "keywords": [
6
6
  "cli",
@@ -29,6 +29,7 @@
29
29
  "files": [
30
30
  "bin/**/*",
31
31
  "dist/**/*",
32
+ "rendererAssets/**/*",
32
33
  "README.md",
33
34
  "*.js",
34
35
  "*.d.ts"
@@ -41,13 +42,13 @@
41
42
  "dependencies": {
42
43
  "@babel/core": "^7.12.10",
43
44
  "@babel/preset-env": "^7.12.11",
44
- "@storybook/codemod": "7.0.0-alpha.28",
45
- "@storybook/core-common": "7.0.0-alpha.28",
46
- "@storybook/core-server": "7.0.0-alpha.28",
47
- "@storybook/csf-tools": "7.0.0-alpha.28",
48
- "@storybook/node-logger": "7.0.0-alpha.28",
45
+ "@storybook/codemod": "7.0.0-alpha.30",
46
+ "@storybook/core-common": "7.0.0-alpha.30",
47
+ "@storybook/core-server": "7.0.0-alpha.30",
48
+ "@storybook/csf-tools": "7.0.0-alpha.30",
49
+ "@storybook/node-logger": "7.0.0-alpha.30",
49
50
  "@storybook/semver": "^7.3.2",
50
- "@storybook/telemetry": "7.0.0-alpha.28",
51
+ "@storybook/telemetry": "7.0.0-alpha.30",
51
52
  "boxen": "^5.1.2",
52
53
  "chalk": "^4.1.0",
53
54
  "commander": "^6.2.1",
@@ -74,7 +75,7 @@
74
75
  "update-notifier": "^5.0.1"
75
76
  },
76
77
  "devDependencies": {
77
- "@storybook/client-api": "7.0.0-alpha.28",
78
+ "@storybook/client-api": "7.0.0-alpha.30",
78
79
  "@types/cross-spawn": "^6.0.2",
79
80
  "@types/degit": "^2.8.3",
80
81
  "@types/prompts": "^2.0.9",
@@ -89,5 +90,5 @@
89
90
  "publishConfig": {
90
91
  "access": "public"
91
92
  },
92
- "gitHead": "941b85ce04c2e7c4328edb3568c1dece36dfbcf3"
93
+ "gitHead": "aabf7b595cb13d8a86dca27ad3d6039205bd55d6"
93
94
  }
@@ -0,0 +1,11 @@
1
+ {
2
+ "rules": {
3
+ "no-undef": "off",
4
+ "@typescript-eslint/ban-types": "off",
5
+ "react/prop-types": "off",
6
+ "react/react-in-jsx-scope": "off",
7
+ "import/extensions": "off",
8
+ "import/no-unresolved": "off",
9
+ "import/no-extraneous-dependencies": "off"
10
+ }
11
+ }
@@ -0,0 +1,43 @@
1
+ import type { Meta, StoryFn } from '@storybook/angular';
2
+ import Button from './button.component';
3
+
4
+ // More on default export: https://storybook.js.org/docs/angular/writing-stories/introduction#default-export
5
+ export default {
6
+ title: 'Example/Button',
7
+ component: Button,
8
+ // More on argTypes: https://storybook.js.org/docs/angular/api/argtypes
9
+ argTypes: {
10
+ backgroundColor: { control: 'color' },
11
+ },
12
+ } as Meta;
13
+
14
+ // More on component templates: https://storybook.js.org/docs/angular/writing-stories/introduction#using-args
15
+ const Template: StoryFn<Button> = (args: Button) => {
16
+ return {
17
+ props: { backgroundColor: null, ...args },
18
+ };
19
+ };
20
+
21
+ export const Primary = Template.bind({});
22
+ // More on args: https://storybook.js.org/docs/angular/writing-stories/args
23
+ Primary.args = {
24
+ primary: true,
25
+ label: 'Button',
26
+ };
27
+
28
+ export const Secondary = Template.bind({});
29
+ Secondary.args = {
30
+ label: 'Button',
31
+ };
32
+
33
+ export const Large = Template.bind({});
34
+ Large.args = {
35
+ size: 'large',
36
+ label: 'Button',
37
+ };
38
+
39
+ export const Small = Template.bind({});
40
+ Small.args = {
41
+ size: 'small',
42
+ label: 'Button',
43
+ };
@@ -0,0 +1,35 @@
1
+ import { moduleMetadata } from '@storybook/angular';
2
+ import { CommonModule } from '@angular/common';
3
+ import type { Meta, StoryFn } from '@storybook/angular';
4
+
5
+ import Button from './button.component';
6
+ import Header from './header.component';
7
+
8
+ export default {
9
+ title: 'Example/Header',
10
+ component: Header,
11
+ decorators: [
12
+ moduleMetadata({
13
+ declarations: [Button],
14
+ imports: [CommonModule],
15
+ }),
16
+ ],
17
+ parameters: {
18
+ // More on Story layout: https://storybook.js.org/docs/angular/configure/story-layout
19
+ layout: 'fullscreen',
20
+ },
21
+ } as Meta;
22
+
23
+ const Template: StoryFn<Header> = (args: Header) => ({
24
+ props: args,
25
+ });
26
+
27
+ export const LoggedIn = Template.bind({});
28
+ LoggedIn.args = {
29
+ user: {
30
+ name: 'Jane Doe',
31
+ },
32
+ };
33
+
34
+ export const LoggedOut = Template.bind({});
35
+ LoggedOut.args = {};
@@ -0,0 +1,36 @@
1
+ import { moduleMetadata, StoryFn, Meta } from '@storybook/angular';
2
+ import { within, userEvent } from '@storybook/testing-library';
3
+ import { CommonModule } from '@angular/common';
4
+
5
+ import Button from './button.component';
6
+ import Header from './header.component';
7
+ import Page from './page.component';
8
+
9
+ export default {
10
+ title: 'Example/Page',
11
+ component: Page,
12
+ parameters: {
13
+ // More on StoryFn layout: https://storybook.js.org/docs/angular/configure/story-layout
14
+ layout: 'fullscreen',
15
+ },
16
+ decorators: [
17
+ moduleMetadata({
18
+ declarations: [Button, Header],
19
+ imports: [CommonModule],
20
+ }),
21
+ ],
22
+ } as Meta;
23
+
24
+ const Template: StoryFn<Page> = (args: Page) => ({
25
+ props: args,
26
+ });
27
+
28
+ export const LoggedOut = Template.bind({});
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);
36
+ };
@@ -0,0 +1,2 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
2
+ export interface User {}
@@ -0,0 +1,53 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+
3
+ @Component({
4
+ selector: 'storybook-button',
5
+ template: ` <button
6
+ type="button"
7
+ (click)="onClick.emit($event)"
8
+ [ngClass]="classes"
9
+ [ngStyle]="{ 'background-color': backgroundColor }"
10
+ >
11
+ {{ label }}
12
+ </button>`,
13
+ styleUrls: ['./button.css'],
14
+ })
15
+ export default class ButtonComponent {
16
+ /**
17
+ * Is this the principal call to action on the page?
18
+ */
19
+ @Input()
20
+ primary = false;
21
+
22
+ /**
23
+ * What background color to use
24
+ */
25
+ @Input()
26
+ backgroundColor?: string;
27
+
28
+ /**
29
+ * How large should the button be?
30
+ */
31
+ @Input()
32
+ size: 'small' | 'medium' | 'large' = 'medium';
33
+
34
+ /**
35
+ * Button contents
36
+ *
37
+ * @required
38
+ */
39
+ @Input()
40
+ label = 'Button';
41
+
42
+ /**
43
+ * Optional click handler
44
+ */
45
+ @Output()
46
+ onClick = new EventEmitter<Event>();
47
+
48
+ public get classes(): string[] {
49
+ const mode = this.primary ? 'storybook-button--primary' : 'storybook-button--secondary';
50
+
51
+ return ['storybook-button', `storybook-button--${this.size}`, mode];
52
+ }
53
+ }
@@ -0,0 +1,75 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { User } from './User';
3
+
4
+ @Component({
5
+ selector: 'storybook-header',
6
+ template: `<header>
7
+ <div class="wrapper">
8
+ <div>
9
+ <svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
10
+ <g fill="none" fillRule="evenodd">
11
+ <path
12
+ d="M10 0h12a10 10 0 0110 10v12a10 10 0 01-10 10H10A10 10 0 010 22V10A10 10 0 0110 0z"
13
+ fill="#FFF"
14
+ />
15
+ <path
16
+ d="M5.3 10.6l10.4 6v11.1l-10.4-6v-11zm11.4-6.2l9.7 5.5-9.7 5.6V4.4z"
17
+ fill="#555AB9"
18
+ />
19
+ <path
20
+ d="M27.2 10.6v11.2l-10.5 6V16.5l10.5-6zM15.7 4.4v11L6 10l9.7-5.5z"
21
+ fill="#91BAF8"
22
+ />
23
+ </g>
24
+ </svg>
25
+ <h1>Acme</h1>
26
+ </div>
27
+ <div>
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>
58
+ </div>
59
+ </div>
60
+ </header>`,
61
+ styleUrls: ['./header.css'],
62
+ })
63
+ export default class HeaderComponent {
64
+ @Input()
65
+ user: User | null = null;
66
+
67
+ @Output()
68
+ onLogin = new EventEmitter<Event>();
69
+
70
+ @Output()
71
+ onLogout = new EventEmitter<Event>();
72
+
73
+ @Output()
74
+ onCreateAccount = new EventEmitter<Event>();
75
+ }
@@ -0,0 +1,77 @@
1
+ import { Component } from '@angular/core';
2
+ import { User } from './User';
3
+
4
+ @Component({
5
+ selector: 'storybook-page',
6
+ template: `<article>
7
+ <storybook-header
8
+ [user]="user"
9
+ (onLogout)="doLogout()"
10
+ (onLogin)="doLogin()"
11
+ (onCreateAccount)="doCreateAccount()"
12
+ ></storybook-header>
13
+ <section>
14
+ <h2>Pages in Storybook</h2>
15
+ <p>
16
+ We recommend building UIs with a
17
+ <a href="https://componentdriven.org" target="_blank" rel="noopener noreferrer">
18
+ <strong>component-driven</strong>
19
+ </a>
20
+ process starting with atomic components and ending with pages.
21
+ </p>
22
+ <p>
23
+ Render pages with mock data. This makes it easy to build and review page states without
24
+ needing to navigate to them in your app. Here are some handy patterns for managing page data
25
+ in Storybook:
26
+ </p>
27
+ <ul>
28
+ <li>
29
+ Use a higher-level connected component. Storybook helps you compose such data from the
30
+ "args" of child component stories
31
+ </li>
32
+ <li>
33
+ Assemble data in the page component from your services. You can mock these services out
34
+ using Storybook.
35
+ </li>
36
+ </ul>
37
+ <p>
38
+ Get a guided tutorial on component-driven development at
39
+ <a href="https://storybook.js.org/tutorials/" target="_blank" rel="noopener noreferrer">
40
+ Storybook tutorials
41
+ </a>
42
+ . Read more in the
43
+ <a href="https://storybook.js.org/docs" target="_blank" rel="noopener noreferrer"> docs </a>
44
+ .
45
+ </p>
46
+ <div class="tip-wrapper">
47
+ <span class="tip">Tip</span> Adjust the width of the canvas with the
48
+ <svg width="10" height="10" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg">
49
+ <g fill="none" fillRule="evenodd">
50
+ <path
51
+ d="M1.5 5.2h4.8c.3 0 .5.2.5.4v5.1c-.1.2-.3.3-.4.3H1.4a.5.5 0 01-.5-.4V5.7c0-.3.2-.5.5-.5zm0-2.1h6.9c.3 0 .5.2.5.4v7a.5.5 0 01-1 0V4H1.5a.5.5 0 010-1zm0-2.1h9c.3 0 .5.2.5.4v9.1a.5.5 0 01-1 0V2H1.5a.5.5 0 010-1zm4.3 5.2H2V10h3.8V6.2z"
52
+ id="a"
53
+ fill="#999"
54
+ />
55
+ </g>
56
+ </svg>
57
+ Viewports addon in the toolbar
58
+ </div>
59
+ </section>
60
+ </article>`,
61
+ styleUrls: ['./page.css'],
62
+ })
63
+ export default class PageComponent {
64
+ user: User | null = null;
65
+
66
+ doLogout() {
67
+ this.user = null;
68
+ }
69
+
70
+ doLogin() {
71
+ this.user = { name: 'Jane Doe' };
72
+ }
73
+
74
+ doCreateAccount() {
75
+ this.user = { name: 'Jane Doe' };
76
+ }
77
+ }
@@ -0,0 +1,49 @@
1
+ import { action } from '@storybook/addon-actions';
2
+ import { linkTo } from '@storybook/addon-links';
3
+
4
+ import Button from './button';
5
+
6
+ export default {
7
+ title: 'Button',
8
+ component: Button,
9
+ argTypes: {
10
+ text: { control: 'text' },
11
+ },
12
+ };
13
+
14
+ const Template = (args) => ({
15
+ component: Button,
16
+ props: args,
17
+ });
18
+
19
+ export const Text = Template.bind({});
20
+ Text.args = {
21
+ text: 'Button',
22
+ onClick: action('onClick'),
23
+ };
24
+
25
+ export const Emoji = Template.bind({});
26
+ Emoji.args = {
27
+ text: '😀 😎 👍 💯',
28
+ };
29
+
30
+ export const TextWithAction = () => ({
31
+ component: Button,
32
+ props: {
33
+ text: 'Trigger Action',
34
+ onClick: () => action('This was clicked')(),
35
+ },
36
+ });
37
+
38
+ TextWithAction.storyName = 'With an action';
39
+ TextWithAction.parameters = { notes: 'My notes on a button with emojis' };
40
+
41
+ export const ButtonWithLinkToAnotherStory = () => ({
42
+ component: Button,
43
+ props: {
44
+ text: 'Go to Welcome Story',
45
+ onClick: linkTo('example-introduction--page'),
46
+ },
47
+ });
48
+
49
+ ButtonWithLinkToAnotherStory.storyName = 'button with link to another story';
@@ -0,0 +1,28 @@
1
+ import { customElement, bindable } from 'aurelia';
2
+
3
+ @customElement({
4
+ name: 'storybook-button-component',
5
+ template: `
6
+ <template>
7
+ <button click.delegate="onClick($event)">\${text}</button>
8
+ <style>
9
+ button {
10
+ border: 1px solid #eee;
11
+ border-radius: 3px;
12
+ background-color: #ffffff;
13
+ cursor: pointer;
14
+ font-size: 15px;
15
+ padding: 3px 10px;
16
+ margin: 10px;
17
+ }
18
+ </style>
19
+ </template>
20
+ `,
21
+ })
22
+ export default class Button {
23
+ @bindable()
24
+ text = '';
25
+
26
+ @bindable()
27
+ onClick: MouseEvent;
28
+ }
@@ -0,0 +1,211 @@
1
+ import { Meta } from '@storybook/addon-docs';
2
+ import Code from './assets/code-brackets.svg';
3
+ import Colors from './assets/colors.svg';
4
+ import Comments from './assets/comments.svg';
5
+ import Direction from './assets/direction.svg';
6
+ import Flow from './assets/flow.svg';
7
+ import Plugin from './assets/plugin.svg';
8
+ import Repo from './assets/repo.svg';
9
+ import StackAlt from './assets/stackalt.svg';
10
+
11
+ <Meta title="Example/Introduction" />
12
+
13
+ <style>
14
+ {`
15
+ .subheading {
16
+ --mediumdark: '#999999';
17
+ font-weight: 900;
18
+ font-size: 13px;
19
+ color: #999;
20
+ letter-spacing: 6px;
21
+ line-height: 24px;
22
+ text-transform: uppercase;
23
+ margin-bottom: 12px;
24
+ margin-top: 40px;
25
+ }
26
+
27
+ .link-list {
28
+ display: grid;
29
+ grid-template-columns: 1fr;
30
+ grid-template-rows: 1fr 1fr;
31
+ row-gap: 10px;
32
+ }
33
+
34
+ @media (min-width: 620px) {
35
+ .link-list {
36
+ row-gap: 20px;
37
+ column-gap: 20px;
38
+ grid-template-columns: 1fr 1fr;
39
+ }
40
+ }
41
+
42
+ @media all and (-ms-high-contrast:none) {
43
+ .link-list {
44
+ display: -ms-grid;
45
+ -ms-grid-columns: 1fr 1fr;
46
+ -ms-grid-rows: 1fr 1fr;
47
+ }
48
+ }
49
+
50
+ .link-item {
51
+ display: block;
52
+ padding: 20px 30px 20px 15px;
53
+ border: 1px solid #00000010;
54
+ border-radius: 5px;
55
+ transition: background 150ms ease-out, border 150ms ease-out, transform 150ms ease-out;
56
+ color: #333333;
57
+ display: flex;
58
+ align-items: flex-start;
59
+ }
60
+
61
+ .link-item:hover {
62
+ border-color: #1EA7FD50;
63
+ transform: translate3d(0, -3px, 0);
64
+ box-shadow: rgba(0, 0, 0, 0.08) 0 3px 10px 0;
65
+ }
66
+
67
+ .link-item:active {
68
+ border-color: #1EA7FD;
69
+ transform: translate3d(0, 0, 0);
70
+ }
71
+
72
+ .link-item strong {
73
+ font-weight: 700;
74
+ display: block;
75
+ margin-bottom: 2px;
76
+ }
77
+
78
+ .link-item img {
79
+ height: 40px;
80
+ width: 40px;
81
+ margin-right: 15px;
82
+ flex: none;
83
+ }
84
+
85
+ .link-item span {
86
+ font-size: 14px;
87
+ line-height: 20px;
88
+ }
89
+
90
+ .tip {
91
+ display: inline-block;
92
+ border-radius: 1em;
93
+ font-size: 11px;
94
+ line-height: 12px;
95
+ font-weight: 700;
96
+ background: #E7FDD8;
97
+ color: #66BF3C;
98
+ padding: 4px 12px;
99
+ margin-right: 10px;
100
+ vertical-align: top;
101
+ }
102
+
103
+ .tip-wrapper {
104
+ font-size: 13px;
105
+ line-height: 20px;
106
+ margin-top: 40px;
107
+ margin-bottom: 40px;
108
+ }
109
+
110
+ .tip-wrapper code {
111
+ font-size: 12px;
112
+ display: inline-block;
113
+ }
114
+ `}
115
+ </style>
116
+
117
+ # Welcome to Storybook
118
+
119
+ Storybook helps you build UI components in isolation from your app's business logic, data, and context.
120
+ That makes it easy to develop hard-to-reach states. Save these UI states as **stories** to revisit during development, testing, or QA.
121
+
122
+ Browse example stories now by navigating to them in the sidebar.
123
+ View their code in the `stories` directory to learn how they work.
124
+ We recommend building UIs with a [**component-driven**](https://componentdriven.org) process starting with atomic components and ending with pages.
125
+
126
+ <div className="subheading">Configure</div>
127
+
128
+ <div className="link-list">
129
+ <a
130
+ className="link-item"
131
+ href="https://storybook.js.org/docs/react/addons/addon-types"
132
+ target="_blank"
133
+ >
134
+ <img src={Plugin} alt="plugin" />
135
+ <span>
136
+ <strong>Presets for popular tools</strong>
137
+ Easy setup for TypeScript, SCSS and more.
138
+ </span>
139
+ </a>
140
+ <a
141
+ className="link-item"
142
+ href="https://storybook.js.org/docs/react/configure/webpack"
143
+ target="_blank"
144
+ >
145
+ <img src={StackAlt} alt="Build" />
146
+ <span>
147
+ <strong>Build configuration</strong>
148
+ How to customize webpack and Babel
149
+ </span>
150
+ </a>
151
+ <a
152
+ className="link-item"
153
+ href="https://storybook.js.org/docs/react/configure/styling-and-css"
154
+ target="_blank"
155
+ >
156
+ <img src={Colors} alt="colors" />
157
+ <span>
158
+ <strong>Styling</strong>
159
+ How to load and configure CSS libraries
160
+ </span>
161
+ </a>
162
+ <a
163
+ className="link-item"
164
+ href="https://storybook.js.org/docs/react/get-started/setup#configure-storybook-for-your-stack"
165
+ target="_blank"
166
+ >
167
+ <img src={Flow} alt="flow" />
168
+ <span>
169
+ <strong>Data</strong>
170
+ Providers and mocking for data libraries
171
+ </span>
172
+ </a>
173
+ </div>
174
+
175
+ <div className="subheading">Learn</div>
176
+
177
+ <div className="link-list">
178
+ <a className="link-item" href="https://storybook.js.org/docs" target="_blank">
179
+ <img src={Repo} alt="repo" />
180
+ <span>
181
+ <strong>Storybook documentation</strong>
182
+ Configure, customize, and extend
183
+ </span>
184
+ </a>
185
+ <a className="link-item" href="https://storybook.js.org/tutorials/" target="_blank">
186
+ <img src={Direction} alt="direction" />
187
+ <span>
188
+ <strong>In-depth guides</strong>
189
+ Best practices from leading teams
190
+ </span>
191
+ </a>
192
+ <a className="link-item" href="https://github.com/storybookjs/storybook" target="_blank">
193
+ <img src={Code} alt="code" />
194
+ <span>
195
+ <strong>GitHub project</strong>
196
+ View the source and add issues
197
+ </span>
198
+ </a>
199
+ <a className="link-item" href="https://discord.gg/storybook" target="_blank">
200
+ <img src={Comments} alt="comments" />
201
+ <span>
202
+ <strong>Discord chat</strong>
203
+ Chat with maintainers and the community
204
+ </span>
205
+ </a>
206
+ </div>
207
+
208
+ <div className="tip-wrapper">
209
+ <span className="tip">Tip</span>Edit the Markdown in{' '}
210
+ <code>stories/Introduction.stories.mdx</code>
211
+ </div>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" version="1.1" viewBox="0 0 48 48"><title>illustration/code-brackets</title><g id="illustration/code-brackets" fill="none" fill-rule="evenodd" stroke="none" stroke-width="1"><path id="Combined-Shape" fill="#87E6E5" d="M11.4139325,12 C11.7605938,12 12,12.5059743 12,13.3779712 L12,17.4951758 L6.43502246,23.3839989 C5.85499251,23.9978337 5.85499251,25.0021663 6.43502246,25.6160011 L12,31.5048242 L12,35.6220288 C12,36.4939606 11.7605228,37 11.4139325,37 C11.2725831,37 11.1134406,36.9158987 10.9453839,36.7379973 L0.435022463,25.6160011 C-0.145007488,25.0021663 -0.145007488,23.9978337 0.435022463,23.3839989 L10.9453839,12.2620027 C11.1134051,12.0841663 11.2725831,12 11.4139325,12 Z M36.5860675,12 C36.7274169,12 36.8865594,12.0841013 37.0546161,12.2620027 L47.5649775,23.3839989 C48.1450075,23.9978337 48.1450075,25.0021663 47.5649775,25.6160011 L37.0546161,36.7379973 C36.8865949,36.9158337 36.7274169,37 36.5860675,37 C36.2394062,37 36,36.4940257 36,35.6220288 L36,31.5048242 L41.5649775,25.6160011 C42.1450075,25.0021663 42.1450075,23.9978337 41.5649775,23.3839989 L36,17.4951758 L36,13.3779712 C36,12.5060394 36.2394772,12 36.5860675,12 Z"/><rect id="Rectangle-7-Copy-5" width="35.57" height="4" x="5.009" y="22.662" fill="#A0DB77" rx="2" transform="translate(22.793959, 24.662305) rotate(-75.000000) translate(-22.793959, -24.662305)"/></g></svg>