storyExports.tsx 970 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import {Fragment} from 'react';
  2. import styled from '@emotion/styled';
  3. import {space} from 'sentry/styles/space';
  4. import type {StoryDescriptor} from './useStoriesLoader';
  5. export function StoryExports(props: {story: StoryDescriptor}) {
  6. const {default: DefaultExport, ...namedExports} = props.story.exports;
  7. return (
  8. <Fragment>
  9. {/* Render default export first */}
  10. {DefaultExport ? (
  11. <Story key="default">
  12. <DefaultExport />
  13. </Story>
  14. ) : null}
  15. {Object.entries(namedExports).map(([name, MaybeComponent]) => {
  16. if (typeof MaybeComponent === 'function') {
  17. return (
  18. <Story key={name}>
  19. <MaybeComponent />
  20. </Story>
  21. );
  22. }
  23. throw new Error(
  24. `Story exported an unsupported key ${name} with value: ${typeof MaybeComponent}`
  25. );
  26. })}
  27. </Fragment>
  28. );
  29. }
  30. const Story = styled('section')`
  31. padding-top: ${space(2)};
  32. `;