/
Stories.tsx
32 lines (27 loc) · 918 Bytes
/
Stories.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import React, { useContext, FunctionComponent } from 'react';
import { DocsContext } from './DocsContext';
import { DocsStory } from './DocsStory';
import { Heading } from './Heading';
import { DocsStoryProps } from './types';
interface StoriesProps {
title?: JSX.Element | string;
includePrimary?: boolean;
}
export const Stories: FunctionComponent<StoriesProps> = ({ title, includePrimary = false }) => {
const { componentStories } = useContext(DocsContext);
let stories: DocsStoryProps[] = componentStories();
stories = stories.filter((story) => !story.parameters?.docs?.disable);
if (!includePrimary) stories = stories.slice(1);
if (!stories || stories.length === 0) {
return null;
}
return (
<>
<Heading>{title}</Heading>
{stories.map((story) => story && <DocsStory key={story.id} {...story} expanded />)}
</>
);
};
Stories.defaultProps = {
title: 'Stories',
};