Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
@storybook/addon-info
Advanced tools
A Storybook addon to show additional information for your stories.
Storybook Info Addon will show additional information for your stories in Storybook. Useful when you want to display usage or other types of documentation alongside your story.
This addon works with Storybook for:
Install the following npm module:
npm i -D @storybook/addon-info
Then wrap your story with the withInfo
, which is a function that takes either
documentation text or an options object:
import { withInfo } from '@storybook/addon-info';
storiesOf('Component', module)
.add('simple info',
withInfo(`
description or documentation about my component, supports markdown
~~~js
<Button>Click Here</Button>
~~~
`)(() =>
<Component>Click the "?" mark at top-right to view the info.</Component>
)
)
withInfo
can also take an options object in case you want to configure how
the info panel looks on a per-story basis:
import { withInfo } from '@storybook/addon-info';
storiesOf('Component', module)
.add('simple info',
withInfo({
text: 'String or React Element with docs about my component', // Warning! This option's name will be likely renamed to "summary" in 3.3 release. Follow this PR #1501 for details
// other possible options see in Global options section below
})(() =>
<Component>Click the "?" mark at top-right to view the info.</Component>
)
)
It is possible to add infos by default to all components by using a global or story decorator. The drawback is you won't be able to display a distinct info message per story.
It is important to declare this decorator as the first decorator, otherwise it won't work well.
addDecorator((story, context) => withInfo('common info')(story)(context));
To configure default options for all usage of the info option, use setDefaults
in .storybook/config.js
:
// config.js
import { setDefaults } from '@storybook/addon-info';
// addon-info
setDefaults({
header: false, // Toggles display of header with component name and description
});
{
header: false, // Toggles display of header with component name and description
inline: true, // Displays info inline vs click button to view
source: true, // Displays the source of story Component
propTables: [/* Components used in story */], // displays Prop Tables with this components
propTablesExclude: [], // Exclude Components from being shown in Prop Tables section
styles: {}, // Overrides styles of addon
marksyConf: {}, // Overrides components used to display markdown. Warning! This option's name will be likely deprecated in favor to "components" with the same API in 3.3 release. Follow this PR #1501 for details
maxPropsIntoLine: 1, // Max props to display per line in source code
maxPropObjectKeys: 10, // Displays the first 10 characters of the prop name
maxPropArrayLength: 10, // Displays the first 10 items in the default prop array
maxPropStringLength: 100, // Displays the first 100 characters in the default prop string
}
There is also a deprecated API that is slated for removal in Storybook 4.0.
import { configure, setAddon } from '@storybook/react';
import infoAddon from '@storybook/addon-info';
setAddon(infoAddon);
configure(function () {
//...
}, module);
Then create your stories with the .addWithInfo
API.
import React from 'react';
import { storiesOf } from '@storybook/react';
import Component from './Component';
storiesOf('Component')
.addWithInfo(
'simple usage',
`This is the basic usage with the button with providing a label to show the text.`,
() => (
<Component>Click the "?" mark at top-right to view the info.</Component>
),
);
Have a look at this example stories to learn more about the
addWithInfo
API.
To customize your defaults:
// config.js
import infoAddon, { setDefaults } from '@storybook/addon-info';
// addon-info
setDefaults({
inline: true,
maxPropsIntoLine: 1,
maxPropObjectKeys: 10,
maxPropArrayLength: 10,
maxPropStringLength: 100,
});
setAddon(infoAddon);
React Docgen is included as part of the @storybook/react package through the use of babel-plugin-react-docgen
during babel compile time.
When rendering a story with a React component commented in this supported format, the Addon Info description will render the comments above the component declaration and the prop table will display the prop's comment in the description column.
import React from 'react';
import PropTypes from 'prop-types';
/** Button component description */
const DocgenButton = ({ disabled, label, style, onClick }) =>
<button disabled={disabled} style={style} onClick={onClick}>
{label}
</button>;
DocgenButton.defaultProps = {
disabled: false,
onClick: () => {},
style: {},
};
DocgenButton.propTypes = {
/** Boolean indicating whether the button should render as disabled */
disabled: PropTypes.bool,
/** button label. */
label: PropTypes.string.isRequired,
/** onClick handler */
onClick: PropTypes.func,
/** component styles */
style: PropTypes.shape,
};
export default DocgenButton;
Comments above flow types are also supported. Storybook Info Addon should now render all the correct types for your component if the PropTypes are in the same file as the React component.
Components lose their names on static build
Component names also get minified with other javascript code when building for production.
When creating components, set the displayName
static property to show the correct component name on static builds.
FAQs
A Storybook addon to show additional information for your stories.
The npm package @storybook/addon-info receives a total of 30,665 weekly downloads. As such, @storybook/addon-info popularity was classified as popular.
We found that @storybook/addon-info demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 18 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.