({})} />
-);
-
-export const SmallNotDeletable = () => (
-
-);
-
-export const Outline = () => ;
+Deleteable.args = defaultArgs;
diff --git a/packages/core-components/src/components/DismissableBanner/DismissableBanner.stories.tsx b/packages/core-components/src/components/DismissableBanner/DismissableBanner.stories.tsx
index 449d4a987b..ac341071bf 100644
--- a/packages/core-components/src/components/DismissableBanner/DismissableBanner.stories.tsx
+++ b/packages/core-components/src/components/DismissableBanner/DismissableBanner.stories.tsx
@@ -15,7 +15,7 @@
*/
import React from 'react';
-import { DismissableBanner } from './DismissableBanner';
+import { DismissableBanner, Props } from './DismissableBanner';
import Typography from '@material-ui/core/Typography';
import { WebStorage } from '@backstage/core-app-api';
import {
@@ -29,6 +29,12 @@ import { Link } from '../Link';
export default {
title: 'Feedback/DismissableBanner',
component: DismissableBanner,
+ argTypes: {
+ variant: {
+ options: ['info', 'error', 'warning'],
+ control: { type: 'select' },
+ },
+ },
};
let errorApi: ErrorApi;
@@ -39,47 +45,27 @@ const createWebStorage = (): StorageApi => {
};
const apis = [[storageApiRef, createWebStorage()] as const];
+const defaultArgs = {
+ message: 'This is a dismissable banner',
+ variant: 'info',
+ fixed: false,
+};
-export const Default = () => (
+export const Default = (args: Props) => (
-
+
);
-export const Error = () => (
-
-
-
-
-
-);
+Default.args = defaultArgs;
-export const EmojisIncluded = () => (
-
-
-
-
-
-);
-
-export const WithLink = () => (
+export const WithLink = (args: Props) => (
This is a dismissable banner with a link:{' '}
@@ -88,34 +74,10 @@ export const WithLink = () => (
}
- variant="info"
id="linked_dismissable"
/>
);
-export const Fixed = () => (
-
-
-
-
-
-);
-
-export const Warning = () => (
-
-
-
-
-
-);
+WithLink.args = defaultArgs;
diff --git a/packages/core-components/src/components/DismissableBanner/DismissableBanner.tsx b/packages/core-components/src/components/DismissableBanner/DismissableBanner.tsx
index 9ff7616c45..99113fcdb1 100644
--- a/packages/core-components/src/components/DismissableBanner/DismissableBanner.tsx
+++ b/packages/core-components/src/components/DismissableBanner/DismissableBanner.tsx
@@ -87,7 +87,7 @@ const useStyles = makeStyles(
{ name: 'BackstageDismissableBanner' },
);
-type Props = {
+export type Props = {
variant: 'info' | 'error' | 'warning';
message: ReactNode;
id: string;
diff --git a/packages/core-components/src/components/SimpleStepper/SimpleStepper.stories.tsx b/packages/core-components/src/components/SimpleStepper/SimpleStepper.stories.tsx
index aa6846bc8f..2f3f26f23e 100644
--- a/packages/core-components/src/components/SimpleStepper/SimpleStepper.stories.tsx
+++ b/packages/core-components/src/components/SimpleStepper/SimpleStepper.stories.tsx
@@ -16,7 +16,7 @@
import TextField from '@material-ui/core/TextField';
import React, { useState } from 'react';
-import { SimpleStepper } from './SimpleStepper';
+import { SimpleStepper, StepperProps } from './SimpleStepper';
import { SimpleStepperStep } from './SimpleStepperStep';
export default {
@@ -24,8 +24,13 @@ export default {
component: SimpleStepper,
};
-export const Default = () => (
-
+const defaultArgs = {
+ elevated: false,
+ activeStep: 0,
+};
+
+export const Default = (args: StepperProps) => (
+
This is the content for step 1
@@ -38,11 +43,13 @@ export const Default = () => (
);
-export const ConditionalButtons = () => {
+Default.args = defaultArgs;
+
+export const ConditionalButtons = (args: StepperProps) => {
const [required, setRequired] = useState(false);
return (
-
+
{
);
};
-export const CompletionStep = () => {
+ConditionalButtons.args = defaultArgs;
+
+export const CompletionStep = (args: StepperProps) => {
return (
-
+
This is the content for step 1
@@ -80,3 +89,5 @@ export const CompletionStep = () => {
);
};
+
+CompletionStep.args = defaultArgs;
diff --git a/packages/core-components/src/layout/Header/Header.stories.tsx b/packages/core-components/src/layout/Header/Header.stories.tsx
index 9fee6313e9..19871dfc75 100644
--- a/packages/core-components/src/layout/Header/Header.stories.tsx
+++ b/packages/core-components/src/layout/Header/Header.stories.tsx
@@ -21,6 +21,22 @@ import { Header } from './Header';
export default {
title: 'Layout/Header',
component: Header,
+ argTypes: {
+ type: {
+ options: [
+ 'home',
+ 'tool',
+ 'service',
+ 'website',
+ 'library',
+ 'app',
+ 'apis',
+ 'documentation',
+ 'other',
+ ],
+ control: { type: 'select' },
+ },
+ },
};
const labels = (
@@ -31,80 +47,21 @@ const labels = (
>
);
-export const Home = () => (
-
-
-
-);
+export const Default = (args: {
+ type: string;
+ title: string;
+ subtitle: string;
+}) => {
+ const { type } = args;
+ return (
+
+
+
+ );
+};
-export const HomeWithSubtitle = () => (
-
-);
-
-export const Apis = () => (
-
-
-
-);
-
-export const Tool = () => (
-
-
-
-);
-
-export const Service = () => (
-
-
-
-);
-
-export const Website = () => (
-
-
-
-);
-
-export const Library = () => (
-
-
-
-);
-
-export const App = () => (
-
-
-
-);
-
-export const Documentation = () => (
-
-
-
-);
-
-export const Other = () => (
-
-
-
-);
+Default.args = {
+ type: 'home',
+ title: 'This is a title',
+ subtitle: 'This is a subtitle',
+};
diff --git a/packages/core-components/src/layout/InfoCard/InfoCard.stories.tsx b/packages/core-components/src/layout/InfoCard/InfoCard.stories.tsx
index 8dd8272f5a..a6509caaaf 100644
--- a/packages/core-components/src/layout/InfoCard/InfoCard.stories.tsx
+++ b/packages/core-components/src/layout/InfoCard/InfoCard.stories.tsx
@@ -18,9 +18,7 @@ import Grid from '@material-ui/core/Grid';
import Typography from '@material-ui/core/Typography';
import React, { PropsWithChildren } from 'react';
import { MemoryRouter } from 'react-router';
-import { InfoCard } from './InfoCard';
-
-const linkInfo = { title: 'Go to XYZ Location', link: '#' };
+import { InfoCard, Props } from './InfoCard';
export default {
title: 'Layout/Information Card',
@@ -38,6 +36,11 @@ const text = (
);
+const defaultProps = {
+ title: 'Information Card',
+ subheader: 'Subheader',
+};
+
const Wrapper = ({ children }: PropsWithChildren<{}>) => (
@@ -48,24 +51,21 @@ const Wrapper = ({ children }: PropsWithChildren<{}>) => (
);
-export const Default = () => (
+export const Default = (args: Props) => (
- {text}
+ {text}
);
-export const Subhead = () => (
+Default.args = defaultProps;
+
+export const LinkInFooter = (args: Props) => (
-
- {text}
-
+ {text}
);
-export const LinkInFooter = () => (
-
-
- {text}
-
-
-);
+LinkInFooter.args = {
+ ...defaultProps,
+ deepLink: { title: 'Go to XYZ Location', link: '#' },
+};
diff --git a/packages/core-components/src/layout/InfoCard/InfoCard.tsx b/packages/core-components/src/layout/InfoCard/InfoCard.tsx
index 256d60cfa2..831c8f95d9 100644
--- a/packages/core-components/src/layout/InfoCard/InfoCard.tsx
+++ b/packages/core-components/src/layout/InfoCard/InfoCard.tsx
@@ -125,7 +125,7 @@ export type InfoCardVariants = 'flex' | 'fullHeight' | 'gridItem';
*
* `...`
*/
-type Props = {
+export type Props = {
title?: ReactNode;
subheader?: ReactNode;
divider?: boolean;
diff --git a/storybook/.storybook/main.js b/storybook/.storybook/main.js
index 8ed4949cf3..f493bd2de6 100644
--- a/storybook/.storybook/main.js
+++ b/storybook/.storybook/main.js
@@ -32,6 +32,7 @@ module.exports = ({ args }) => {
return {
stories,
addons: [
+ '@storybook/addon-controls',
'@storybook/addon-a11y',
'@storybook/addon-actions',
'@storybook/addon-links',
diff --git a/storybook/package.json b/storybook/package.json
index 9a9c7d4a8c..eafe73a991 100644
--- a/storybook/package.json
+++ b/storybook/package.json
@@ -9,14 +9,15 @@
},
"dependencies": {
"@sucrase/webpack-loader": "^2.0.0",
- "sucrase": "^3.21.0",
"react": "^17.0.2",
+ "react-dom": "^17.0.2",
"react-hot-loader": "^4.13.0",
- "react-dom": "^17.0.2"
+ "sucrase": "^3.21.0"
},
"devDependencies": {
"@storybook/addon-a11y": "^6.4.21",
"@storybook/addon-actions": "^6.4.21",
+ "@storybook/addon-controls": "^6.4.22",
"@storybook/addon-links": "^6.4.21",
"@storybook/addon-storysource": "^6.4.21",
"@storybook/addons": "^6.4.21",
@@ -24,9 +25,9 @@
"storybook-dark-mode": "^1.0.9"
},
"peerDependencies": {
- "@backstage/theme": "link:../packages/theme",
- "@backstage/test-utils": "link:../packages/test-utils",
"@backstage/core-app-api": "link:../packages/core-app-api",
- "@backstage/core-plugin-api": "link:../packages/core-plugin-api"
+ "@backstage/core-plugin-api": "link:../packages/core-plugin-api",
+ "@backstage/test-utils": "link:../packages/test-utils",
+ "@backstage/theme": "link:../packages/theme"
}
}
diff --git a/storybook/yarn.lock b/storybook/yarn.lock
index 4660d682bc..8c6380c291 100644
--- a/storybook/yarn.lock
+++ b/storybook/yarn.lock
@@ -1381,6 +1381,24 @@
util-deprecate "^1.0.2"
uuid-browser "^3.1.0"
+"@storybook/addon-controls@^6.4.22":
+ version "6.4.22"
+ resolved "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-6.4.22.tgz#42c7f426eb7ba6d335e8e14369d6d13401878665"
+ integrity sha512-f/M/W+7UTEUnr/L6scBMvksq+ZA8GTfh3bomE5FtWyOyaFppq9k8daKAvdYNlzXAOrUUsoZVJDgpb20Z2VBiSQ==
+ dependencies:
+ "@storybook/addons" "6.4.22"
+ "@storybook/api" "6.4.22"
+ "@storybook/client-logger" "6.4.22"
+ "@storybook/components" "6.4.22"
+ "@storybook/core-common" "6.4.22"
+ "@storybook/csf" "0.0.2--canary.87bc651.0"
+ "@storybook/node-logger" "6.4.22"
+ "@storybook/store" "6.4.22"
+ "@storybook/theming" "6.4.22"
+ core-js "^3.8.2"
+ lodash "^4.17.21"
+ ts-dedent "^2.0.0"
+
"@storybook/addon-links@^6.4.21":
version "6.4.22"
resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-6.4.22.tgz#c0ed9e9ef6505cf1562e1476bbc5064c82dadbe2"